def test_parse(self):
        input_file = cStringIO.StringIO(
            textwrap.dedent("""\
            VERSION_1 {
                local:
                    hidden1;
                global:
                    foo;
                    bar; # baz
            };

            VERSION_2 { # wasd
                # Implicit global scope.
                    woodly;
                    doodly; # asdf
                local:
                    qwerty;
            } VERSION_1;
        """))
        parser = gsl.SymbolFileParser(input_file, {})
        versions = parser.parse()

        expected = [
            gsl.Version('VERSION_1', None, [], [
                gsl.Symbol('foo', []),
                gsl.Symbol('bar', ['baz']),
            ]),
            gsl.Version('VERSION_2', 'VERSION_1', ['wasd'], [
                gsl.Symbol('woodly', []),
                gsl.Symbol('doodly', ['asdf']),
            ]),
        ]

        self.assertEqual(expected, versions)
    def test_omit_symbol(self):
        # Thorough testing of the cases involved here is handled by
        # SymbolPresenceTest.
        src_file = cStringIO.StringIO()
        version_file = cStringIO.StringIO()
        generator = gsl.Generator(src_file, version_file, 'arm', 9, False)

        version = gsl.Version('VERSION_1', None, [], [
            gsl.Symbol('foo', ['x86']),
        ])
        generator.write_version(version)
        self.assertEqual('', src_file.getvalue())
        self.assertEqual('', version_file.getvalue())

        version = gsl.Version('VERSION_1', None, [], [
            gsl.Symbol('foo', ['introduced=14']),
        ])
        generator.write_version(version)
        self.assertEqual('', src_file.getvalue())
        self.assertEqual('', version_file.getvalue())

        version = gsl.Version('VERSION_1', None, [], [
            gsl.Symbol('foo', ['vndk']),
        ])
        generator.write_version(version)
        self.assertEqual('', src_file.getvalue())
        self.assertEqual('', version_file.getvalue())
Exemplo n.º 3
0
    def test_omit_version(self):
        # Thorough testing of the cases involved here is handled by
        # OmitVersionTest, PrivateVersionTest, and SymbolPresenceTest.
        src_file = io.StringIO()
        version_file = io.StringIO()
        generator = gsl.Generator(src_file, version_file, 'arm', 9, False,
                                  False)

        version = gsl.Version('VERSION_PRIVATE', None, [], [
            gsl.Symbol('foo', []),
        ])
        generator.write_version(version)
        self.assertEqual('', src_file.getvalue())
        self.assertEqual('', version_file.getvalue())

        version = gsl.Version('VERSION', None, ['x86'], [
            gsl.Symbol('foo', []),
        ])
        generator.write_version(version)
        self.assertEqual('', src_file.getvalue())
        self.assertEqual('', version_file.getvalue())

        version = gsl.Version('VERSION', None, ['introduced=14'], [
            gsl.Symbol('foo', []),
        ])
        generator.write_version(version)
        self.assertEqual('', src_file.getvalue())
        self.assertEqual('', version_file.getvalue())
    def test_parse_version(self):
        input_file = cStringIO.StringIO(
            textwrap.dedent("""\
            VERSION_1 { # foo bar
                baz;
                qux; # woodly doodly
            };

            VERSION_2 {
            } VERSION_1; # asdf
        """))
        parser = gsl.SymbolFileParser(input_file, {})

        parser.next_line()
        version = parser.parse_version()
        self.assertEqual('VERSION_1', version.name)
        self.assertIsNone(version.base)
        self.assertEqual(['foo', 'bar'], version.tags)

        expected_symbols = [
            gsl.Symbol('baz', []),
            gsl.Symbol('qux', ['woodly', 'doodly']),
        ]
        self.assertEqual(expected_symbols, version.symbols)

        parser.next_line()
        version = parser.parse_version()
        self.assertEqual('VERSION_2', version.name)
        self.assertEqual('VERSION_1', version.base)
        self.assertEqual([], version.tags)
