Пример #1
0
 def test_l10n_path(self):
     cfg = ProjectConfig()
     cfg.locales.append('de')
     cfg.add_paths({
         'l10n': '{l10n_base}/{locale}/*'
     })
     cfg.add_environment(l10n_base='/tmp')
     mocks = {
         '/tmp/de/': [
             'good.ftl',
             'not/subdir/bad.ftl'
         ],
         '/tmp/fr/': [
             'good.ftl',
             'not/subdir/bad.ftl'
         ],
     }
     files = MockProjectFiles(mocks, 'de', [cfg])
     self.assertListEqual(
         list(files), [('/tmp/de/good.ftl', None, None, set())])
     self.assertTupleEqual(
         files.match('/tmp/de/something.ftl'),
         ('/tmp/de/something.ftl', None, None, set()))
     self.assertIsNone(files.match('/tmp/fr/something.ftl'))
     files = MockProjectFiles(mocks, 'de', [cfg], mergebase='merging')
     self.assertListEqual(
         list(files),
         [('/tmp/de/good.ftl', None, 'merging/de/good.ftl', set())])
     self.assertTupleEqual(
         files.match('/tmp/de/something.ftl'),
         ('/tmp/de/something.ftl', None, 'merging/de/something.ftl', set()))
     # 'fr' is not in the locale list, should return no files
     files = MockProjectFiles(mocks, 'fr', [cfg])
     self.assertListEqual(list(files), [])
Пример #2
0
 def test_children(self):
     one = ProjectConfig('one.toml')
     one.add_child(ProjectConfig('inner.toml'))
     one.set_locales(['ab'])
     other = ProjectConfig('one.toml')
     self.assertFalse(one.same(other))
     other.add_child(ProjectConfig('inner.toml'))
     self.assertTrue(one.same(other))
Пример #3
0
 def setUp(self):
     self.cfg = ProjectConfig(None)
     self.file = File('/tmp/somedir/de/browser/one/two/file.ftl',
                      'file.ftl',
                      module='browser',
                      locale='de')
     self.other_file = File('/tmp/somedir/de/toolkit/two/one/file.ftl',
                            'file.ftl',
                            module='toolkit',
                            locale='de')
     self.cfg.set_locales(['de'])
Пример #4
0
 def test_paths(self):
     one = ProjectConfig('one.toml')
     one.set_locales(['ab'])
     one.add_paths({
         'l10n': '/tmp/somedir/{locale}/**'
     })
     other = ProjectConfig('one.toml')
     self.assertFalse(one.same(other))
     other.add_paths({
         'l10n': '/tmp/somedir/{locale}/**'
     })
     self.assertTrue(one.same(other))
Пример #5
0
 def test_locales_in_paths(self):
     pc = ProjectConfig(None)
     child = ProjectConfig(None)
     child.add_paths({
         'l10n': '/tmp/somedir/{locale}/toolkit/**',
         'locales': ['it']
     })
     child.set_locales([])
     pc.add_child(child)
     self.assertListEqual(pc.all_locales, ['it'])
     pc.set_locales(['de', 'fr'])
     self.assertListEqual(pc.all_locales, ['de', 'fr', 'it'])
Пример #6
0
class SetupMixin(object):
    def setUp(self):
        self.cfg = ProjectConfig(None)
        self.file = File(
            '/tmp/somedir/de/browser/one/two/file.ftl',
            'file.ftl',
            module='browser', locale='de')
        self.other_file = File(
            '/tmp/somedir/de/toolkit/two/one/file.ftl',
            'file.ftl',
            module='toolkit', locale='de')
        self.cfg.set_locales(['de'])
Пример #7
0
 def test_single_reference_path(self):
     cfg = ProjectConfig(None)
     cfg.add_environment(l10n_base=self.path('/l10n'))
     cfg.set_locales(['de'])
     cfg.add_paths({
         'l10n': '{l10n_base}/{locale}/good.ftl',
         'reference': self.path('/reference/good.ftl')
     })
     mocks = [
         self.path('/reference/good.ftl'),
         self.path('/reference/not/subdir/bad.ftl'),
     ]
     files = MockProjectFiles(mocks, 'de', [cfg])
     self.assertListEqual(list(files), [
         (self.path('/l10n/de/good.ftl'), self.path('/reference/good.ftl'),
          None, set()),
     ])
     self.assertTupleEqual(
         files.match(self.path('/reference/good.ftl')),
         (self.path('/l10n/de/good.ftl'), self.path('/reference/good.ftl'),
          None, set()),
     )
     self.assertTupleEqual(
         files.match(self.path('/l10n/de/good.ftl')),
         (self.path('/l10n/de/good.ftl'), self.path('/reference/good.ftl'),
          None, set()),
     )
