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')
Example #2
0
    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_jar_formatter(self):
        registry = FileRegistry()
        formatter = JarFormatter(registry)

        fill_formatter(formatter, CONTENTS)

        RESULT = {
            "chrome.manifest": ["manifest chrome/chrome.manifest", "manifest components/components.manifest"],
            "chrome/chrome.manifest": ["manifest f/f.manifest"],
            "chrome/f/f.manifest": [
                "content oo jar:oo.jar!/",
                "content bar jar:oo.jar!/bar/",
                "resource foo resource://bar/",
            ],
            "chrome/f/oo.jar": {
                "bar/baz": CONTENTS["chrome/f/oo/bar/baz"],
                "baz": CONTENTS["chrome/f/oo/baz"],
                "qux": CONTENTS["chrome/f/oo/qux"],
            },
            "components/components.manifest": ["binary-component foo.so", "interfaces interfaces.xpt"],
            "components/foo.so": CONTENTS["components/foo.so"],
            "components/interfaces.xpt": {
                "foo": read_interfaces(foo_xpt.open())["foo"],
                "bar": read_interfaces(bar_xpt.open())["bar"],
            },
            "foo": CONTENTS["foo"],
            "app/chrome.manifest": ["manifest chrome/chrome.manifest", "manifest components/components.manifest"],
            "app/chrome/chrome.manifest": ["content content jar:foo.jar!/"],
            "app/chrome/foo.jar": {"foo": CONTENTS["app/chrome/foo/foo"]},
            "app/components/components.manifest": ["component {foo-id} foo.js"],
            "app/components/foo.js": CONTENTS["app/components/foo.js"],
            "addon0/chrome.manifest": ["manifest chrome/chrome.manifest", "manifest components/components.manifest"],
            "addon0/chrome/chrome.manifest": ["content content jar:foo.jar!/bar/"],
            "addon0/chrome/foo.jar": {"bar/baz": CONTENTS["addon0/chrome/foo/bar/baz"]},
            "addon0/components/components.manifest": ["interfaces interfaces.xpt"],
            "addon0/components/interfaces.xpt": {
                "foo": read_interfaces(foo2_xpt.open())["foo"],
                "bar": read_interfaces(bar_xpt.open())["bar"],
            },
        }

        self.assertEqual(get_contents(registry), RESULT)
Example #4
0
def get_contents(registry, read_all=False):
    result = {}
    for k, v in registry:
        if k.endswith('.xpt'):
            tmpfile = MockDest()
            registry[k].copy(tmpfile)
            result[k] = read_interfaces(tmpfile)
        elif isinstance(v, FileRegistry):
            result[k] = get_contents(v)
        elif isinstance(v, ManifestFile) or read_all:
            result[k] = v.open().read().splitlines()
        else:
            result[k] = v
    return result
def get_contents(registry, read_all=False):
    result = {}
    for k, v in registry:
        if k.endswith('.xpt'):
            tmpfile = MockDest()
            registry[k].copy(tmpfile)
            result[k] = read_interfaces(tmpfile)
        elif isinstance(v, FileRegistry):
            result[k] = get_contents(v)
        elif isinstance(v, ManifestFile) or read_all:
            result[k] = v.open().read().splitlines()
        else:
            result[k] = v
    return result
