Skip to content
This repository has been archived by the owner on Nov 8, 2023. It is now read-only.

Commit

Permalink
vndk-def: Code cleanup: Remove duplicated code
Browse files Browse the repository at this point in the history
This commit extracts duplicated code between test cases in
tests/test_vndk.py.

Test: ./tests/test_vndk.py
Change-Id: I3b1a630bef5aeab61c5ac5861ff709f6418066e5
  • Loading branch information
loganchien committed Apr 7, 2017
1 parent 8293664 commit 43cfc4b
Showing 1 changed file with 41 additions and 87 deletions.
128 changes: 41 additions & 87 deletions vndk/tools/definition-tool/tests/test_vndk.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,37 @@ class ELFLinkerVNDKTest(unittest.TestCase):
def _get_paths_from_nodes(self, nodes):
return sorted([node.path for node in nodes])

def test_compute_vndk(self):
input_dir = os.path.join(TESTDATA_DIR, 'pre_treble')
def _create_graph_gr(self, input_dir, generic_refs_dir):
if not generic_refs_dir:
generic_refs = None
else:
generic_refs_dir = os.path.join(TESTDATA_DIR, generic_refs_dir)
generic_refs = GenericRefs.create_from_dir(generic_refs_dir)

input_dir = os.path.join(TESTDATA_DIR, input_dir)

graph = ELFLinker.create_from_dump(
system_dirs=[os.path.join(input_dir, 'system')],
vendor_dirs=[os.path.join(input_dir, 'vendor')])
vendor_dirs=[os.path.join(input_dir, 'vendor')],
generic_refs=generic_refs)

return (graph, generic_refs)

def _create_graph_vndk(self, input_dir, generic_refs_dir):
graph, generic_refs = self._create_graph_gr(input_dir, generic_refs_dir)

vndk = graph.compute_vndk(sp_hals=set(), vndk_stable=set(),
vndk_customized_for_system=set(),
vndk_customized_for_vendor=set(),
generic_refs=None,
banned_libs=MockBannedLibs())
vndk = graph.compute_vndk(
sp_hals=set(),
vndk_stable=set(),
vndk_customized_for_system=set(),
vndk_customized_for_vendor=set(),
generic_refs=generic_refs,
banned_libs=MockBannedLibs())

return (graph, vndk)

def test_compute_vndk(self):
graph, vndk = self._create_graph_vndk('pre_treble', None)