Пример #8
0
 def test_l10n_path(self):
     cfg = ProjectConfig(None)
     cfg.add_environment(l10n_base=self.root)
     cfg.set_locales(['de'])
     cfg.add_paths({'l10n': '{l10n_base}/{locale}/*'})
     mocks = [
         self.path(leaf) for leaf in (
             '/de/good.ftl',
             '/de/not/subdir/bad.ftl',
             '/fr/good.ftl',
             '/fr/not/subdir/bad.ftl',
         )
     ]
     files = MockProjectFiles(mocks, 'de', [cfg])
     self.assertListEqual(list(files),
                          [(self.path('/de/good.ftl'), None, None, set())])
     self.assertTupleEqual(files.match(self.path('/de/good.ftl')),
                           (self.path('/de/good.ftl'), None, None, set()))
     self.assertIsNone(files.match(self.path('/fr/something.ftl')))
     files = MockProjectFiles(mocks, 'de', [cfg], mergebase='merging')
     self.assertListEqual(
         list(files),
         [(self.path('/de/good.ftl'), None, 'merging/de/good.ftl', set())])
     self.assertTupleEqual(files.match(self.path('/de/something.ftl')),
                           (self.path('/de/something.ftl'), None,
                            'merging/de/something.ftl', set()))
     # 'fr' is not in the locale list, should return no files
     files = MockProjectFiles(mocks, 'fr', [cfg])
     self.assertListEqual(list(files), [])
Пример #9
0
 def test_expand_paths(self):
     pc = ProjectConfig()
     pc.add_environment(one="first_path")
     self.assertEqual(pc.expand('foo'), 'foo')
     self.assertEqual(pc.expand('foo{one}bar'), 'foofirst_pathbar')
     pc.add_environment(l10n_base='../tmp/localizations')
     self.assertEqual(
         pc.expand('{l}dir', {'l': '{l10n_base}/{locale}/'}),
         '../tmp/localizations/{locale}/dir')
     self.assertEqual(
         pc.expand('{l}dir', {
             'l': '{l10n_base}/{locale}/',
             'l10n_base': '../merge-base'
         }),
         '../merge-base/{locale}/dir')
Пример #10
0
 def test_single_reference_path(self):
     cfg = ProjectConfig(None)
     cfg.add_environment(l10n_base=self.path('/l10n'))
     cfg.set_locales(['de'])
     cfg.add_paths({
         'l10n': '{l10n_base}/{locale}/good.ftl',
         'reference': self.path('/reference/good.ftl')
     })
     mocks = [
         self.path('/reference/good.ftl'),
         self.path('/reference/not/subdir/bad.ftl'),
     ]
     files = MockProjectFiles(mocks, 'de', [cfg])
     self.assertListEqual(
         list(files),
         [
             (self.path('/l10n/de/good.ftl'),
              self.path('/reference/good.ftl'),
              None,
              set()),
         ])
     self.assertTupleEqual(
         files.match(self.path('/reference/good.ftl')),
         (self.path('/l10n/de/good.ftl'),
          self.path('/reference/good.ftl'),
          None,
          set()),
         )
     self.assertTupleEqual(
         files.match(self.path('/l10n/de/good.ftl')),
         (self.path('/l10n/de/good.ftl'),
          self.path('/reference/good.ftl'),
          None,
          set()),
         )
