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())
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)
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())
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))
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))
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))
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))
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())
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)