示例#1
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()),
     )
示例#2
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()),
         ])
示例#3
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), [])
示例#4
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), [])
示例#5
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()),
         ])
示例#6
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), [])
示例#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_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()),
         ])
示例#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_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')
示例#11
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), [])
示例#12
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), [])