Пример #11
0
 def test_validation_mode(self):
     cfg = ProjectConfig(None)
     cfg.add_environment(l10n_base=self.path('/l10n'))
     cfg.set_locales(['de'])
     cfg.add_paths({
         'l10n': '{l10n_base}/{locale}/*',
         'reference': self.path('/reference/*')
     })
     mocks = [
         self.path(leaf)
         for leaf in [
             '/l10n/de/good.ftl',
             '/l10n/de/not/subdir/bad.ftl',
             '/l10n/fr/good.ftl',
             '/l10n/fr/not/subdir/bad.ftl',
             '/reference/ref.ftl',
             '/reference/not/subdir/bad.ftl',
         ]
     ]
     # `None` switches on validation mode
     files = MockProjectFiles(mocks, None, [cfg])
     self.assertListEqual(
         list(files),
         [
             (self.path('/reference/ref.ftl'),
              self.path('/reference/ref.ftl'),
              None,
              set()),
         ])
Пример #12
0
 def test_partial_l10n(self):
     cfg = ProjectConfig()
     cfg.locales.extend(['de', 'fr'])
     cfg.add_paths({
         'l10n': '/tmp/{locale}/major/*'
     }, {
         'l10n': '/tmp/{locale}/minor/*',
         'locales': ['de']
     })
     mocks = {
         '/tmp/de/major/': [
             'good.ftl',
             'not/subdir/bad.ftl'
         ],
         '/tmp/de/minor/': [
             'good.ftl',
         ],
         '/tmp/fr/major/': [
             'good.ftl',
             'not/subdir/bad.ftl'
         ],
         '/tmp/fr/minor/': [
             'good.ftl',
         ],
     }
     files = MockProjectFiles(mocks, 'de', [cfg])
     self.assertListEqual(
         list(files),
         [
             ('/tmp/de/major/good.ftl', None, None, set()),
             ('/tmp/de/minor/good.ftl', None, None, set()),
         ])
     self.assertTupleEqual(
         files.match('/tmp/de/major/some.ftl'),
         ('/tmp/de/major/some.ftl', None, None, set()))
     self.assertIsNone(files.match('/tmp/de/other/some.ftl'))
     # 'fr' is not in the locale list of minor, should only return major
     files = MockProjectFiles(mocks, 'fr', [cfg])
     self.assertListEqual(
         list(files),
         [
             ('/tmp/fr/major/good.ftl', None, None, set()),
         ])
     self.assertIsNone(files.match('/tmp/fr/minor/some.ftl'))
Пример #13
0
 def test_partial_l10n(self):
     cfg = ProjectConfig()
     cfg.locales.extend(['de', 'fr'])
     cfg.add_paths({
         'l10n': '/tmp/{locale}/major/*'
     }, {
         'l10n': '/tmp/{locale}/minor/*',
         'locales': ['de']
     })
     mocks = {
         '/tmp/de/major/': [
             'good.ftl',
             'not/subdir/bad.ftl'
         ],
         '/tmp/de/minor/': [
             'good.ftl',
         ],
         '/tmp/fr/major/': [
             'good.ftl',
             'not/subdir/bad.ftl'
         ],
         '/tmp/fr/minor/': [
             'good.ftl',
         ],
     }
     files = MockProjectFiles(mocks, 'de', [cfg])
     self.assertListEqual(
         list(files),
         [
             ('/tmp/de/major/good.ftl', None, None, set()),
             ('/tmp/de/minor/good.ftl', None, None, set()),
         ])
     self.assertTupleEqual(
         files.match('/tmp/de/major/some.ftl'),
         ('/tmp/de/major/some.ftl', None, None, set()))
     self.assertIsNone(files.match('/tmp/de/other/some.ftl'))
     # 'fr' is not in the locale list of minor, should only return major
     files = MockProjectFiles(mocks, 'fr', [cfg])
     self.assertListEqual(
         list(files),
         [
             ('/tmp/fr/major/good.ftl', None, None, set()),
         ])
     self.assertIsNone(files.match('/tmp/fr/minor/some.ftl'))
Пример #14
0
 def test_expand_paths(self):
     pc = ProjectConfig()
     pc.add_environment(one="first_path")
     self.assertEqual(pc.expand('foo'), 'foo')
     self.assertEqual(pc.expand('foo{one}bar'), 'foofirst_pathbar')
     pc.add_environment(l10n_base='../tmp/localizations')
     self.assertEqual(
         pc.expand('{l}dir', {'l': '{l10n_base}/{locale}/'}),
         '../tmp/localizations/{locale}/dir')
     self.assertEqual(
         pc.expand('{l}dir', {
             'l': '{l10n_base}/{locale}/',
             'l10n_base': '../merge-base'
         }),
         '../merge-base/{locale}/dir')
