def test_does_not_rebuild_secondary_domain_pot_files(self):
        fshelpers.create_structure(
            self.tempdir, {"foo/foo/__init__.py": '_("Foo")', "foo/foo/locales/bar.pot": fshelpers.asset("empty.pot")}
        )

        potfile = (self.tempdir, "foo/foo/locales/bar.pot")
        self.assertEquals({}, pohelpers.messages(*potfile))
        rebuild_package_potfiles(self.tempdir, self.tempdir, "foo")
        self.assertEquals({}, pohelpers.messages(*potfile))
    def test_path_comments_are_relative_in_potfile(self):
        fshelpers.create_structure(
            self.tempdir, {"foo/foo/__init__.py": '_("Foo")', "foo/foo/locales/foo.pot": fshelpers.asset("empty.pot")}
        )

        potfile = (self.tempdir, "foo/foo/locales/foo.pot")
        self.assertEquals({}, pohelpers.messages(*potfile))
        rebuild_package_potfiles(self.tempdir, self.tempdir, "foo")
        self.assertEquals({"Foo": ["./foo/foo/__init__.py:1"]}, pohelpers.message_references(*potfile))
def rebuild_primary_domain_group_potfiles(sources_directory):
    for package_name in os.listdir(sources_directory):
        package_dir = os.path.join(sources_directory, package_name)
        if os.path.isdir(package_dir):
            # assume primary domain is package name, since we have no
            # possibilities to customize the domain in this environment.
            primary_domain = package_name
            package_root = package_dir
            rebuild_package_potfiles(package_root, package_dir, primary_domain)
Example #4
0
def build_translations(package_dir,
                       package_root,
                       i18n_domain,
                       new_languages=None,
                       output=sys.stdout):
    with capture_streams(stdout=output or StringIO()):
        rebuild_inflator(package_dir, i18n_domain)
        rebuild_package_potfiles(package_root, package_dir, i18n_domain)
        sync_package_pofiles(package_dir, new_languages)
Example #5
0
def rebuild_primary_domain_group_potfiles(sources_directory):
    for package_name in os.listdir(sources_directory):
        package_dir = os.path.join(sources_directory, package_name)
        if os.path.isdir(package_dir):
            # assume primary domain is package name, since we have no
            # possibilities to customize the domain in this environment.
            primary_domain = package_name
            package_root = package_dir
            rebuild_package_potfiles(package_root, package_dir, primary_domain)
Example #6
0
    def test_does_not_rebuild_secondary_domain_pot_files(self):
        fshelpers.create_structure(
            self.tempdir, {
                'foo/foo/__init__.py': '_("Foo")',
                'foo/foo/locales/bar.pot': fshelpers.asset('empty.pot')
            })

        potfile = (self.tempdir, 'foo/foo/locales/bar.pot')
        self.assertEquals({}, pohelpers.messages(*potfile))
        rebuild_package_potfiles(self.tempdir, self.tempdir, 'foo')
        self.assertEquals({}, pohelpers.messages(*potfile))
 def test_i18ndude_SystemExit_is_handled(self):
     # This is quite a "stupid" test:
     # Rebuilding a domain without having any translations makes the internal
     # i18ndude command to perform a system exit.
     # This is really bad, since we are possibly building multiple pot-files
     # and are doing more stuff and should be in control of such things.
     fshelpers.create_structure(self.tempdir, {"foo/locales/foo.pot": fshelpers.asset("empty.pot")})
     try:
         with capture_streams(stderr=StringIO()):
             rebuild_package_potfiles(self.tempdir, self.tempdir, "foo")
     except SystemExit:
         assert False, "SystemExit leaked from i18ndude while rebuilding pot-files!"
