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
diff --git a/tools/releasetools/test_utils.py b/tools/releasetools/test_utils.py
old mode 100644
new mode 100755
index edb3d41..ca127b1
--- a/tools/releasetools/test_utils.py
+++ b/tools/releasetools/test_utils.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python
#
# Copyright (C) 2018 The Android Open Source Project
#
@@ -40,6 +41,19 @@
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 @@
# 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 @@
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)