Пример #15
0
 def test_partial_l10n(self):
     cfg = ProjectConfig(None)
     cfg.set_locales(['de', 'fr'])
     cfg.add_paths({'l10n': self.path('/{locale}/major/*')}, {
         'l10n': self.path('/{locale}/minor/*'),
         'locales': ['de']
     })
     mocks = [
         self.path(leaf) for leaf in [
             '/de/major/good.ftl',
             '/de/major/not/subdir/bad.ftl',
             '/de/minor/good.ftl',
             '/fr/major/good.ftl',
             '/fr/major/not/subdir/bad.ftl',
             '/fr/minor/good.ftl',
         ]
     ]
     files = MockProjectFiles(mocks, 'de', [cfg])
     self.assertListEqual(list(files), [
         (self.path('/de/major/good.ftl'), None, None, set()),
         (self.path('/de/minor/good.ftl'), None, None, set()),
     ])
     self.assertTupleEqual(
         files.match(self.path('/de/major/some.ftl')),
         (self.path('/de/major/some.ftl'), None, None, set()))
     self.assertIsNone(files.match(self.path('/de/other/some.ftl')))
     # 'fr' is not in the locale list of minor, should only return major
     files = MockProjectFiles(mocks, 'fr', [cfg])
     self.assertListEqual(list(files), [
         (self.path('/fr/major/good.ftl'), None, None, set()),
     ])
     self.assertIsNone(files.match(self.path('/fr/minor/some.ftl')))
Пример #16
0
 def test_validation_mode(self):
     cfg = ProjectConfig(None)
     cfg.add_environment(l10n_base=self.path('/l10n'))
     cfg.locales.append('de')
     cfg.add_paths({
         'l10n': '{l10n_base}/{locale}/*',
         'reference': self.path('/reference/*')
     })
     mocks = [
         self.path(leaf)
         for leaf in [
             '/l10n/de/good.ftl',
             '/l10n/de/not/subdir/bad.ftl',
             '/l10n/fr/good.ftl',
             '/l10n/fr/not/subdir/bad.ftl',
             '/reference/ref.ftl',
             '/reference/not/subdir/bad.ftl',
         ]
     ]
     # `None` switches on validation mode
     files = MockProjectFiles(mocks, None, [cfg])
     self.assertListEqual(
         list(files),
         [
             (self.path('/reference/ref.ftl'),
              self.path('/reference/ref.ftl'),
              None,
              set()),
         ])
Пример #17
0
 def test_l10n_path(self):
     cfg = ProjectConfig()
     cfg.add_environment(l10n_base='/tmp')
     cfg.locales.append('de')
     cfg.add_paths({
         'l10n': '{l10n_base}/{locale}/*'
     })
     mocks = {
         '/tmp/de/': [
             'good.ftl',
             'not/subdir/bad.ftl'
         ],
         '/tmp/fr/': [
             'good.ftl',
             'not/subdir/bad.ftl'
         ],
     }
     files = MockProjectFiles(mocks, 'de', [cfg])
     self.assertListEqual(
         list(files), [('/tmp/de/good.ftl', None, None, set())])
     self.assertTupleEqual(
         files.match('/tmp/de/something.ftl'),
         ('/tmp/de/something.ftl', None, None, set()))
     self.assertIsNone(files.match('/tmp/fr/something.ftl'))
     files = MockProjectFiles(mocks, 'de', [cfg], mergebase='merging')
     self.assertListEqual(
         list(files),
         [('/tmp/de/good.ftl', None, 'merging/de/good.ftl', set())])
     self.assertTupleEqual(
         files.match('/tmp/de/something.ftl'),
         ('/tmp/de/something.ftl', None, 'merging/de/something.ftl', set()))
     # 'fr' is not in the locale list, should return no files
     files = MockProjectFiles(mocks, 'fr', [cfg])
     self.assertListEqual(list(files), [])
