def test_errors_context(self): with self.assertRaises(AccumulatedErrors): with errors.accumulate(): self.assertEqual(errors.get_context(), None) with errors.context('foo', 1): self.assertEqual(errors.get_context(), ('foo', 1)) errors.error('a') with errors.context('bar', 2): self.assertEqual(errors.get_context(), ('bar', 2)) errors.error('b') self.assertEqual(errors.get_context(), ('foo', 1)) errors.error('c') self.assertEqual(self.get_output(), [ 'Error: foo:1: a', 'Error: bar:2: b', 'Error: foo:1: c', ])
def execute(self): while True: try: context, function, args = self.popleft() except IndexError: return if context: with errors.context(context[0], context[1]): function(*args) else: function(*args)
def execute(self): while True: try: context, function, args = self.popleft() except IndexError: return if context: with errors.context(context[0], context[1]): function(*args) else: function(*args)
def test_errors_context(self): with self.assertRaises(AccumulatedErrors): with errors.accumulate(): self.assertEqual(errors.get_context(), None) with errors.context("foo", 1): self.assertEqual(errors.get_context(), ("foo", 1)) errors.error("a") with errors.context("bar", 2): self.assertEqual(errors.get_context(), ("bar", 2)) errors.error("b") self.assertEqual(errors.get_context(), ("foo", 1)) errors.error("c") self.assertEqual( self.get_output(), [ "Error: foo:1: a", "Error: bar:2: b", "Error: foo:1: c", ], )
def parse_manifest(root, path, fileobj=None): ''' Parse a manifest file. ''' base = mozpath.dirname(path) if root: path = os.path.normpath(os.path.abspath(os.path.join(root, path))) if not fileobj: fileobj = open(path) linenum = 0 for line in fileobj: linenum += 1 with errors.context(path, linenum): e = parse_manifest_line(base, line) if e: yield e
def parse_manifest(root, path, fileobj=None): ''' Parse a manifest file. ''' base = mozpath.dirname(path) if root: path = os.path.normpath(os.path.abspath(os.path.join(root, path))) if not fileobj: fileobj = open(path) linenum = 0 for line in fileobj: linenum += 1 with errors.context(path, linenum): e = parse_manifest_line(base, line) if e: yield e
def parse_manifest(root, path, fileobj=None): ''' Parse a manifest file. ''' base = mozpath.dirname(path) if root: path = os.path.normpath(os.path.abspath(os.path.join(root, path))) if not fileobj: try: fileobj = open(path) except Exception as e: print("File " + path + " can not be open.") return linenum = 0 for line in fileobj: linenum += 1 with errors.context(path, linenum): e = parse_manifest_line(base, line) if e: yield e
def test_simple_packager(self): class GeneratedFileWithPath(GeneratedFile): def __init__(self, path, content): GeneratedFile.__init__(self, content) self.path = path formatter = MockFormatter() packager = SimplePackager(formatter) curdir = os.path.abspath(os.curdir) file = GeneratedFileWithPath( os.path.join(curdir, 'foo', 'bar.manifest'), 'resource bar bar/\ncontent bar bar/') with errors.context('manifest', 1): packager.add('foo/bar.manifest', file) file = GeneratedFileWithPath( os.path.join(curdir, 'foo', 'baz.manifest'), 'resource baz baz/') with errors.context('manifest', 2): packager.add('bar/baz.manifest', file) with errors.context('manifest', 3): packager.add('qux/qux.manifest', GeneratedFile('resource qux qux/')) bar_xpt = GeneratedFile('bar.xpt') qux_xpt = GeneratedFile('qux.xpt') foo_html = GeneratedFile('foo_html') bar_html = GeneratedFile('bar_html') with errors.context('manifest', 4): packager.add('foo/bar.xpt', bar_xpt) with errors.context('manifest', 5): packager.add('foo/bar/foo.html', foo_html) packager.add('foo/bar/bar.html', bar_html) file = GeneratedFileWithPath( os.path.join(curdir, 'foo.manifest'), ''.join([ 'manifest foo/bar.manifest\n', 'manifest bar/baz.manifest\n', ])) with errors.context('manifest', 6): packager.add('foo.manifest', file) with errors.context('manifest', 7): packager.add('foo/qux.xpt', qux_xpt) self.assertEqual(formatter.log, []) with errors.context('dummy', 1): packager.close() self.maxDiff = None self.assertEqual(formatter.log, [ (('dummy', 1), 'add_base', 'qux'), ((os.path.join(curdir, 'foo', 'bar.manifest'), 1), 'add_manifest', ManifestResource('foo', 'bar', 'bar/')), ((os.path.join(curdir, 'foo', 'bar.manifest'), 2), 'add_manifest', ManifestContent('foo', 'bar', 'bar/')), (('bar/baz.manifest', 1), 'add_manifest', ManifestResource('bar', 'baz', 'baz/')), (('qux/qux.manifest', 1), 'add_manifest', ManifestResource('qux', 'qux', 'qux/')), (('manifest', 4), 'add_interfaces', 'foo/bar.xpt', bar_xpt), (('manifest', 7), 'add_interfaces', 'foo/qux.xpt', qux_xpt), (('manifest', 5), 'add', 'foo/bar/foo.html', foo_html), (('manifest', 5), 'add', 'foo/bar/bar.html', bar_html), ]) self.assertEqual(packager.get_bases(), set(['', 'qux']))
def write(self, str): with errors.context(self._pp.context['FILE'], self._pp.context['LINE']): self._parser.handle_line(str)
def test_simple_packager(self): class GeneratedFileWithPath(GeneratedFile): def __init__(self, path, content): GeneratedFile.__init__(self, content) self.path = path formatter = MockFormatter() packager = SimplePackager(formatter) curdir = os.path.abspath(os.curdir) file = GeneratedFileWithPath(os.path.join(curdir, 'foo', 'bar.manifest'), 'resource bar bar/\ncontent bar bar/') with errors.context('manifest', 1): packager.add('foo/bar.manifest', file) file = GeneratedFileWithPath(os.path.join(curdir, 'foo', 'baz.manifest'), 'resource baz baz/') with errors.context('manifest', 2): packager.add('bar/baz.manifest', file) with errors.context('manifest', 3): packager.add('qux/qux.manifest', GeneratedFile('resource qux qux/')) bar_xpt = GeneratedFile('bar.xpt') qux_xpt = GeneratedFile('qux.xpt') foo_html = GeneratedFile('foo_html') bar_html = GeneratedFile('bar_html') with errors.context('manifest', 4): packager.add('foo/bar.xpt', bar_xpt) with errors.context('manifest', 5): packager.add('foo/bar/foo.html', foo_html) packager.add('foo/bar/bar.html', bar_html) file = GeneratedFileWithPath(os.path.join(curdir, 'foo.manifest'), ''.join([ 'manifest foo/bar.manifest\n', 'manifest bar/baz.manifest\n', ])) with errors.context('manifest', 6): packager.add('foo.manifest', file) with errors.context('manifest', 7): packager.add('foo/qux.xpt', qux_xpt) file = GeneratedFileWithPath(os.path.join(curdir, 'addon', 'chrome.manifest'), 'resource hoge hoge/') with errors.context('manifest', 8): packager.add('addon/chrome.manifest', file) install_rdf = GeneratedFile('<RDF></RDF>') with errors.context('manifest', 9): packager.add('addon/install.rdf', install_rdf) self.assertEqual(formatter.log, []) with errors.context('dummy', 1): packager.close() self.maxDiff = None # The formatter is expected to reorder the manifest entries so that # chrome entries appear before the others. self.assertEqual(formatter.log, [ (('dummy', 1), 'add_base', 'qux', False), (('dummy', 1), 'add_base', 'addon', True), ((os.path.join(curdir, 'foo', 'bar.manifest'), 2), 'add_manifest', ManifestContent('foo', 'bar', 'bar/')), ((os.path.join(curdir, 'foo', 'bar.manifest'), 1), 'add_manifest', ManifestResource('foo', 'bar', 'bar/')), (('bar/baz.manifest', 1), 'add_manifest', ManifestResource('bar', 'baz', 'baz/')), (('qux/qux.manifest', 1), 'add_manifest', ManifestResource('qux', 'qux', 'qux/')), (('manifest', 4), 'add_interfaces', 'foo/bar.xpt', bar_xpt), (('manifest', 7), 'add_interfaces', 'foo/qux.xpt', qux_xpt), ((os.path.join(curdir, 'addon', 'chrome.manifest'), 1), 'add_manifest', ManifestResource('addon', 'hoge', 'hoge/')), (('manifest', 5), 'add', 'foo/bar/foo.html', foo_html), (('manifest', 5), 'add', 'foo/bar/bar.html', bar_html), (('manifest', 9), 'add', 'addon/install.rdf', install_rdf), ]) self.assertEqual(packager.get_bases(), set(['', 'addon', 'qux'])) self.assertEqual(packager.get_bases(addons=False), set(['', 'qux']))
def write(self, str): file = os.path.normpath(os.path.abspath(self._pp.context['FILE'])) with errors.context(file, self._pp.context['LINE']): self._parser.handle_line(str)
def test_simple_packager(self): class GeneratedFileWithPath(GeneratedFile): def __init__(self, path, content): GeneratedFile.__init__(self, content) self.path = path formatter = MockFormatter() packager = SimplePackager(formatter) curdir = os.path.abspath(os.curdir) file = GeneratedFileWithPath(os.path.join(curdir, 'foo', 'bar.manifest'), 'resource bar bar/\ncontent bar bar/') with errors.context('manifest', 1): packager.add('foo/bar.manifest', file) file = GeneratedFileWithPath(os.path.join(curdir, 'foo', 'baz.manifest'), 'resource baz baz/') with errors.context('manifest', 2): packager.add('bar/baz.manifest', file) with errors.context('manifest', 3): packager.add('qux/qux.manifest', GeneratedFile(''.join([ 'resource qux qux/\n', 'binary-component qux.so\n', ]))) bar_xpt = GeneratedFile('bar.xpt') qux_xpt = GeneratedFile('qux.xpt') foo_html = GeneratedFile('foo_html') bar_html = GeneratedFile('bar_html') with errors.context('manifest', 4): packager.add('foo/bar.xpt', bar_xpt) with errors.context('manifest', 5): packager.add('foo/bar/foo.html', foo_html) packager.add('foo/bar/bar.html', bar_html) file = GeneratedFileWithPath(os.path.join(curdir, 'foo.manifest'), ''.join([ 'manifest foo/bar.manifest\n', 'manifest bar/baz.manifest\n', ])) with errors.context('manifest', 6): packager.add('foo.manifest', file) with errors.context('manifest', 7): packager.add('foo/qux.xpt', qux_xpt) file = GeneratedFileWithPath(os.path.join(curdir, 'addon', 'chrome.manifest'), 'resource hoge hoge/') with errors.context('manifest', 8): packager.add('addon/chrome.manifest', file) install_rdf = GeneratedFile('<RDF></RDF>') with errors.context('manifest', 9): packager.add('addon/install.rdf', install_rdf) with errors.context('manifest', 10): packager.add('addon2/install.rdf', install_rdf) packager.add('addon2/chrome.manifest', GeneratedFile('binary-component addon2.so')) with errors.context('manifest', 11): packager.add('addon3/install.rdf', install_rdf) packager.add('addon3/chrome.manifest', GeneratedFile( 'manifest components/components.manifest')) packager.add('addon3/components/components.manifest', GeneratedFile('binary-component addon3.so')) with errors.context('manifest', 12): install_rdf_addon4 = GeneratedFile( '<RDF>\n<...>\n<em:unpack>true</em:unpack>\n<...>\n</RDF>') packager.add('addon4/install.rdf', install_rdf_addon4) with errors.context('manifest', 13): install_rdf_addon5 = GeneratedFile( '<RDF>\n<...>\n<em:unpack>false</em:unpack>\n<...>\n</RDF>') packager.add('addon5/install.rdf', install_rdf_addon5) with errors.context('manifest', 14): install_rdf_addon6 = GeneratedFile( '<RDF>\n<... em:unpack=true>\n<...>\n</RDF>') packager.add('addon6/install.rdf', install_rdf_addon6) with errors.context('manifest', 15): install_rdf_addon7 = GeneratedFile( '<RDF>\n<... em:unpack=false>\n<...>\n</RDF>') packager.add('addon7/install.rdf', install_rdf_addon7) with errors.context('manifest', 16): install_rdf_addon8 = GeneratedFile( '<RDF>\n<... em:unpack="true">\n<...>\n</RDF>') packager.add('addon8/install.rdf', install_rdf_addon8) with errors.context('manifest', 17): install_rdf_addon9 = GeneratedFile( '<RDF>\n<... em:unpack="false">\n<...>\n</RDF>') packager.add('addon9/install.rdf', install_rdf_addon9) with errors.context('manifest', 18): install_rdf_addon10 = GeneratedFile( '<RDF>\n<... em:unpack=\'true\'>\n<...>\n</RDF>') packager.add('addon10/install.rdf', install_rdf_addon10) with errors.context('manifest', 19): install_rdf_addon11 = GeneratedFile( '<RDF>\n<... em:unpack=\'false\'>\n<...>\n</RDF>') packager.add('addon11/install.rdf', install_rdf_addon11) we_manifest = GeneratedFile( '{"manifest_version": 2, "name": "Test WebExtension", "version": "1.0"}') # hybrid and hybrid2 are both bootstrapped extensions with # embedded webextensions, they differ in the order in which # the manifests are added to the packager. with errors.context('manifest', 20): packager.add('hybrid/install.rdf', install_rdf) with errors.context('manifest', 21): packager.add('hybrid/webextension/manifest.json', we_manifest) with errors.context('manifest', 22): packager.add('hybrid2/webextension/manifest.json', we_manifest) with errors.context('manifest', 23): packager.add('hybrid2/install.rdf', install_rdf) with errors.context('manifest', 24): packager.add('webextension/manifest.json', we_manifest) non_we_manifest = GeneratedFile('{"not a webextension": true}') with errors.context('manifest', 25): packager.add('nonwebextension/manifest.json', non_we_manifest) self.assertEqual(formatter.log, []) with errors.context('dummy', 1): packager.close() self.maxDiff = None # The formatter is expected to reorder the manifest entries so that # chrome entries appear before the others. self.assertEqual(formatter.log, [ (('dummy', 1), 'add_base', '', False), (('dummy', 1), 'add_base', 'addon', True), (('dummy', 1), 'add_base', 'addon10', 'unpacked'), (('dummy', 1), 'add_base', 'addon11', True), (('dummy', 1), 'add_base', 'addon2', 'unpacked'), (('dummy', 1), 'add_base', 'addon3', 'unpacked'), (('dummy', 1), 'add_base', 'addon4', 'unpacked'), (('dummy', 1), 'add_base', 'addon5', True), (('dummy', 1), 'add_base', 'addon6', 'unpacked'), (('dummy', 1), 'add_base', 'addon7', True), (('dummy', 1), 'add_base', 'addon8', 'unpacked'), (('dummy', 1), 'add_base', 'addon9', True), (('dummy', 1), 'add_base', 'hybrid', True), (('dummy', 1), 'add_base', 'hybrid2', True), (('dummy', 1), 'add_base', 'qux', False), (('dummy', 1), 'add_base', 'webextension', True), ((os.path.join(curdir, 'foo', 'bar.manifest'), 2), 'add_manifest', ManifestContent('foo', 'bar', 'bar/')), ((os.path.join(curdir, 'foo', 'bar.manifest'), 1), 'add_manifest', ManifestResource('foo', 'bar', 'bar/')), (('bar/baz.manifest', 1), 'add_manifest', ManifestResource('bar', 'baz', 'baz/')), (('qux/qux.manifest', 1), 'add_manifest', ManifestResource('qux', 'qux', 'qux/')), (('qux/qux.manifest', 2), 'add_manifest', ManifestBinaryComponent('qux', 'qux.so')), (('manifest', 4), 'add_interfaces', 'foo/bar.xpt', bar_xpt), (('manifest', 7), 'add_interfaces', 'foo/qux.xpt', qux_xpt), ((os.path.join(curdir, 'addon', 'chrome.manifest'), 1), 'add_manifest', ManifestResource('addon', 'hoge', 'hoge/')), (('addon2/chrome.manifest', 1), 'add_manifest', ManifestBinaryComponent('addon2', 'addon2.so')), (('addon3/components/components.manifest', 1), 'add_manifest', ManifestBinaryComponent('addon3/components', 'addon3.so')), (('manifest', 5), 'add', 'foo/bar/foo.html', foo_html), (('manifest', 5), 'add', 'foo/bar/bar.html', bar_html), (('manifest', 9), 'add', 'addon/install.rdf', install_rdf), (('manifest', 10), 'add', 'addon2/install.rdf', install_rdf), (('manifest', 11), 'add', 'addon3/install.rdf', install_rdf), (('manifest', 12), 'add', 'addon4/install.rdf', install_rdf_addon4), (('manifest', 13), 'add', 'addon5/install.rdf', install_rdf_addon5), (('manifest', 14), 'add', 'addon6/install.rdf', install_rdf_addon6), (('manifest', 15), 'add', 'addon7/install.rdf', install_rdf_addon7), (('manifest', 16), 'add', 'addon8/install.rdf', install_rdf_addon8), (('manifest', 17), 'add', 'addon9/install.rdf', install_rdf_addon9), (('manifest', 18), 'add', 'addon10/install.rdf', install_rdf_addon10), (('manifest', 19), 'add', 'addon11/install.rdf', install_rdf_addon11), (('manifest', 20), 'add', 'hybrid/install.rdf', install_rdf), (('manifest', 21), 'add', 'hybrid/webextension/manifest.json', we_manifest), (('manifest', 22), 'add', 'hybrid2/webextension/manifest.json', we_manifest), (('manifest', 23), 'add', 'hybrid2/install.rdf', install_rdf), (('manifest', 24), 'add', 'webextension/manifest.json', we_manifest), (('manifest', 25), 'add', 'nonwebextension/manifest.json', non_we_manifest), ]) self.assertEqual(packager.get_bases(), set(['', 'addon', 'addon2', 'addon3', 'addon4', 'addon5', 'addon6', 'addon7', 'addon8', 'addon9', 'addon10', 'addon11', 'qux', 'hybrid', 'hybrid2', 'webextension'])) self.assertEqual(packager.get_bases(addons=False), set(['', 'qux']))
def write(self, str): file = os.path.normpath(os.path.abspath(self._pp.context['FILE'])) with errors.context(file, self._pp.context['LINE']): self._parser.handle_line(str)
def test_simple_packager(self): class GeneratedFileWithPath(GeneratedFile): def __init__(self, path, content): GeneratedFile.__init__(self, content) self.path = path formatter = MockFormatter() packager = SimplePackager(formatter) curdir = os.path.abspath(os.curdir) file = GeneratedFileWithPath(os.path.join(curdir, 'foo', 'bar.manifest'), 'resource bar bar/\ncontent bar bar/') with errors.context('manifest', 1): packager.add('foo/bar.manifest', file) file = GeneratedFileWithPath(os.path.join(curdir, 'foo', 'baz.manifest'), 'resource baz baz/') with errors.context('manifest', 2): packager.add('bar/baz.manifest', file) with errors.context('manifest', 3): packager.add('qux/qux.manifest', GeneratedFile('resource qux qux/')) bar_xpt = GeneratedFile('bar.xpt') qux_xpt = GeneratedFile('qux.xpt') foo_html = GeneratedFile('foo_html') bar_html = GeneratedFile('bar_html') with errors.context('manifest', 4): packager.add('foo/bar.xpt', bar_xpt) with errors.context('manifest', 5): packager.add('foo/bar/foo.html', foo_html) packager.add('foo/bar/bar.html', bar_html) file = GeneratedFileWithPath(os.path.join(curdir, 'foo.manifest'), ''.join([ 'manifest foo/bar.manifest\n', 'manifest bar/baz.manifest\n', ])) with errors.context('manifest', 6): packager.add('foo.manifest', file) with errors.context('manifest', 7): packager.add('foo/qux.xpt', qux_xpt) self.assertEqual(formatter.log, []) with errors.context('dummy', 1): packager.close() self.maxDiff = None self.assertEqual(formatter.log, [ (('dummy', 1), 'add_base', 'qux'), ((os.path.join(curdir, 'foo', 'bar.manifest'), 1), 'add_manifest', ManifestResource('foo', 'bar', 'bar/')), ((os.path.join(curdir, 'foo', 'bar.manifest'), 2), 'add_manifest', ManifestContent('foo', 'bar', 'bar/')), (('bar/baz.manifest', 1), 'add_manifest', ManifestResource('bar', 'baz', 'baz/')), (('qux/qux.manifest', 1), 'add_manifest', ManifestResource('qux', 'qux', 'qux/')), (('manifest', 4), 'add_interfaces', 'foo/bar.xpt', bar_xpt), (('manifest', 7), 'add_interfaces', 'foo/qux.xpt', qux_xpt), (('manifest', 5), 'add', 'foo/bar/foo.html', foo_html), (('manifest', 5), 'add', 'foo/bar/bar.html', bar_html), ]) self.assertEqual(packager.get_bases(), set(['', 'qux']))
def test_simple_packager(self): class GeneratedFileWithPath(GeneratedFile): def __init__(self, path, content): GeneratedFile.__init__(self, content) self.path = path formatter = MockFormatter() packager = SimplePackager(formatter) curdir = os.path.abspath(os.curdir) file = GeneratedFileWithPath(os.path.join(curdir, 'foo', 'bar.manifest'), 'resource bar bar/\ncontent bar bar/') with errors.context('manifest', 1): packager.add('foo/bar.manifest', file) file = GeneratedFileWithPath(os.path.join(curdir, 'foo', 'baz.manifest'), 'resource baz baz/') with errors.context('manifest', 2): packager.add('bar/baz.manifest', file) with errors.context('manifest', 3): packager.add('qux/qux.manifest', GeneratedFile(''.join([ 'resource qux qux/\n', 'binary-component qux.so\n', ]))) bar_xpt = GeneratedFile('bar.xpt') qux_xpt = GeneratedFile('qux.xpt') foo_html = GeneratedFile('foo_html') bar_html = GeneratedFile('bar_html') with errors.context('manifest', 4): packager.add('foo/bar.xpt', bar_xpt) with errors.context('manifest', 5): packager.add('foo/bar/foo.html', foo_html) packager.add('foo/bar/bar.html', bar_html) file = GeneratedFileWithPath(os.path.join(curdir, 'foo.manifest'), ''.join([ 'manifest foo/bar.manifest\n', 'manifest bar/baz.manifest\n', ])) with errors.context('manifest', 6): packager.add('foo.manifest', file) with errors.context('manifest', 7): packager.add('foo/qux.xpt', qux_xpt) file = GeneratedFileWithPath(os.path.join(curdir, 'addon', 'chrome.manifest'), 'resource hoge hoge/') with errors.context('manifest', 8): packager.add('addon/chrome.manifest', file) install_rdf = GeneratedFile('<RDF></RDF>') with errors.context('manifest', 9): packager.add('addon/install.rdf', install_rdf) with errors.context('manifest', 10): packager.add('addon2/install.rdf', install_rdf) packager.add('addon2/chrome.manifest', GeneratedFile('binary-component addon2.so')) with errors.context('manifest', 11): packager.add('addon3/install.rdf', install_rdf) packager.add('addon3/chrome.manifest', GeneratedFile( 'manifest components/components.manifest')) packager.add('addon3/components/components.manifest', GeneratedFile('binary-component addon3.so')) with errors.context('manifest', 12): install_rdf_addon4 = GeneratedFile( '<RDF>\n<...>\n<em:unpack>true</em:unpack>\n<...>\n</RDF>') packager.add('addon4/install.rdf', install_rdf_addon4) with errors.context('manifest', 13): install_rdf_addon5 = GeneratedFile( '<RDF>\n<...>\n<em:unpack>false</em:unpack>\n<...>\n</RDF>') packager.add('addon5/install.rdf', install_rdf_addon5) with errors.context('manifest', 14): install_rdf_addon6 = GeneratedFile( '<RDF>\n<... em:unpack=true>\n<...>\n</RDF>') packager.add('addon6/install.rdf', install_rdf_addon6) with errors.context('manifest', 15): install_rdf_addon7 = GeneratedFile( '<RDF>\n<... em:unpack=false>\n<...>\n</RDF>') packager.add('addon7/install.rdf', install_rdf_addon7) with errors.context('manifest', 16): install_rdf_addon8 = GeneratedFile( '<RDF>\n<... em:unpack="true">\n<...>\n</RDF>') packager.add('addon8/install.rdf', install_rdf_addon8) with errors.context('manifest', 17): install_rdf_addon9 = GeneratedFile( '<RDF>\n<... em:unpack="false">\n<...>\n</RDF>') packager.add('addon9/install.rdf', install_rdf_addon9) with errors.context('manifest', 18): install_rdf_addon10 = GeneratedFile( '<RDF>\n<... em:unpack=\'true\'>\n<...>\n</RDF>') packager.add('addon10/install.rdf', install_rdf_addon10) with errors.context('manifest', 19): install_rdf_addon11 = GeneratedFile( '<RDF>\n<... em:unpack=\'false\'>\n<...>\n</RDF>') packager.add('addon11/install.rdf', install_rdf_addon11) self.assertEqual(formatter.log, []) with errors.context('dummy', 1): packager.close() self.maxDiff = None # The formatter is expected to reorder the manifest entries so that # chrome entries appear before the others. self.assertEqual(formatter.log, [ (('dummy', 1), 'add_base', '', False), (('dummy', 1), 'add_base', 'addon', True), (('dummy', 1), 'add_base', 'addon10', 'unpacked'), (('dummy', 1), 'add_base', 'addon11', True), (('dummy', 1), 'add_base', 'addon2', 'unpacked'), (('dummy', 1), 'add_base', 'addon3', 'unpacked'), (('dummy', 1), 'add_base', 'addon4', 'unpacked'), (('dummy', 1), 'add_base', 'addon5', True), (('dummy', 1), 'add_base', 'addon6', 'unpacked'), (('dummy', 1), 'add_base', 'addon7', True), (('dummy', 1), 'add_base', 'addon8', 'unpacked'), (('dummy', 1), 'add_base', 'addon9', True), (('dummy', 1), 'add_base', 'qux', False), ((os.path.join(curdir, 'foo', 'bar.manifest'), 2), 'add_manifest', ManifestContent('foo', 'bar', 'bar/')), ((os.path.join(curdir, 'foo', 'bar.manifest'), 1), 'add_manifest', ManifestResource('foo', 'bar', 'bar/')), (('bar/baz.manifest', 1), 'add_manifest', ManifestResource('bar', 'baz', 'baz/')), (('qux/qux.manifest', 1), 'add_manifest', ManifestResource('qux', 'qux', 'qux/')), (('qux/qux.manifest', 2), 'add_manifest', ManifestBinaryComponent('qux', 'qux.so')), (('manifest', 4), 'add_interfaces', 'foo/bar.xpt', bar_xpt), (('manifest', 7), 'add_interfaces', 'foo/qux.xpt', qux_xpt), ((os.path.join(curdir, 'addon', 'chrome.manifest'), 1), 'add_manifest', ManifestResource('addon', 'hoge', 'hoge/')), (('addon2/chrome.manifest', 1), 'add_manifest', ManifestBinaryComponent('addon2', 'addon2.so')), (('addon3/components/components.manifest', 1), 'add_manifest', ManifestBinaryComponent('addon3/components', 'addon3.so')), (('manifest', 5), 'add', 'foo/bar/foo.html', foo_html), (('manifest', 5), 'add', 'foo/bar/bar.html', bar_html), (('manifest', 9), 'add', 'addon/install.rdf', install_rdf), (('manifest', 10), 'add', 'addon2/install.rdf', install_rdf), (('manifest', 11), 'add', 'addon3/install.rdf', install_rdf), (('manifest', 12), 'add', 'addon4/install.rdf', install_rdf_addon4), (('manifest', 13), 'add', 'addon5/install.rdf', install_rdf_addon5), (('manifest', 14), 'add', 'addon6/install.rdf', install_rdf_addon6), (('manifest', 15), 'add', 'addon7/install.rdf', install_rdf_addon7), (('manifest', 16), 'add', 'addon8/install.rdf', install_rdf_addon8), (('manifest', 17), 'add', 'addon9/install.rdf', install_rdf_addon9), (('manifest', 18), 'add', 'addon10/install.rdf', install_rdf_addon10), (('manifest', 19), 'add', 'addon11/install.rdf', install_rdf_addon11), ]) self.assertEqual(packager.get_bases(), set(['', 'addon', 'addon2', 'addon3', 'addon4', 'addon5', 'addon6', 'addon7', 'addon8', 'addon9', 'addon10', 'addon11', 'qux'])) self.assertEqual(packager.get_bases(addons=False), set(['', 'qux']))
def write(self, str): with errors.context(self._pp.context["FILE"], self._pp.context["LINE"]): self._parser.handle_line(str)