self.assertEqual(['/system/lib/libcutils.so',
'/system/lib64/libcutils.so'],
Expand All @@ -43,22 +62,7 @@ def test_compute_vndk(self):
self.assertEqual([], self._get_paths_from_nodes(vndk.vndk_vnd_ext))

def test_compute_vndk_fwk_ext(self):
generic_refs_dir = os.path.join(TESTDATA_DIR, 'vndk_gr')

generic_refs = GenericRefs.create_from_dir(generic_refs_dir)

input_dir = os.path.join(TESTDATA_DIR, 'vndk_fwk_ext')

graph = ELFLinker.create_from_dump(
system_dirs=[os.path.join(input_dir, 'system')],
vendor_dirs=[os.path.join(input_dir, 'vendor')],
generic_refs=generic_refs)

vndk = graph.compute_vndk(sp_hals=set(), vndk_stable=set(),
vndk_customized_for_system=set(),
vndk_customized_for_vendor=set(),
generic_refs=generic_refs,
banned_libs=MockBannedLibs())
graph, vndk = self._create_graph_vndk('vndk_fwk_ext', 'vndk_gr')

self.assertEqual(['/system/lib/vndk/libRS.so',
'/system/lib/vndk/libcutils.so',
Expand All @@ -71,22 +75,7 @@ def test_compute_vndk_fwk_ext(self):
self.assertEqual([], self._get_paths_from_nodes(vndk.vndk_vnd_ext))

def test_compute_vndk_vnd_ext(self):
generic_refs_dir = os.path.join(TESTDATA_DIR, 'vndk_gr')

generic_refs = GenericRefs.create_from_dir(generic_refs_dir)

input_dir = os.path.join(TESTDATA_DIR, 'vndk_vnd_ext')

graph = ELFLinker.create_from_dump(
system_dirs=[os.path.join(input_dir, 'system')],
vendor_dirs=[os.path.join(input_dir, 'vendor')],
generic_refs=generic_refs)

vndk = graph.compute_vndk(sp_hals=set(), vndk_stable=set(),
vndk_customized_for_system=set(),
vndk_customized_for_vendor=set(),
generic_refs=generic_refs,
banned_libs=MockBannedLibs())
graph, vndk = self._create_graph_vndk('vndk_vnd_ext', 'vndk_gr')

self.assertEqual(['/system/lib/vndk/libRS.so',
'/system/lib/vndk/libcutils.so',
Expand All @@ -99,16 +88,8 @@ def test_compute_vndk_vnd_ext(self):
self._get_paths_from_nodes(vndk.vndk_vnd_ext))

def test_compute_vndk_inward_customization(self):
generic_refs_dir = os.path.join(TESTDATA_DIR, 'vndk_gr')

generic_refs = GenericRefs.create_from_dir(generic_refs_dir)

input_dir = os.path.join(TESTDATA_DIR, 'vndk_inward_customization')

graph = ELFLinker.create_from_dump(
system_dirs=[os.path.join(input_dir, 'system')],
vendor_dirs=[os.path.join(input_dir, 'vendor')],
generic_refs=generic_refs)
graph, generic_refs = self._create_graph_gr(
'vndk_inward_customization', 'vndk_gr')

# Make sure libjpeg.so was loaded from the input dir.
libjpeg_32 = graph.get_lib('/system/lib/libjpeg.so')
Expand All @@ -117,11 +98,13 @@ def test_compute_vndk_inward_customization(self):
self.assertIsNotNone(libjpeg_64)

# Compute vndk sets and move libraries to the correct directories.
vndk = graph.compute_vndk(sp_hals=set(), vndk_stable=set(),
vndk_customized_for_system=set(),
vndk_customized_for_vendor=set(),
generic_refs=generic_refs,
banned_libs=MockBannedLibs())
vndk = graph.compute_vndk(
sp_hals=set(),
vndk_stable=set(),
vndk_customized_for_system=set(),
vndk_customized_for_vendor=set(),
generic_refs=generic_refs,
banned_libs=MockBannedLibs())

# Check vndk-core libraries.
self.assertEqual(['/system/lib/vndk/libRS.so',
Expand Down Expand Up @@ -161,22 +144,8 @@ def test_compute_vndk_indirect_ext(self):
# will break the vndk-indirect computation because libC is not in
# generic references.

generic_refs_dir = os.path.join(TESTDATA_DIR, 'vndk_indirect_ext_gr')

generic_refs = GenericRefs.create_from_dir(generic_refs_dir)

input_dir = os.path.join(TESTDATA_DIR, 'vndk_indirect_ext')

graph = ELFLinker.create_from_dump(
system_dirs=[os.path.join(input_dir, 'system')],
vendor_dirs=[os.path.join(input_dir, 'vendor')],
generic_refs=generic_refs)

vndk = graph.compute_vndk(sp_hals=set(), vndk_stable=set(),
vndk_customized_for_system=set(),
vndk_customized_for_vendor=set(),
generic_refs=generic_refs,
banned_libs=MockBannedLibs())
graph, vndk = self._create_graph_vndk('vndk_indirect_ext',
'vndk_indirect_ext_gr')

self.assertEqual(['/system/lib/vndk/libRS.so',
'/system/lib/vndk/libcutils.so',
Expand All @@ -198,22 +167,7 @@ def test_compute_vndk_ext_deps(self):
# vndk-vnd-ext in the first round, libA depends libC, libC depends
# libB.

generic_refs_dir = os.path.join(TESTDATA_DIR, 'vndk_ext_dep_gr')

generic_refs = GenericRefs.create_from_dir(generic_refs_dir)

input_dir = os.path.join(TESTDATA_DIR, 'vndk_ext_dep')

graph = ELFLinker.create_from_dump(
system_dirs=[os.path.join(input_dir, 'system')],
vendor_dirs=[os.path.join(input_dir, 'vendor')],
generic_refs=generic_refs)

vndk = graph.compute_vndk(sp_hals=set(), vndk_stable=set(),
vndk_customized_for_system=set(),
vndk_customized_for_vendor=set(),
generic_refs=generic_refs,
banned_libs=MockBannedLibs())
graph, vndk = self._create_graph_vndk('vndk_ext_dep', 'vndk_ext_dep_gr')

self.assertEqual(['/system/lib/vndk/libA.so',
'/system/lib/vndk/libB.so',
Expand Down

0 comments on commit 43cfc4b

Please sign in to comment.