Пример #18
0
 def test_validation_mode(self):
     cfg = ProjectConfig()
     cfg.add_environment(l10n_base='/tmp/l10n')
     cfg.locales.append('de')
     cfg.add_paths({
         'l10n': '{l10n_base}/{locale}/*',
         'reference': '/tmp/reference/*'
     })
     mocks = {
         '/tmp/l10n/de/': [
             'good.ftl',
             'not/subdir/bad.ftl'
         ],
         '/tmp/l10n/fr/': [
             'good.ftl',
             'not/subdir/bad.ftl'
         ],
         '/tmp/reference/': [
             'ref.ftl',
             'not/subdir/bad.ftl'
         ],
     }
     # `None` switches on validation mode
     files = MockProjectFiles(mocks, None, [cfg])
     self.assertListEqual(
         list(files),
         [
             ('/tmp/reference/ref.ftl', '/tmp/reference/ref.ftl', None,
              set()),
         ])
Пример #19
0
 def test_partial_l10n(self):
     cfg = ProjectConfig(None)
     cfg.set_locales(['de', 'fr'])
     cfg.add_paths({
         'l10n': self.path('/{locale}/major/*')
     }, {
         'l10n': self.path('/{locale}/minor/*'),
         'locales': ['de']
     })
     mocks = [
         self.path(leaf)
         for leaf in [
             '/de/major/good.ftl',
             '/de/major/not/subdir/bad.ftl',
             '/de/minor/good.ftl',
             '/fr/major/good.ftl',
             '/fr/major/not/subdir/bad.ftl',
             '/fr/minor/good.ftl',
         ]
     ]
     files = MockProjectFiles(mocks, 'de', [cfg])
     self.assertListEqual(
         list(files),
         [
             (self.path('/de/major/good.ftl'), None, None, set()),
             (self.path('/de/minor/good.ftl'), None, None, set()),
         ])
     self.assertTupleEqual(
         files.match(self.path('/de/major/some.ftl')),
         (self.path('/de/major/some.ftl'), None, None, set()))
     self.assertIsNone(files.match(self.path('/de/other/some.ftl')))
     # 'fr' is not in the locale list of minor, should only return major
     files = MockProjectFiles(mocks, 'fr', [cfg])
     self.assertListEqual(
         list(files),
         [
             (self.path('/fr/major/good.ftl'), None, None, set()),
         ])
     self.assertIsNone(files.match(self.path('/fr/minor/some.ftl')))
Пример #20
0
 def test_l10n_path(self):
     cfg = ProjectConfig(None)
     cfg.add_environment(l10n_base=self.root)
     cfg.set_locales(['de'])
     cfg.add_paths({
         'l10n': '{l10n_base}/{locale}/*'
     })
     mocks = [
         self.path(leaf)
         for leaf in (
             '/de/good.ftl',
             '/de/not/subdir/bad.ftl',
             '/fr/good.ftl',
             '/fr/not/subdir/bad.ftl',
         )
     ]
     files = MockProjectFiles(mocks, 'de', [cfg])
     self.assertListEqual(
         list(files),
         [
             (self.path('/de/good.ftl'), None, None, set())
         ]
     )
     self.assertTupleEqual(
         files.match(self.path('/de/good.ftl')),
         (self.path('/de/good.ftl'), None, None, set())
     )
     self.assertIsNone(files.match(self.path('/fr/something.ftl')))
     files = MockProjectFiles(mocks, 'de', [cfg], mergebase='merging')
     self.assertListEqual(
         list(files),
         [
             (self.path('/de/good.ftl'), None, 'merging/de/good.ftl', set())
         ]
     )
     self.assertTupleEqual(
         files.match(self.path('/de/something.ftl')),
         (self.path('/de/something.ftl'),
          None,
          'merging/de/something.ftl',
          set()))
     # 'fr' is not in the locale list, should return no files
     files = MockProjectFiles(mocks, 'fr', [cfg])
     self.assertListEqual(list(files), [])
Пример #21
0
 def test_locales_in_paths(self):
     pc = ProjectConfig(None)
     child = ProjectConfig(None)
     child.add_paths({
         'l10n': '/tmp/somedir/{locale}/toolkit/**',
         'locales': ['it']
     })
     child.set_locales([])
     pc.add_child(child)
     self.assertListEqual(pc.all_locales, ['it'])
     pc.set_locales(['de', 'fr'])
     self.assertListEqual(pc.all_locales, ['de', 'fr', 'it'])
Пример #22
0
 def test_children(self):
     pc = ProjectConfig(None)
     child = ProjectConfig(None)
     pc.add_child(child)
     self.assertListEqual([pc, child], list(pc.configs))
