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
diff --git a/cc/ndkstubgen/test_ndkstubgen.py b/cc/ndkstubgen/test_ndkstubgen.py
index 6d2c9d6..3dbab61 100755
--- a/cc/ndkstubgen/test_ndkstubgen.py
+++ b/cc/ndkstubgen/test_ndkstubgen.py
@@ -33,8 +33,10 @@
# 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 @@
# 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 @@
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 @@
""")
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 @@
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 @@
""")
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 @@
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 @@
""")
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 @@
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("""\