relesetools: Support running all the unittests with atest.

All the unittests will be built into releasetools_test. One can run the
tests with `atest releasetools_test` or the traditional way
`test_utils.py`. The atest way is recommended, which additionally builds
the required tools.

With the current support in Soong, we can't pack the built tools into
releasetools_test yet. So running `releasetools_test` alone in clound
would fail. Follow-up CLs will address the issue in order to deploy the
tests with TEST_MAPPING.

Bug: 112080715
Test: `atest releasetools_test`
Change-Id: Ica95517a5ab326f4e58fc57c6c2c276cfe882f3c
This commit is contained in:
Tao Bao
2019-04-09 00:12:30 -07:00
parent fc6948b588
commit 30e31142ce
4 changed files with 98 additions and 4 deletions

25
tools/releasetools/test_utils.py Normal file → Executable file
View File

@@ -1,3 +1,4 @@
#!/usr/bin/env python
#
# Copyright (C) 2018 The Android Open Source Project
#
@@ -40,6 +41,19 @@ def get_testdata_dir():
def get_search_path():
"""Returns the search path that has 'framework/signapk.jar' under."""
def signapk_exists(path):
signapk_path = os.path.realpath(
os.path.join(path, 'framework', 'signapk.jar'))
return os.path.exists(signapk_path)
# Try with ANDROID_BUILD_TOP first.
full_path = os.path.realpath(os.path.join(
os.environ.get('ANDROID_BUILD_TOP', ''), 'out', 'host', 'linux-x86'))
if signapk_exists(full_path):
return full_path
# Otherwise try going with relative pathes.
current_dir = os.path.dirname(os.path.realpath(__file__))
for path in (
# In relative to 'build/make/tools/releasetools' in the Android source.
@@ -47,9 +61,7 @@ def get_search_path():
# Or running the script unpacked from otatools.zip.
['..']):
full_path = os.path.realpath(os.path.join(current_dir, *path))
signapk_path = os.path.realpath(
os.path.join(full_path, 'framework', 'signapk.jar'))
if os.path.exists(signapk_path):
if signapk_exists(full_path):
return full_path
return None
@@ -123,3 +135,10 @@ class ReleaseToolsTestCase(unittest.TestCase):
def tearDown(self):
common.Cleanup()
if __name__ == '__main__':
testsuite = unittest.TestLoader().discover(
os.path.dirname(os.path.realpath(__file__)))
# atest needs a verbosity level of >= 2 to correctly parse the result.
unittest.TextTestRunner(verbosity=2).run(testsuite)