Пример #23
0
 def test_path(self):
     one = ProjectConfig('one.toml')
     one.set_locales(['ab'])
     self.assertTrue(one.same(ProjectConfig('one.toml')))
     self.assertFalse(one.same(ProjectConfig('two.toml')))
Пример #24
0
 def test_children(self):
     pc = ProjectConfig(None)
     child = ProjectConfig(None)
     pc.add_child(child)
     self.assertListEqual([pc, child], list(pc.configs))
Пример #25
0
 def test_path(self):
     one = ProjectConfig('one.toml')
     one.set_locales(['ab'])
     self.assertTrue(one.same(ProjectConfig('one.toml')))
     self.assertFalse(one.same(ProjectConfig('two.toml')))
Пример #26
0
 def test_paths(self):
     one = ProjectConfig('one.toml')
     one.set_locales(['ab'])
     one.add_paths({'l10n': '/tmp/somedir/{locale}/**'})
     other = ProjectConfig('one.toml')
     self.assertFalse(one.same(other))
     other.add_paths({'l10n': '/tmp/somedir/{locale}/**'})
     self.assertTrue(one.same(other))
Пример #27
0
 def test_children(self):
     one = ProjectConfig('one.toml')
     one.add_child(ProjectConfig('inner.toml'))
     one.set_locales(['ab'])
     other = ProjectConfig('one.toml')
     self.assertFalse(one.same(other))
     other.add_child(ProjectConfig('inner.toml'))
     self.assertTrue(one.same(other))
Пример #28
0
 def test_reference_path(self):
     cfg = ProjectConfig(None)
     cfg.add_environment(l10n_base=self.path('/l10n'))
     cfg.locales.append('de')
     cfg.add_paths({
         'l10n': '{l10n_base}/{locale}/*',
         'reference': self.path('/reference/*')
     })
     mocks = [
         self.path(leaf)
         for leaf in [
             '/l10n/de/good.ftl',
             '/l10n/de/not/subdir/bad.ftl',
             '/l10n/fr/good.ftl',
             '/l10n/fr/not/subdir/bad.ftl',
             '/reference/ref.ftl',
             '/reference/not/subdir/bad.ftl',
         ]
     ]
     files = MockProjectFiles(mocks, 'de', [cfg])
     self.assertListEqual(
         list(files),
         [
             (self.path('/l10n/de/good.ftl'),
              self.path('/reference/good.ftl'),
              None,
              set()),
             (self.path('/l10n/de/ref.ftl'),
              self.path('/reference/ref.ftl'),
              None,
              set()),
         ])
     self.assertTupleEqual(
         files.match(self.path('/l10n/de/good.ftl')),
         (self.path('/l10n/de/good.ftl'),
          self.path('/reference/good.ftl'),
          None,
          set()),
         )
     self.assertTupleEqual(
         files.match(self.path('/reference/good.ftl')),
         (self.path('/l10n/de/good.ftl'),
          self.path('/reference/good.ftl'),
          None,
          set()),
         )
     self.assertIsNone(files.match(self.path('/l10n/de/subdir/bad.ftl')))
     self.assertIsNone(files.match(self.path('/reference/subdir/bad.ftl')))
     files = MockProjectFiles(mocks, 'de', [cfg], mergebase='merging')
     self.assertListEqual(
         list(files),
         [
             (self.path('/l10n/de/good.ftl'),
              self.path('/reference/good.ftl'),
              'merging/de/good.ftl', set()),
             (self.path('/l10n/de/ref.ftl'),
              self.path('/reference/ref.ftl'),
              'merging/de/ref.ftl', set()),
         ])
     self.assertTupleEqual(
         files.match(self.path('/l10n/de/good.ftl')),
         (self.path('/l10n/de/good.ftl'),
          self.path('/reference/good.ftl'),
          'merging/de/good.ftl', set()),
         )
     self.assertTupleEqual(
         files.match(self.path('/reference/good.ftl')),
         (self.path('/l10n/de/good.ftl'),
          self.path('/reference/good.ftl'),
          'merging/de/good.ftl', set()),
         )
     # 'fr' is not in the locale list, should return no files
     files = MockProjectFiles(mocks, 'fr', [cfg])
     self.assertListEqual(list(files), [])