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_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_integration(self): input_file = cStringIO.StringIO( textwrap.dedent("""\ VERSION_1 { global: foo; # var bar; # x86 local: *; }; VERSION_2 { # arm baz; # introduced=9 qux; # versioned=14 } VERSION_1; VERSION_3 { # introduced=14 woodly; doodly; # var } VERSION_2; """)) parser = gsl.SymbolFileParser(input_file) versions = parser.parse() src_file = cStringIO.StringIO() version_file = cStringIO.StringIO() generator = gsl.Generator(src_file, version_file, 'arm', 9) generator.write(versions) expected_src = textwrap.dedent("""\ int foo = 0; void baz() {} void qux() {} """) self.assertEqual(expected_src, src_file.getvalue()) expected_version = textwrap.dedent("""\ VERSION_1 { global: foo; }; VERSION_2 { global: baz; } VERSION_1; """) self.assertEqual(expected_version, version_file.getvalue())
def test_write(self): src_file = io.StringIO() version_file = io.StringIO() generator = gsl.Generator(src_file, version_file, 'arm', 9, False, False) versions = [ gsl.Version('VERSION_1', None, [], [ gsl.Symbol('foo', []), gsl.Symbol('bar', ['var']), gsl.Symbol('woodly', ['weak']), gsl.Symbol('doodly', ['weak', '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; __attribute__((weak)) void woodly() {} __attribute__((weak)) int doodly = 0; void baz() {} void qux() {} """) self.assertEqual(expected_src, src_file.getvalue()) expected_version = textwrap.dedent("""\ VERSION_1 { global: foo; bar; woodly; doodly; }; VERSION_2 { global: baz; } VERSION_1; """) self.assertEqual(expected_version, version_file.getvalue())
def test_integration_future_api(self): api_map = { 'O': 9000, 'P': 9001, 'Q': 9002, } input_file = io.StringIO( textwrap.dedent("""\ VERSION_1 { global: foo; # introduced=O bar; # introduced=P baz; # introduced=Q local: *; }; """)) parser = gsl.SymbolFileParser(input_file, api_map, 'arm', 9001, False, False) versions = parser.parse() src_file = io.StringIO() version_file = io.StringIO() generator = gsl.Generator(src_file, version_file, 'arm', 9001, False, False) generator.write(versions) expected_src = textwrap.dedent("""\ void foo() {} void bar() {} """) self.assertEqual(expected_src, src_file.getvalue()) expected_version = textwrap.dedent("""\ VERSION_1 { global: foo; bar; }; """) self.assertEqual(expected_version, version_file.getvalue())
def test_write(self): src_file = cStringIO.StringIO() version_file = cStringIO.StringIO() generator = gsl.Generator(src_file, version_file, 'arm', 9) 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_integration(self): api_map = { 'O': 9000, 'P': 9001, } input_file = cStringIO.StringIO( textwrap.dedent("""\ VERSION_1 { global: foo; # var bar; # x86 fizz; # introduced=O buzz; # introduced=P local: *; }; VERSION_2 { # arm baz; # introduced=9 qux; # versioned=14 } VERSION_1; VERSION_3 { # introduced=14 woodly; doodly; # var } VERSION_2; VERSION_4 { # versioned=9 wibble; wizzes; # vndk } VERSION_2; VERSION_5 { # versioned=14 wobble; } VERSION_4; """)) parser = gsl.SymbolFileParser(input_file, api_map) versions = parser.parse() src_file = cStringIO.StringIO() version_file = cStringIO.StringIO() generator = gsl.Generator(src_file, version_file, 'arm', 9, False) generator.write(versions) expected_src = textwrap.dedent("""\ int foo = 0; void baz() {} void qux() {} void wibble() {} void wobble() {} """) self.assertEqual(expected_src, src_file.getvalue()) expected_version = textwrap.dedent("""\ VERSION_1 { global: foo; }; VERSION_2 { global: baz; } VERSION_1; VERSION_4 { global: wibble; } VERSION_2; """) self.assertEqual(expected_version, version_file.getvalue())