Use libabigail to track NDK ABIs.

The local diffing behavior is currently flagged off so we can land
this in stages.

Test: pytest cc
Test: treehugger
Test: development/tools/update_ndk_abi.sh
Test: m ndk
Bug: http://b/156513478
Change-Id: Iccb314411bc74ea3ddfea8b85b0539709295f65a
This commit is contained in:
Dan Albert
2020-07-30 14:32:55 -07:00
parent a8f4e62b8d
commit f1d14c7e67
9 changed files with 436 additions and 70 deletions

View File

@@ -33,8 +33,10 @@ class GeneratorTest(unittest.TestCase):
# OmitVersionTest, PrivateVersionTest, and SymbolPresenceTest.
src_file = io.StringIO()
version_file = io.StringIO()
generator = ndkstubgen.Generator(src_file, version_file, Arch('arm'),
9, False, False)
symbol_list_file = io.StringIO()
generator = ndkstubgen.Generator(src_file,
version_file, symbol_list_file,
Arch('arm'), 9, False, False)
version = symbolfile.Version('VERSION_PRIVATE', None, [], [
symbolfile.Symbol('foo', []),
@@ -62,8 +64,10 @@ class GeneratorTest(unittest.TestCase):
# SymbolPresenceTest.
src_file = io.StringIO()
version_file = io.StringIO()
generator = ndkstubgen.Generator(src_file, version_file, Arch('arm'),
9, False, False)
symbol_list_file = io.StringIO()
generator = ndkstubgen.Generator(src_file,
version_file, symbol_list_file,
Arch('arm'), 9, False, False)
version = symbolfile.Version('VERSION_1', None, [], [
symbolfile.Symbol('foo', [Tag('x86')]),
@@ -96,8 +100,10 @@ class GeneratorTest(unittest.TestCase):
def test_write(self) -> None:
src_file = io.StringIO()
version_file = io.StringIO()
generator = ndkstubgen.Generator(src_file, version_file, Arch('arm'),
9, False, False)
symbol_list_file = io.StringIO()
generator = ndkstubgen.Generator(src_file,
version_file, symbol_list_file,
Arch('arm'), 9, False, False)
versions = [
symbolfile.Version('VERSION_1', None, [], [
@@ -141,6 +147,17 @@ class GeneratorTest(unittest.TestCase):
""")
self.assertEqual(expected_version, version_file.getvalue())
expected_allowlist = textwrap.dedent("""\
[abi_symbol_list]
foo
bar
woodly
doodly
baz
qux
""")
self.assertEqual(expected_allowlist, symbol_list_file.getvalue())
class IntegrationTest(unittest.TestCase):
def test_integration(self) -> None:
@@ -186,8 +203,10 @@ class IntegrationTest(unittest.TestCase):
src_file = io.StringIO()
version_file = io.StringIO()
generator = ndkstubgen.Generator(src_file, version_file, Arch('arm'),
9, False, False)
symbol_list_file = io.StringIO()
generator = ndkstubgen.Generator(src_file,
version_file, symbol_list_file,
Arch('arm'), 9, False, False)
generator.write(versions)
expected_src = textwrap.dedent("""\
@@ -215,6 +234,16 @@ class IntegrationTest(unittest.TestCase):
""")
self.assertEqual(expected_version, version_file.getvalue())
expected_allowlist = textwrap.dedent("""\
[abi_symbol_list]
foo
baz
qux
wibble
wobble
""")
self.assertEqual(expected_allowlist, symbol_list_file.getvalue())
def test_integration_future_api(self) -> None:
api_map = {
'O': 9000,
@@ -238,8 +267,10 @@ class IntegrationTest(unittest.TestCase):
src_file = io.StringIO()
version_file = io.StringIO()
generator = ndkstubgen.Generator(src_file, version_file, Arch('arm'),
9001, False, False)
symbol_list_file = io.StringIO()
generator = ndkstubgen.Generator(src_file,
version_file, symbol_list_file,
Arch('arm'), 9001, False, False)
generator.write(versions)
expected_src = textwrap.dedent("""\
@@ -257,6 +288,13 @@ class IntegrationTest(unittest.TestCase):
""")
self.assertEqual(expected_version, version_file.getvalue())
expected_allowlist = textwrap.dedent("""\
[abi_symbol_list]
foo
bar
""")
self.assertEqual(expected_allowlist, symbol_list_file.getvalue())
def test_multiple_definition(self) -> None:
input_file = io.StringIO(textwrap.dedent("""\
VERSION_1 {
@@ -336,8 +374,10 @@ class IntegrationTest(unittest.TestCase):
src_file = io.StringIO()
version_file = io.StringIO()
generator = ndkstubgen.Generator(src_file, version_file, Arch('arm'),
9, False, True)
symbol_list_file = io.StringIO()
generator = ndkstubgen.Generator(src_file,
version_file, symbol_list_file,
Arch('arm'), 9, False, True)
generator.write(versions)
expected_src = textwrap.dedent("""\