Example #6
0
 ],
 'chrome/f/f.manifest': [
     'content oo oo/',
     'content bar oo/bar/',
     'resource foo resource://bar/',
 ],
 'chrome/f/oo/bar/baz': FILES['chrome/f/oo/bar/baz'],
 'chrome/f/oo/baz': FILES['chrome/f/oo/baz'],
 'chrome/f/oo/qux': FILES['chrome/f/oo/qux'],
 'components/components.manifest': [
     'binary-component foo.so',
     'interfaces interfaces.xpt',
 ],
 'components/foo.so': FILES['components/foo.so'],
 'components/interfaces.xpt': {
     'foo': read_interfaces(foo_xpt.open())['foo'],
     'bar': read_interfaces(bar_xpt.open())['bar'],
 },
 'foo': FILES['foo'],
 'app/chrome.manifest': [
     'manifest chrome/chrome.manifest',
     'manifest components/components.manifest',
 ],
 'app/chrome/chrome.manifest': [
     'content content foo/',
 ],
 'app/chrome/foo/foo': FILES['app/chrome/foo/foo'],
 'app/components/components.manifest': [
     'component {foo-id} foo.js',
 ],
 'app/components/foo.js': FILES['app/components/foo.js'],
 ],
 'chrome/f/f.manifest': [
     'content oo oo/',
     'content bar oo/bar/',
     'resource foo resource://bar/',
 ],
 'chrome/f/oo/bar/baz': FILES['chrome/f/oo/bar/baz'],
 'chrome/f/oo/baz': FILES['chrome/f/oo/baz'],
 'chrome/f/oo/qux': FILES['chrome/f/oo/qux'],
 'components/components.manifest': [
     'binary-component foo.so',
     'interfaces interfaces.xpt',
 ],
 'components/foo.so': FILES['components/foo.so'],
 'components/interfaces.xpt': {
     'foo': read_interfaces(foo_xpt.open())['foo'],
     'bar': read_interfaces(bar_xpt.open())['bar'],
 },
 'foo': FILES['foo'],
 'app/chrome.manifest': [
     'manifest chrome/chrome.manifest',
     'manifest components/components.manifest',
 ],
 'app/chrome/chrome.manifest': [
     'content content foo/',
 ],
 'app/chrome/foo/foo': FILES['app/chrome/foo/foo'],
 'app/components/components.manifest': [
     'component {foo-id} foo.js',
 ],
 'app/components/foo.js': FILES['app/components/foo.js'],
    def test_omnijar_formatter(self):
        registry = FileRegistry()
        formatter = OmniJarFormatter(registry, 'omni.foo')

        fill_formatter(formatter, CONTENTS)

        RESULT = {
            'omni.foo': {
                'chrome.manifest': [
                    'manifest chrome/chrome.manifest',
                    'manifest components/components.manifest',
                ],
                'chrome/chrome.manifest': [
                    'manifest f/f.manifest',
                ],
                'chrome/f/f.manifest': [
                    'content oo oo/',
                    'content bar oo/bar/',
                    'resource foo resource://bar/',
                ],
                'chrome/f/oo/bar/baz':
                CONTENTS['chrome/f/oo/bar/baz'],
                'chrome/f/oo/baz':
                CONTENTS['chrome/f/oo/baz'],
                'chrome/f/oo/qux':
                CONTENTS['chrome/f/oo/qux'],
                'components/components.manifest': [
                    'interfaces interfaces.xpt',
                ],
                'components/interfaces.xpt': {
                    'foo': read_interfaces(foo_xpt.open())['foo'],
                    'bar': read_interfaces(bar_xpt.open())['bar'],
                },
            },
            'chrome.manifest': [
                'manifest components/components.manifest',
            ],
            'components/components.manifest': [
                'binary-component foo.so',
            ],
            'components/foo.so':
            CONTENTS['components/foo.so'],
            'foo':
            CONTENTS['foo'],
            'app/omni.foo': {
                'chrome.manifest': [
                    'manifest chrome/chrome.manifest',
                    'manifest components/components.manifest',
                ],
                'chrome/chrome.manifest': [
                    'content content foo/',
                ],
                'chrome/foo/foo':
                CONTENTS['app/chrome/foo/foo'],
                'components/components.manifest': [
                    'component {foo-id} foo.js',
                ],
                'components/foo.js':
                CONTENTS['app/components/foo.js'],
            },
            'addon0/chrome.manifest': [
                'manifest chrome/chrome.manifest',
                'manifest components/components.manifest',
            ],
            'addon0/chrome/chrome.manifest': [
                'content content jar:foo.jar!/bar/',
            ],
            'addon0/chrome/foo.jar': {
                'bar/baz': CONTENTS['addon0/chrome/foo/bar/baz'],
            },
            'addon0/components/components.manifest': [
                'interfaces interfaces.xpt',
            ],
            'addon0/components/interfaces.xpt': {
                'foo': read_interfaces(foo2_xpt.open())['foo'],
                'bar': read_interfaces(bar_xpt.open())['bar'],
            },
        }
        self.assertEqual(get_contents(registry), RESULT)