Example #8
0
    def test_path_comments_are_relative_in_potfile(self):
        fshelpers.create_structure(
            self.tempdir, {
                'foo/foo/__init__.py': '_("Foo")',
                'foo/foo/locales/foo.pot': fshelpers.asset('empty.pot')
            })

        potfile = (self.tempdir, 'foo/foo/locales/foo.pot')
        self.assertEquals({}, pohelpers.messages(*potfile))
        rebuild_package_potfiles(self.tempdir, self.tempdir, 'foo')
        self.assertEquals({'Foo': ['./foo/foo/__init__.py:1']},
                          pohelpers.message_references(*potfile))
    def test_merges_content_pot_files(self):
        fshelpers.create_structure(
            self.tempdir,
            {
                "foo/foo/__init__.py": '_("Foo")',
                "foo/foo/locales/foo.pot": fshelpers.asset("empty.pot"),
                "foo/foo/locales/foo-content.pot": fshelpers.asset("foo.pot"),
            },
        )

        rebuild_package_potfiles(self.tempdir, self.tempdir, "foo")
        pofile = (self.tempdir, "foo/foo/locales/foo.pot")
        self.assertEquals({"Foo": "", "Login": ""}, pohelpers.messages(*pofile))
Example #10
0
    def test_merges_content_pot_files(self):
        fshelpers.create_structure(
            self.tempdir, {
                'foo/foo/__init__.py': '_("Foo")',
                'foo/foo/locales/foo.pot': fshelpers.asset('empty.pot'),
                'foo/foo/locales/foo-content.pot': fshelpers.asset('foo.pot'),
            })

        rebuild_package_potfiles(self.tempdir, self.tempdir, 'foo')
        pofile = (self.tempdir, 'foo/foo/locales/foo.pot')
        self.assertEquals({
            'Foo': '',
            'Login': ''
        }, pohelpers.messages(*pofile))
Example #11
0
 def test_i18ndude_SystemExit_is_handled(self):
     # This is quite a "stupid" test:
     # Rebuilding a domain without having any translations makes the internal
     # i18ndude command to perform a system exit.
     # This is really bad, since we are possibly building multiple pot-files
     # and are doing more stuff and should be in control of such things.
     fshelpers.create_structure(
         self.tempdir,
         {'foo/locales/foo.pot': fshelpers.asset('empty.pot')})
     try:
         with capture_streams(stderr=StringIO()):
             rebuild_package_potfiles(self.tempdir, self.tempdir, 'foo')
     except SystemExit:
         assert False, 'SystemExit leaked from i18ndude while rebuilding pot-files!'
Example #12
0
    def test_does_not_include_messages_outside_of_package_dir(self):
        fshelpers.create_structure(
            self.tempdir, {
                'foo/foo/__init__.py': '_("Foo")',
                'foo/foo/locales/foo.pot': fshelpers.asset('empty.pot'),
                'src/bar/__init__.py': '_("Bar")'
            })

        package_dir = os.path.join(self.tempdir, 'foo')
        potfile = (self.tempdir, 'foo/foo/locales/foo.pot')
        rebuild_package_potfiles(self.tempdir, package_dir, 'foo')
        self.assertNotIn(
            'Bar', pohelpers.messages(*potfile),
            'Messages from sub-checkouts should not be included.')
        self.assertEquals({'Foo': ''}, pohelpers.messages(*potfile),
                          'Expected translations in package to be discovered.')
    def test_does_not_include_messages_outside_of_package_dir(self):
        fshelpers.create_structure(
            self.tempdir,
            {
                "foo/foo/__init__.py": '_("Foo")',
                "foo/foo/locales/foo.pot": fshelpers.asset("empty.pot"),
                "src/bar/__init__.py": '_("Bar")',
            },
        )

        package_dir = os.path.join(self.tempdir, "foo")
        potfile = (self.tempdir, "foo/foo/locales/foo.pot")
        rebuild_package_potfiles(self.tempdir, package_dir, "foo")
        self.assertNotIn("Bar", pohelpers.messages(*potfile), "Messages from sub-checkouts should not be included.")
        self.assertEquals(
            {"Foo": ""}, pohelpers.messages(*potfile), "Expected translations in package to be discovered."
        )
def build_translations(package_dir, package_root, i18n_domain,
                       new_languages=None, output=sys.stdout):
    with capture_streams(stdout=output or StringIO()):
        rebuild_inflator(package_dir, i18n_domain)
        rebuild_package_potfiles(package_root, package_dir, i18n_domain)
        sync_package_pofiles(package_dir, new_languages)