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_chrome_override(self): registry = FileRegistry() f = FlatFormatter(registry) f.add_base('') f.add_manifest(ManifestContent('chrome', 'foo', 'foo/unix')) # A more specific entry for a given chrome name can override a more # generic one. f.add_manifest(ManifestContent('chrome', 'foo', 'foo/win', 'os=WINNT')) f.add_manifest(ManifestContent('chrome', 'foo', 'foo/osx', 'os=Darwin')) # Chrome with the same name overrides the previous registration. with self.assertRaises(ErrorMessage) as e: f.add_manifest(ManifestContent('chrome', 'foo', 'foo/')) self.assertEqual(e.exception.message, 'Error: "content foo foo/" overrides ' '"content foo foo/unix"') # Chrome with the same name and same flags overrides the previous # registration. with self.assertRaises(ErrorMessage) as e: f.add_manifest(ManifestContent('chrome', 'foo', 'foo/', 'os=WINNT')) self.assertEqual(e.exception.message, 'Error: "content foo foo/ os=WINNT" overrides ' '"content foo foo/win os=WINNT"') # We may start with the more specific entry first f.add_manifest(ManifestContent('chrome', 'bar', 'bar/win', 'os=WINNT')) # Then adding a more generic one overrides it. with self.assertRaises(ErrorMessage) as e: f.add_manifest(ManifestContent('chrome', 'bar', 'bar/unix')) self.assertEqual(e.exception.message, 'Error: "content bar bar/unix" overrides ' '"content bar bar/win os=WINNT"') # Adding something more specific still works. f.add_manifest(ManifestContent('chrome', 'bar', 'bar/win', 'os=WINNT osversion>=7.0')) # Variations of skin/locales are allowed. f.add_manifest(ManifestSkin('chrome', 'foo', 'classic/1.0', 'foo/skin/classic/')) f.add_manifest(ManifestSkin('chrome', 'foo', 'modern/1.0', 'foo/skin/modern/')) f.add_manifest(ManifestLocale('chrome', 'foo', 'en-US', 'foo/locale/en-US/')) f.add_manifest(ManifestLocale('chrome', 'foo', 'ja-JP', 'foo/locale/ja-JP/')) # But same-skin/locale still error out. with self.assertRaises(ErrorMessage) as e: f.add_manifest(ManifestSkin('chrome', 'foo', 'classic/1.0', 'foo/skin/classic/foo')) self.assertEqual(e.exception.message, 'Error: "skin foo classic/1.0 foo/skin/classic/foo" overrides ' '"skin foo classic/1.0 foo/skin/classic/"') with self.assertRaises(ErrorMessage) as e: f.add_manifest(ManifestLocale('chrome', 'foo', 'en-US', 'foo/locale/en-US/foo')) self.assertEqual(e.exception.message, 'Error: "locale foo en-US foo/locale/en-US/foo" overrides ' '"locale foo en-US foo/locale/en-US/"') # Duplicating existing manifest entries is not an error. f.add_manifest(ManifestContent('chrome', 'foo', 'foo/unix')) self.assertEqual(self.get_output(), [ 'Warning: "content foo foo/unix" is duplicated. Skipping.', ])
def test_chrome_override(self): registry = FileRegistry() f = FlatFormatter(registry) f.add_base('') f.add_manifest(ManifestContent('chrome', 'foo', 'foo/unix')) # A more specific entry for a given chrome name can override a more # generic one. f.add_manifest(ManifestContent('chrome', 'foo', 'foo/win', 'os=WINNT')) f.add_manifest(ManifestContent('chrome', 'foo', 'foo/osx', 'os=Darwin')) # Chrome with the same name overrides the previous registration. with self.assertRaises(ErrorMessage) as e: f.add_manifest(ManifestContent('chrome', 'foo', 'foo/')) self.assertEqual( e.exception.message, 'Error: "content foo foo/" overrides ' '"content foo foo/unix"') # Chrome with the same name and same flags overrides the previous # registration. with self.assertRaises(ErrorMessage) as e: f.add_manifest(ManifestContent('chrome', 'foo', 'foo/', 'os=WINNT')) self.assertEqual( e.exception.message, 'Error: "content foo foo/ os=WINNT" overrides ' '"content foo foo/win os=WINNT"') # We may start with the more specific entry first f.add_manifest(ManifestContent('chrome', 'bar', 'bar/win', 'os=WINNT')) # Then adding a more generic one overrides it. with self.assertRaises(ErrorMessage) as e: f.add_manifest(ManifestContent('chrome', 'bar', 'bar/unix')) self.assertEqual( e.exception.message, 'Error: "content bar bar/unix" overrides ' '"content bar bar/win os=WINNT"') # Adding something more specific still works. f.add_manifest( ManifestContent('chrome', 'bar', 'bar/win', 'os=WINNT osversion>=7.0'))
def test_chrome_override(self): registry = FileRegistry() f = FlatFormatter(registry) f.add_base('') f.add_manifest(ManifestContent('chrome', 'foo', 'foo/unix')) # A more specific entry for a given chrome name can override a more # generic one. f.add_manifest(ManifestContent('chrome', 'foo', 'foo/win', 'os=WINNT')) f.add_manifest(ManifestContent('chrome', 'foo', 'foo/osx', 'os=Darwin')) # Chrome with the same name overrides the previous registration. with self.assertRaises(ErrorMessage) as e: f.add_manifest(ManifestContent('chrome', 'foo', 'foo/')) self.assertEqual(e.exception.message, 'Error: "content foo foo/" overrides ' '"content foo foo/unix"') # Chrome with the same name and same flags overrides the previous # registration. with self.assertRaises(ErrorMessage) as e: f.add_manifest(ManifestContent('chrome', 'foo', 'foo/', 'os=WINNT')) self.assertEqual(e.exception.message, 'Error: "content foo foo/ os=WINNT" overrides ' '"content foo foo/win os=WINNT"') # We may start with the more specific entry first f.add_manifest(ManifestContent('chrome', 'bar', 'bar/win', 'os=WINNT')) # Then adding a more generic one overrides it. with self.assertRaises(ErrorMessage) as e: f.add_manifest(ManifestContent('chrome', 'bar', 'bar/unix')) self.assertEqual(e.exception.message, 'Error: "content bar bar/unix" overrides ' '"content bar bar/win os=WINNT"') # Adding something more specific still works. f.add_manifest(ManifestContent('chrome', 'bar', 'bar/win', 'os=WINNT osversion>=7.0'))