try: from unittest import mock except ImportError: import mock import pytest from io import BytesIO from lingua.extractors.zcml import ZCMLExtractor zcml_extractor = ZCMLExtractor() source = None def _options(**kw): options = mock.Mock() options.domain = None options.keywords = [] for (k, w) in kw.items(): setattr(options, k, w) return options @pytest.fixture def fake_source(request): patcher = mock.patch( "lingua.extractors.zcml._open", side_effect=lambda *a: BytesIO(source) ) patcher.start() request.addfinalizer(patcher.stop) @pytest.mark.usefixtures("fake_source") def test_empty_zcml(): global source source = b"""""" assert list(zcml_extractor("filename", _options())) == [] @pytest.mark.usefixtures("fake_source") def test_i18n_without_domain(): global source source = b"""\ """ assert list(zcml_extractor("filename", _options())) == [] @pytest.mark.usefixtures("fake_source") def test_i18n_with_domain(): global source source = b"""\ """ messages = list(zcml_extractor("filename", _options())) assert len(messages) == 1 assert messages[0].msgid == u"test title" @pytest.mark.usefixtures("fake_source") def test_multiple_messages(): global source source = b"""\ """ messages = list(zcml_extractor("filename", _options())) assert len(messages) == 2 assert messages[0].msgid == u"test title 1" assert messages[1].msgid == u"test title 2" @pytest.mark.usefixtures("fake_source") def test_domain_nesting(): global source source = b"""\ """ messages = list(zcml_extractor("filename", _options())) assert len(messages) == 1 assert messages[0].msgid == u"test title 1" @pytest.mark.usefixtures("fake_source") def test_abort_on_syntax_error(): global source source = b"""