Exemplo n.º 5
0
    def test_omit_symbol(self):
        src_file = cStringIO.StringIO()
        version_file = cStringIO.StringIO()
        generator = gsl.Generator(src_file, version_file, 'arm', 9, False)

        version = gsl.Version('VERSION_1', None, [], [
            gsl.Symbol('foo', ['x86']),
        ])
        generator.write_version(version)
        self.assertEqual('', src_file.getvalue())
        self.assertEqual('', version_file.getvalue())

        version = gsl.Version('VERSION_1', None, [], [
            gsl.Symbol('foo', ['introduced=14']),
        ])
        generator.write_version(version)
        self.assertEqual('', src_file.getvalue())
        self.assertEqual('', version_file.getvalue())

        version = gsl.Version('VERSION_1', None, [], [
            gsl.Symbol('foo', ['vndk']),
        ])
        generator.write_version(version)
        self.assertEqual('', src_file.getvalue())
        self.assertEqual('', version_file.getvalue())
Exemplo n.º 6
0
    def test_omit_api(self):
        self.assertFalse(
            gsl.should_omit_symbol(gsl.Symbol('foo', []), 'arm', 9, False))
        self.assertFalse(
            gsl.should_omit_symbol(gsl.Symbol('foo', ['introduced=9']), 'arm',
                                   9, False))

        self.assertTrue(
            gsl.should_omit_symbol(gsl.Symbol('foo', ['introduced=14']), 'arm',
                                   9, False))
Exemplo n.º 7
0
    def test_omit_arch(self):
        self.assertFalse(
            gsl.should_omit_symbol(gsl.Symbol('foo', []), 'arm', 9, False))
        self.assertFalse(
            gsl.should_omit_symbol(gsl.Symbol('foo', ['arm']), 'arm', 9,
                                   False))

        self.assertTrue(
            gsl.should_omit_symbol(gsl.Symbol('foo', ['x86']), 'arm', 9,
                                   False))
Exemplo n.º 8
0
    def test_omit_vndk(self):
        self.assertTrue(
            gsl.should_omit_symbol(gsl.Symbol('foo', ['vndk']), 'arm', 9,
                                   False))

        self.assertFalse(
            gsl.should_omit_symbol(gsl.Symbol('foo', []), 'arm', 9, True))
        self.assertFalse(
            gsl.should_omit_symbol(gsl.Symbol('foo', ['vndk']), 'arm', 9,
                                   True))
Exemplo n.º 9
0
    def test_omit_apex(self):
        self.assertTrue(
            gsl.should_omit_symbol(gsl.Symbol('foo', ['apex']), 'arm', 9,
                                   False, False))

        self.assertFalse(
            gsl.should_omit_symbol(gsl.Symbol('foo', []), 'arm', 9, False,
                                   True))
        self.assertFalse(
            gsl.should_omit_symbol(gsl.Symbol('foo', ['apex']), 'arm', 9,
                                   False, True))
Exemplo n.º 10
0
    def test_write(self):
        src_file = cStringIO.StringIO()
        version_file = cStringIO.StringIO()
        generator = gsl.Generator(src_file, version_file, 'arm', 9, False)

        versions = [
            gsl.Version('VERSION_1', None, [], [
                gsl.Symbol('foo', []),
                gsl.Symbol('bar', ['var']),
            ]),
            gsl.Version('VERSION_2', 'VERSION_1', [], [
                gsl.Symbol('baz', []),
            ]),
            gsl.Version('VERSION_3', 'VERSION_1', [], [
                gsl.Symbol('qux', ['versioned=14']),
            ]),
        ]

        generator.write(versions)
        expected_src = textwrap.dedent("""\
            void foo() {}
            int bar = 0;
            void baz() {}
            void qux() {}
        """)
        self.assertEqual(expected_src, src_file.getvalue())

        expected_version = textwrap.dedent("""\
            VERSION_1 {
                global:
                    foo;
                    bar;
            };
            VERSION_2 {
                global:
                    baz;
            } VERSION_1;
        """)
        self.assertEqual(expected_version, version_file.getvalue())
Exemplo n.º 11
0
    def test_parse_vndk_apex_symbol(self):
        input_file = io.StringIO(
            textwrap.dedent("""\
            VERSION_1 {
                foo;
                bar; # vndk
                baz; # vndk apex
                qux; # apex
            };
        """))
        parser = gsl.SymbolFileParser(input_file, {}, 'arm', 16, False, True)

        parser.next_line()
        version = parser.parse_version()
        self.assertEqual('VERSION_1', version.name)
        self.assertIsNone(version.base)

        expected_symbols = [
            gsl.Symbol('foo', []),
            gsl.Symbol('bar', ['vndk']),
            gsl.Symbol('baz', ['vndk', 'apex']),
            gsl.Symbol('qux', ['apex']),
        ]
        self.assertEqual(expected_symbols, version.symbols)