Pass flag '--keep-going=y' running unit test for coverage.
By default 'parallel-emerge' will exit when run into certain package
failure, this causes fragile workflow for code coverage generation where
we should tolerent such failures and keep going.
This change check 'USE' vironment flags when running 'cros_run_unit_tests.py',
and pass extra '--keep-going=y' flags to parallel-emerge to avoid
fail-fast when detect we are running unit tests for code coverage
generation.
BUG=b:213941781
TEST=Check unit tests with 'cros_run_unit_tests.py' and
'parallel-emerge.py' respectively
Change-Id: I21c5027729ff72b495abb8dfdd4b7c348584cb7d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3416103
Reviewed-by: David Welling <davidwelling@google.com>
Reviewed-by: Alex Klein <saklein@chromium.org>
Tested-by: Hengxiang Hu <hengxianghu@google.com>
Commit-Queue: Hengxiang Hu <hengxianghu@google.com>
diff --git a/scripts/cros_run_unit_tests.py b/scripts/cros_run_unit_tests.py
index d2506e1..c76de9e 100644
--- a/scripts/cros_run_unit_tests.py
+++ b/scripts/cros_run_unit_tests.py
@@ -99,6 +99,14 @@
return set(
'%s/%s' % (atom['category'], atom['name']) for atom in deps.values())
+def get_keep_going():
+ """Check if should enable keep_going parameter.
+
+ If the 'USE' environment contains 'coverage' then enable keep_going option
+ to prevent certain package failure from breaking the whole coverage
+ generation workflow, otherwise leave it to default settings
+ """
+ return 'coverage' in os.environ.get('USE', '')
def main(argv):
opts = ParseArgs(argv)
@@ -162,6 +170,8 @@
use_flags += ' -cros-debug'
env['USE'] = use_flags
+ keep_going = get_keep_going()
+
metrics_dir = os.environ.get(constants.CROS_METRICS_DIR_ENVVAR)
if metrics_dir:
env[constants.CROS_METRICS_DIR_ENVVAR] = metrics_dir
@@ -177,8 +187,8 @@
return 1
try:
- chroot_util.RunUnittests(
- sysroot, pkg_with_test, extra_env=env, jobs=opts.jobs)
+ chroot_util.RunUnittests(sysroot, pkg_with_test, extra_env=env,
+ keep_going=keep_going, jobs=opts.jobs)
except cros_build_lib.RunCommandError:
logging.error('Unittests failed.')
return 1