def test_flat_formatter(self): registry = FileRegistry() formatter = FlatFormatter(registry) formatter.add_base('app') formatter.add('f/oo/bar', GeneratedFile('foobar')) formatter.add('f/oo/baz', GeneratedFile('foobaz')) formatter.add('f/oo/qux', GeneratedFile('fooqux')) formatter.add_manifest(ManifestContent('f/oo', 'bar', 'bar')) formatter.add_manifest(ManifestContent('f/oo', 'qux', 'qux')) self.assertEqual(registry.paths(), [ 'f/oo/bar', 'f/oo/baz', 'f/oo/qux', 'chrome.manifest', 'f/f.manifest', 'f/oo/oo.manifest' ]) self.assertEqual(registry['chrome.manifest'].open().read(), 'manifest f/f.manifest\n') self.assertEqual(registry['f/f.manifest'].open().read(), 'manifest oo/oo.manifest\n') self.assertEqual(registry['f/oo/oo.manifest'].open().read(), ''.join([ 'content bar bar\n', 'content qux qux\n', ])) formatter.add_interfaces('components/foo.xpt', foo_xpt) formatter.add_interfaces('components/bar.xpt', bar_xpt) self.assertEqual(registry.paths(), [ 'f/oo/bar', 'f/oo/baz', 'f/oo/qux', 'chrome.manifest', 'f/f.manifest', 'f/oo/oo.manifest', 'components/components.manifest', 'components/interfaces.xpt' ]) self.assertEqual( registry['chrome.manifest'].open().read(), ''.join([ 'manifest f/f.manifest\n', 'manifest components/components.manifest\n', ])) self.assertEqual( registry['components/components.manifest'].open().read(), 'interfaces interfaces.xpt\n') registry['components/interfaces.xpt'] \ .copy(self.tmppath('interfaces.xpt')) linked = read_interfaces(self.tmppath('interfaces.xpt')) foo = read_interfaces(foo_xpt.open()) bar = read_interfaces(bar_xpt.open()) self.assertEqual(foo['foo'], linked['foo']) self.assertEqual(bar['bar'], linked['bar']) formatter.add_manifest(ManifestContent('app/chrome', 'content', 'foo/')) self.assertEqual( registry['chrome.manifest'].open().read(), ''.join([ 'manifest f/f.manifest\n', 'manifest components/components.manifest\n', ])) self.assertEqual(registry['app/chrome.manifest'].open().read(), 'manifest chrome/chrome.manifest\n') self.assertEqual(registry['app/chrome/chrome.manifest'].open().read(), 'content content foo/\n')
def test_flat_formatter(self): registry = FileRegistry() formatter = FlatFormatter(registry) formatter.add_base('app') formatter.add('f/oo/bar', GeneratedFile('foobar')) formatter.add('f/oo/baz', GeneratedFile('foobaz')) formatter.add('f/oo/qux', GeneratedFile('fooqux')) formatter.add_manifest(ManifestContent('f/oo', 'bar', 'bar')) formatter.add_manifest(ManifestContent('f/oo', 'qux', 'qux')) self.assertEqual(registry.paths(), ['f/oo/bar', 'f/oo/baz', 'f/oo/qux', 'chrome.manifest', 'f/f.manifest', 'f/oo/oo.manifest']) self.assertEqual(registry['chrome.manifest'].open().read(), 'manifest f/f.manifest\n') self.assertEqual(registry['f/f.manifest'].open().read(), 'manifest oo/oo.manifest\n') self.assertEqual(registry['f/oo/oo.manifest'].open().read(), ''.join([ 'content bar bar\n', 'content qux qux\n', ])) formatter.add_interfaces('components/foo.xpt', foo_xpt) formatter.add_interfaces('components/bar.xpt', bar_xpt) self.assertEqual(registry.paths(), ['f/oo/bar', 'f/oo/baz', 'f/oo/qux', 'chrome.manifest', 'f/f.manifest', 'f/oo/oo.manifest', 'components/components.manifest', 'components/interfaces.xpt']) self.assertEqual(registry['chrome.manifest'].open().read(), ''.join([ 'manifest f/f.manifest\n', 'manifest components/components.manifest\n', ])) self.assertEqual( registry['components/components.manifest'].open().read(), 'interfaces interfaces.xpt\n' ) registry['components/interfaces.xpt'] \ .copy(self.tmppath('interfaces.xpt')) linked = read_interfaces(self.tmppath('interfaces.xpt')) foo = read_interfaces(foo_xpt.open()) bar = read_interfaces(bar_xpt.open()) self.assertEqual(foo['foo'], linked['foo']) self.assertEqual(bar['bar'], linked['bar']) formatter.add_manifest(ManifestContent('app/chrome', 'content', 'foo/')) self.assertEqual(registry['chrome.manifest'].open().read(), ''.join([ 'manifest f/f.manifest\n', 'manifest components/components.manifest\n', ])) self.assertEqual(registry['app/chrome.manifest'].open().read(), 'manifest chrome/chrome.manifest\n') self.assertEqual(registry['app/chrome/chrome.manifest'].open().read(), 'content content foo/\n')
def test_populate_registry(self): m = self._get_test_manifest() r = FileRegistry() m.populate_registry(r) self.assertEqual(len(r), 4) self.assertEqual(r.paths(), ['c_dest', 'e_dest', 'o_dest', 's_dest'])
def test_populate_registry(self): m = self._get_test_manifest() r = FileRegistry() m.populate_registry(r) self.assertEqual(len(r), 3) self.assertEqual(r.paths(), ["c_dest", "e_dest", "s_dest"])
def test_jar_formatter(self): registry = FileRegistry() formatter = JarFormatter(registry) formatter.add_manifest(ManifestContent('f', 'oo', 'oo/')) formatter.add_manifest(ManifestContent('f', 'bar', 'oo/bar/')) formatter.add('f/oo/bar/baz', GeneratedFile('foobarbaz')) formatter.add('f/oo/qux', GeneratedFile('fooqux')) self.assertEqual(registry.paths(), ['chrome.manifest', 'f/f.manifest', 'f/oo.jar']) self.assertEqual(registry['chrome.manifest'].open().read(), 'manifest f/f.manifest\n') self.assertEqual( registry['f/f.manifest'].open().read(), ''.join([ 'content oo jar:oo.jar!/\n', 'content bar jar:oo.jar!/bar/\n', ])) self.assertTrue(formatter.contains('f/oo/bar/baz')) self.assertFalse(formatter.contains('foo/bar/baz')) self.assertEqual(registry['f/oo.jar'].paths(), ['bar/baz', 'qux']) formatter.add_manifest(ManifestResource('f', 'foo', 'resource://bar/')) self.assertEqual( registry['f/f.manifest'].open().read(), ''.join([ 'content oo jar:oo.jar!/\n', 'content bar jar:oo.jar!/bar/\n', 'resource foo resource://bar/\n', ]))
def test_jar_formatter(self): registry = FileRegistry() formatter = JarFormatter(registry) formatter.add_manifest(ManifestContent('f', 'oo', 'oo/')) formatter.add_manifest(ManifestContent('f', 'bar', 'oo/bar/')) formatter.add('f/oo/bar/baz', GeneratedFile('foobarbaz')) formatter.add('f/oo/qux', GeneratedFile('fooqux')) self.assertEqual(registry.paths(), ['chrome.manifest', 'f/f.manifest', 'f/oo.jar']) self.assertEqual(registry['chrome.manifest'].open().read(), 'manifest f/f.manifest\n') self.assertEqual(registry['f/f.manifest'].open().read(), ''.join([ 'content oo jar:oo.jar!/\n', 'content bar jar:oo.jar!/bar/\n', ])) self.assertTrue(formatter.contains('f/oo/bar/baz')) self.assertFalse(formatter.contains('foo/bar/baz')) self.assertEqual(registry['f/oo.jar'].paths(), ['bar/baz', 'qux']) formatter.add_manifest(ManifestResource('f', 'foo', 'resource://bar/')) self.assertEqual(registry['f/f.manifest'].open().read(), ''.join([ 'content oo jar:oo.jar!/\n', 'content bar jar:oo.jar!/bar/\n', 'resource foo resource://bar/\n', ]))
def test_populate_registry(self): m = self._get_test_manifest() r = FileRegistry() m.populate_registry(r) self.assertEqual(len(r), 6) self.assertEqual( r.paths(), ["c_dest", "content", "e_dest", "o_dest", "p_dest", "s_dest"])
def find_generated_harness_files(): # TEST_HARNESS_FILES end up in an install manifest at # $topsrcdir/_build_manifests/install/_tests. manifest = InstallManifest(mozpath.join(buildconfig.topobjdir, '_build_manifests', 'install', '_tests')) registry = FileRegistry() manifest.populate_registry(registry) # Conveniently, the generated files we care about will already # exist in the objdir, so we can identify relevant files if # they're an `ExistingFile` instance. return [mozpath.join('_tests', p) for p in registry.paths() if isinstance(registry[p], ExistingFile)]
def find_generated_harness_files(): # TEST_HARNESS_FILES end up in an install manifest at # $topsrcdir/_build_manifests/install/_tests. manifest = InstallManifest(mozpath.join(buildconfig.topobjdir, '_build_manifests', 'install', '_tests')) registry = FileRegistry() manifest.populate_registry(registry) # Conveniently, the generated files we care about will already # exist in the objdir, so we can identify relevant files if # they're an `ExistingFile` instance. return [mozpath.join('_tests', p) for p in registry.paths() if isinstance(registry[p], ExistingFile)]
class TestFileRegistry(MatchTestTemplate, unittest.TestCase): def add(self, path): self.registry.add(path, GeneratedFile(path)) def do_check(self, pattern, result): self.checked = True if result: self.assertTrue(self.registry.contains(pattern)) else: self.assertFalse(self.registry.contains(pattern)) self.assertEqual(self.registry.match(pattern), result) def test_file_registry(self): self.registry = FileRegistry() self.registry.add('foo', GeneratedFile('foo')) bar = GeneratedFile('bar') self.registry.add('bar', bar) self.assertEqual(self.registry.paths(), ['foo', 'bar']) self.assertEqual(self.registry['bar'], bar) self.assertRaises(ErrorMessage, self.registry.add, 'foo', GeneratedFile('foo2')) self.assertRaises(ErrorMessage, self.registry.remove, 'qux') self.assertRaises(ErrorMessage, self.registry.add, 'foo/bar', GeneratedFile('foobar')) self.assertRaises(ErrorMessage, self.registry.add, 'foo/bar/baz', GeneratedFile('foobar')) self.assertEqual(self.registry.paths(), ['foo', 'bar']) self.registry.remove('foo') self.assertEqual(self.registry.paths(), ['bar']) self.registry.remove('bar') self.assertEqual(self.registry.paths(), []) self.prepare_match_test() self.do_match_test() self.assertTrue(self.checked) self.assertEqual(self.registry.paths(), [ 'bar', 'foo/bar', 'foo/baz', 'foo/qux/1', 'foo/qux/bar', 'foo/qux/2/test', 'foo/qux/2/test2', ]) self.registry.remove('foo/qux') self.assertEqual(self.registry.paths(), ['bar', 'foo/bar', 'foo/baz']) self.registry.add('foo/qux', GeneratedFile('fooqux')) self.assertEqual(self.registry.paths(), ['bar', 'foo/bar', 'foo/baz', 'foo/qux']) self.registry.remove('foo/b*') self.assertEqual(self.registry.paths(), ['bar', 'foo/qux']) self.assertEqual([f for f, c in self.registry], ['bar', 'foo/qux']) self.assertEqual(len(self.registry), 2) self.add('foo/.foo') self.assertTrue(self.registry.contains('foo/.foo'))
class TestFileRegistry(MatchTestTemplate, unittest.TestCase): def add(self, path): self.registry.add(path, GeneratedFile(path)) def do_check(self, pattern, result): self.checked = True if result: self.assertTrue(self.registry.contains(pattern)) else: self.assertFalse(self.registry.contains(pattern)) self.assertEqual(self.registry.match(pattern), result) def test_file_registry(self): self.registry = FileRegistry() self.registry.add('foo', GeneratedFile('foo')) bar = GeneratedFile('bar') self.registry.add('bar', bar) self.assertEqual(self.registry.paths(), ['foo', 'bar']) self.assertEqual(self.registry['bar'], bar) self.assertRaises(ErrorMessage, self.registry.add, 'foo', GeneratedFile('foo2')) self.assertRaises(ErrorMessage, self.registry.remove, 'qux') self.assertRaises(ErrorMessage, self.registry.add, 'foo/bar', GeneratedFile('foobar')) self.assertRaises(ErrorMessage, self.registry.add, 'foo/bar/baz', GeneratedFile('foobar')) self.assertEqual(self.registry.paths(), ['foo', 'bar']) self.registry.remove('foo') self.assertEqual(self.registry.paths(), ['bar']) self.registry.remove('bar') self.assertEqual(self.registry.paths(), []) self.prepare_match_test() self.do_match_test() self.assertTrue(self.checked) self.assertEqual(self.registry.paths(), [ 'bar', 'foo/bar', 'foo/baz', 'foo/qux/1', 'foo/qux/bar', 'foo/qux/2/test', 'foo/qux/2/test2', ]) self.registry.remove('foo/qux') self.assertEqual(self.registry.paths(), ['bar', 'foo/bar', 'foo/baz']) self.registry.add('foo/qux', GeneratedFile('fooqux')) self.assertEqual(self.registry.paths(), ['bar', 'foo/bar', 'foo/baz', 'foo/qux']) self.registry.remove('foo/b*') self.assertEqual(self.registry.paths(), ['bar', 'foo/qux']) self.assertEqual([f for f, c in self.registry], ['bar', 'foo/qux']) self.assertEqual(len(self.registry), 2) self.add('foo/.foo') self.assertTrue(self.registry.contains('foo/.foo')) def test_registry_paths(self): self.registry = FileRegistry() # Can't add a file if it requires a directory in place of a # file we also require. self.registry.add('foo', GeneratedFile('foo')) self.assertRaises(ErrorMessage, self.registry.add, 'foo/bar', GeneratedFile('foobar')) # Can't add a file if we already have a directory there. self.registry.add('bar/baz', GeneratedFile('barbaz')) self.assertRaises(ErrorMessage, self.registry.add, 'bar', GeneratedFile('bar')) # Bump the count of things that require bar/ to 2. self.registry.add('bar/zot', GeneratedFile('barzot')) self.assertRaises(ErrorMessage, self.registry.add, 'bar', GeneratedFile('bar')) # Drop the count of things that require bar/ to 1. self.registry.remove('bar/baz') self.assertRaises(ErrorMessage, self.registry.add, 'bar', GeneratedFile('bar')) # Drop the count of things that require bar/ to 0. self.registry.remove('bar/zot') self.registry.add('bar/zot', GeneratedFile('barzot')) def test_required_directories(self): self.registry = FileRegistry() self.registry.add('foo', GeneratedFile('foo')) self.assertEqual(self.registry.required_directories(), set()) self.registry.add('bar/baz', GeneratedFile('barbaz')) self.assertEqual(self.registry.required_directories(), {'bar'}) self.registry.add('bar/zot', GeneratedFile('barzot')) self.assertEqual(self.registry.required_directories(), {'bar'}) self.registry.add('bar/zap/zot', GeneratedFile('barzapzot')) self.assertEqual(self.registry.required_directories(), {'bar', 'bar/zap'}) self.registry.remove('bar/zap/zot') self.assertEqual(self.registry.required_directories(), {'bar'}) self.registry.remove('bar/baz') self.assertEqual(self.registry.required_directories(), {'bar'}) self.registry.remove('bar/zot') self.assertEqual(self.registry.required_directories(), set()) self.registry.add('x/y/z', GeneratedFile('xyz')) self.assertEqual(self.registry.required_directories(), {'x', 'x/y'})
class TestFileRegistry(MatchTestTemplate, unittest.TestCase): def add(self, path): self.registry.add(path, GeneratedFile(path)) def do_check(self, pattern, result): self.checked = True if result: self.assertTrue(self.registry.contains(pattern)) else: self.assertFalse(self.registry.contains(pattern)) self.assertEqual(self.registry.match(pattern), result) def test_file_registry(self): self.registry = FileRegistry() self.registry.add('foo', GeneratedFile('foo')) bar = GeneratedFile('bar') self.registry.add('bar', bar) self.assertEqual(self.registry.paths(), ['foo', 'bar']) self.assertEqual(self.registry['bar'], bar) self.assertRaises(ErrorMessage, self.registry.add, 'foo', GeneratedFile('foo2')) self.assertRaises(ErrorMessage, self.registry.remove, 'qux') self.assertRaises(ErrorMessage, self.registry.add, 'foo/bar', GeneratedFile('foobar')) self.assertRaises(ErrorMessage, self.registry.add, 'foo/bar/baz', GeneratedFile('foobar')) self.assertEqual(self.registry.paths(), ['foo', 'bar']) self.registry.remove('foo') self.assertEqual(self.registry.paths(), ['bar']) self.registry.remove('bar') self.assertEqual(self.registry.paths(), []) self.prepare_match_test() self.do_match_test() self.assertTrue(self.checked) self.assertEqual(self.registry.paths(), [ 'bar', 'foo/bar', 'foo/baz', 'foo/qux/1', 'foo/qux/bar', 'foo/qux/2/test', 'foo/qux/2/test2', ]) self.registry.remove('foo/qux') self.assertEqual(self.registry.paths(), ['bar', 'foo/bar', 'foo/baz']) self.registry.add('foo/qux', GeneratedFile('fooqux')) self.assertEqual(self.registry.paths(), ['bar', 'foo/bar', 'foo/baz', 'foo/qux']) self.registry.remove('foo/b*') self.assertEqual(self.registry.paths(), ['bar', 'foo/qux']) self.assertEqual([f for f, c in self.registry], ['bar', 'foo/qux']) self.assertEqual(len(self.registry), 2) self.add('foo/.foo') self.assertTrue(self.registry.contains('foo/.foo')) def test_registry_paths(self): self.registry = FileRegistry() # Can't add a file if it requires a directory in place of a # file we also require. self.registry.add('foo', GeneratedFile('foo')) self.assertRaises(ErrorMessage, self.registry.add, 'foo/bar', GeneratedFile('foobar')) # Can't add a file if we already have a directory there. self.registry.add('bar/baz', GeneratedFile('barbaz')) self.assertRaises(ErrorMessage, self.registry.add, 'bar', GeneratedFile('bar')) # Bump the count of things that require bar/ to 2. self.registry.add('bar/zot', GeneratedFile('barzot')) self.assertRaises(ErrorMessage, self.registry.add, 'bar', GeneratedFile('bar')) # Drop the count of things that require bar/ to 1. self.registry.remove('bar/baz') self.assertRaises(ErrorMessage, self.registry.add, 'bar', GeneratedFile('bar')) # Drop the count of things that require bar/ to 0. self.registry.remove('bar/zot') self.registry.add('bar/zot', GeneratedFile('barzot')) def test_required_directories(self): self.registry = FileRegistry() self.registry.add('foo', GeneratedFile('foo')) self.assertEqual(self.registry.required_directories(), set()) self.registry.add('bar/baz', GeneratedFile('barbaz')) self.assertEqual(self.registry.required_directories(), {'bar'}) self.registry.add('bar/zot', GeneratedFile('barzot')) self.assertEqual(self.registry.required_directories(), {'bar'}) self.registry.add('bar/zap/zot', GeneratedFile('barzapzot')) self.assertEqual(self.registry.required_directories(), {'bar', 'bar/zap'}) self.registry.remove('bar/zap/zot') self.assertEqual(self.registry.required_directories(), {'bar'}) self.registry.remove('bar/baz') self.assertEqual(self.registry.required_directories(), {'bar'}) self.registry.remove('bar/zot') self.assertEqual(self.registry.required_directories(), set()) self.registry.add('x/y/z', GeneratedFile('xyz')) self.assertEqual(self.registry.required_directories(), {'x', 'x/y'})
class TestFileRegistry(MatchTestTemplate, unittest.TestCase): def add(self, path): self.registry.add(path, GeneratedFile(path)) def do_check(self, pattern, result): self.checked = True if result: self.assertTrue(self.registry.contains(pattern)) else: self.assertFalse(self.registry.contains(pattern)) self.assertEqual(self.registry.match(pattern), result) def test_file_registry(self): self.registry = FileRegistry() self.registry.add('foo', GeneratedFile('foo')) bar = GeneratedFile('bar') self.registry.add('bar', bar) self.assertEqual(self.registry.paths(), ['foo', 'bar']) self.assertEqual(self.registry['bar'], bar) self.assertRaises(ErrorMessage, self.registry.add, 'foo', GeneratedFile('foo2')) self.assertRaises(ErrorMessage, self.registry.remove, 'qux') self.assertRaises(ErrorMessage, self.registry.add, 'foo/bar', GeneratedFile('foobar')) self.assertRaises(ErrorMessage, self.registry.add, 'foo/bar/baz', GeneratedFile('foobar')) self.assertEqual(self.registry.paths(), ['foo', 'bar']) self.registry.remove('foo') self.assertEqual(self.registry.paths(), ['bar']) self.registry.remove('bar') self.assertEqual(self.registry.paths(), []) self.prepare_match_test() self.do_match_test() self.assertTrue(self.checked) self.assertEqual(self.registry.paths(), [ 'bar', 'foo/bar', 'foo/baz', 'foo/qux/1', 'foo/qux/bar', 'foo/qux/2/test', 'foo/qux/2/test2', ]) self.registry.remove('foo/qux') self.assertEqual(self.registry.paths(), ['bar', 'foo/bar', 'foo/baz']) self.registry.add('foo/qux', GeneratedFile('fooqux')) self.assertEqual(self.registry.paths(), ['bar', 'foo/bar', 'foo/baz', 'foo/qux']) self.registry.remove('foo/b*') self.assertEqual(self.registry.paths(), ['bar', 'foo/qux']) self.assertEqual([f for f, c in self.registry], ['bar', 'foo/qux']) self.assertEqual(len(self.registry), 2) self.add('foo/.foo') self.assertTrue(self.registry.contains('foo/.foo'))