Formatting: Format all python code with black.
This CL is probably not what you're looking for, it's only
automated formatting. Ignore it with
`git blame --ignore-rev <revision>` for this commit.
BUG=b:233893248
TEST=CQ
Change-Id: I66591d7a738d241aed3290138c0f68065ab10a6d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3879174
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Tested-by: Alex Klein <saklein@chromium.org>
diff --git a/scripts/cros_run_unit_tests.py b/scripts/cros_run_unit_tests.py
index 0d24790..8a42265 100644
--- a/scripts/cros_run_unit_tests.py
+++ b/scripts/cros_run_unit_tests.py
@@ -19,171 +19,226 @@
from chromite.scripts import cros_extract_deps
-BOARD_VIRTUAL_PACKAGES = (constants.TARGET_OS_PKG,
- constants.TARGET_OS_DEV_PKG,
- constants.TARGET_OS_TEST_PKG,
- constants.TARGET_OS_FACTORY_PKG)
+BOARD_VIRTUAL_PACKAGES = (
+ constants.TARGET_OS_PKG,
+ constants.TARGET_OS_DEV_PKG,
+ constants.TARGET_OS_TEST_PKG,
+ constants.TARGET_OS_FACTORY_PKG,
+)
SDK_VIRTUAL_PACKAGES = (constants.TARGET_SDK,)
-IMPLICIT_TEST_DEPS = ('virtual/implicit-system',)
+IMPLICIT_TEST_DEPS = ("virtual/implicit-system",)
def ParseArgs(argv):
- """Parse arguments.
+ """Parse arguments.
- Args:
- argv: array of arguments passed to the script.
- """
- parser = commandline.ArgumentParser(description=__doc__)
+ Args:
+ argv: array of arguments passed to the script.
+ """
+ parser = commandline.ArgumentParser(description=__doc__)
- target = parser.add_mutually_exclusive_group(required=True)
- target.add_argument('--sysroot', type='path', help='Path to the sysroot.')
- target.add_argument('--board', help='Board name.')
- target.add_argument('--host', action='store_true',
- help='Run tests for the host SDK.')
+ target = parser.add_mutually_exclusive_group(required=True)
+ target.add_argument("--sysroot", type="path", help="Path to the sysroot.")
+ target.add_argument("--board", help="Board name.")
+ target.add_argument(
+ "--host", action="store_true", help="Run tests for the host SDK."
+ )
- parser.add_argument('--pretend', default=False, action='store_true',
- help='Show the list of packages to be tested and return.')
- parser.add_argument('--noinstalled_only', dest='installed', default=True,
- action='store_false',
- help='Test all testable packages, even if they are not '
- 'currently installed.')
- parser.add_argument('--package_file', type='path',
- help='Path to a file containing the list of packages '
- 'that should be tested.')
- parser.add_argument('--packages',
- help='Space-separated list of packages to test.')
- parser.add_argument('--skip-packages',
- help='Space-separated list of packages to NOT test even '
- 'if they otherwise would have been tested.')
- parser.add_argument('--nowithdebug', action='store_true',
- help="Don't build the tests with USE=cros-debug")
- parser.add_argument('--assume-empty-sysroot', default=False,
- action='store_true', dest='empty_sysroot',
- help='Set up dependencies and run unit tests for all '
- 'packages that could be installed on target board '
- 'without assuming that any packages have actually '
- 'been merged yet.')
- parser.add_argument(
- '-j',
- '--jobs',
- type=int,
- default=multiprocessing.cpu_count(),
- help='The limit for the number of possible concurrent jobs.')
- parser.add_argument(
- '--no-testable-packages-ok',
- default=False,
- action='store_true',
- dest='testable_packages_optional',
- help='If specified, do not fail if no testable packages are found.')
- parser.add_argument(
- '--filter-only-cros-workon',
- default=False,
- action='store_true',
- help='If specified and packages are given, filters out non-cros_workon '
- 'packages.')
+ parser.add_argument(
+ "--pretend",
+ default=False,
+ action="store_true",
+ help="Show the list of packages to be tested and return.",
+ )
+ parser.add_argument(
+ "--noinstalled_only",
+ dest="installed",
+ default=True,
+ action="store_false",
+ help="Test all testable packages, even if they are not "
+ "currently installed.",
+ )
+ parser.add_argument(
+ "--package_file",
+ type="path",
+ help="Path to a file containing the list of packages "
+ "that should be tested.",
+ )
+ parser.add_argument(
+ "--packages", help="Space-separated list of packages to test."
+ )
+ parser.add_argument(
+ "--skip-packages",
+ help="Space-separated list of packages to NOT test even "
+ "if they otherwise would have been tested.",
+ )
+ parser.add_argument(
+ "--nowithdebug",
+ action="store_true",
+ help="Don't build the tests with USE=cros-debug",
+ )
+ parser.add_argument(
+ "--assume-empty-sysroot",
+ default=False,
+ action="store_true",
+ dest="empty_sysroot",
+ help="Set up dependencies and run unit tests for all "
+ "packages that could be installed on target board "
+ "without assuming that any packages have actually "
+ "been merged yet.",
+ )
+ parser.add_argument(
+ "-j",
+ "--jobs",
+ type=int,
+ default=multiprocessing.cpu_count(),
+ help="The limit for the number of possible concurrent jobs.",
+ )
+ parser.add_argument(
+ "--no-testable-packages-ok",
+ default=False,
+ action="store_true",
+ dest="testable_packages_optional",
+ help="If specified, do not fail if no testable packages are found.",
+ )
+ parser.add_argument(
+ "--filter-only-cros-workon",
+ default=False,
+ action="store_true",
+ help="If specified and packages are given, filters out non-cros_workon "
+ "packages.",
+ )
- options = parser.parse_args(argv)
- options.Freeze()
- return options
+ options = parser.parse_args(argv)
+ options.Freeze()
+ return options
def determine_packages(sysroot, virtual_packages):
- """Returns a set of the dependencies for the given packages"""
- deps, _bdeps = cros_extract_deps.ExtractDeps(
- sysroot, virtual_packages, include_bdepend=False)
- return set(
- '%s/%s' % (atom['category'], atom['name']) for atom in deps.values())
+ """Returns a set of the dependencies for the given packages"""
+ deps, _bdeps = cros_extract_deps.ExtractDeps(
+ sysroot, virtual_packages, include_bdepend=False
+ )
+ return set(
+ "%s/%s" % (atom["category"], atom["name"]) for atom in deps.values()
+ )
+
def get_keep_going():
- """Check if should enable keep_going parameter.
+ """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', '')
+ 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)
+ opts = ParseArgs(argv)
- cros_build_lib.AssertInsideChroot()
+ cros_build_lib.AssertInsideChroot()
- sysroot = (opts.sysroot or '/' if opts.host
- else build_target_lib.get_default_sysroot_path(opts.board))
- skipped_packages = set()
- if opts.skip_packages:
- skipped_packages |= set(opts.skip_packages.split())
+ sysroot = (
+ opts.sysroot or "/"
+ if opts.host
+ else build_target_lib.get_default_sysroot_path(opts.board)
+ )
+ skipped_packages = set()
+ if opts.skip_packages:
+ skipped_packages |= set(opts.skip_packages.split())
- packages = set()
- # The list of packages to test can be passed as a file containing a
- # space-separated list of package names.
- # This is used by the builder to test only the packages that were uprevved.
- if opts.package_file and os.path.exists(opts.package_file):
- packages = set(osutils.ReadFile(opts.package_file).split())
+ packages = set()
+ # The list of packages to test can be passed as a file containing a
+ # space-separated list of package names.
+ # This is used by the builder to test only the packages that were uprevved.
+ if opts.package_file and os.path.exists(opts.package_file):
+ packages = set(osutils.ReadFile(opts.package_file).split())
- if opts.packages:
- packages |= set(opts.packages.split())
+ if opts.packages:
+ packages |= set(opts.packages.split())
- # If no packages were specified, use all testable packages.
- if not (opts.packages or opts.package_file) and not opts.empty_sysroot:
- workon = workon_helper.WorkonHelper(sysroot)
- packages = (workon.InstalledWorkonAtoms() if opts.installed
- else set(workon.ListAtoms(use_all=True)))
+ # If no packages were specified, use all testable packages.
+ if not (opts.packages or opts.package_file) and not opts.empty_sysroot:
+ workon = workon_helper.WorkonHelper(sysroot)
+ packages = (
+ workon.InstalledWorkonAtoms()
+ if opts.installed
+ else set(workon.ListAtoms(use_all=True))
+ )
- if opts.empty_sysroot:
- packages |= determine_packages(sysroot, SDK_VIRTUAL_PACKAGES if opts.host
- else BOARD_VIRTUAL_PACKAGES)
- workon = workon_helper.WorkonHelper(sysroot)
- workon_packages = set(workon.ListAtoms(use_all=True))
- packages &= workon_packages
+ if opts.empty_sysroot:
+ packages |= determine_packages(
+ sysroot,
+ SDK_VIRTUAL_PACKAGES if opts.host else BOARD_VIRTUAL_PACKAGES,
+ )
+ workon = workon_helper.WorkonHelper(sysroot)
+ workon_packages = set(workon.ListAtoms(use_all=True))
+ packages &= workon_packages
- for cp in packages & skipped_packages:
- logging.info('Skipping package %s.', cp)
+ for cp in packages & skipped_packages:
+ logging.info("Skipping package %s.", cp)
- packages = packages - skipped_packages
- pkg_with_test = portage_util.PackagesWithTest(sysroot, packages,
- opts.filter_only_cros_workon)
+ packages = packages - skipped_packages
+ pkg_with_test = portage_util.PackagesWithTest(
+ sysroot, packages, opts.filter_only_cros_workon
+ )
- if packages - pkg_with_test:
- logging.warning('The following packages do not have tests:\n %s',
- '\n '.join(sorted(packages - pkg_with_test)))
+ if packages - pkg_with_test:
+ logging.warning(
+ "The following packages do not have tests:\n %s",
+ "\n ".join(sorted(packages - pkg_with_test)),
+ )
- if not pkg_with_test:
- if opts.testable_packages_optional:
- logging.warning('No testable packages found!')
- return 0
- logging.error('No testable packages found!')
- return 1
+ if not pkg_with_test:
+ if opts.testable_packages_optional:
+ logging.warning("No testable packages found!")
+ return 0
+ logging.error("No testable packages found!")
+ return 1
- if opts.pretend:
- print('\n'.join(sorted(pkg_with_test)))
- return 0
+ if opts.pretend:
+ print("\n".join(sorted(pkg_with_test)))
+ return 0
- env = {}
- if opts.nowithdebug:
- use_flags = os.environ.get('USE', '')
- use_flags += ' -cros-debug'
- env['USE'] = use_flags
+ env = {}
+ if opts.nowithdebug:
+ use_flags = os.environ.get("USE", "")
+ use_flags += " -cros-debug"
+ env["USE"] = use_flags
- keep_going = get_keep_going()
+ 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
+ metrics_dir = os.environ.get(constants.CROS_METRICS_DIR_ENVVAR)
+ if metrics_dir:
+ env[constants.CROS_METRICS_DIR_ENVVAR] = metrics_dir
- if opts.empty_sysroot:
+ if opts.empty_sysroot:
+ try:
+ chroot_util.Emerge(
+ list(IMPLICIT_TEST_DEPS),
+ sysroot,
+ rebuild_deps=False,
+ use_binary=False,
+ )
+ chroot_util.Emerge(
+ list(pkg_with_test),
+ sysroot,
+ rebuild_deps=False,
+ use_binary=False,
+ )
+ except cros_build_lib.RunCommandError:
+ logging.error("Failed building dependencies for unittests.")
+ return 1
+
try:
- chroot_util.Emerge(list(IMPLICIT_TEST_DEPS), sysroot, rebuild_deps=False,
- use_binary=False)
- chroot_util.Emerge(list(pkg_with_test), sysroot, rebuild_deps=False,
- use_binary=False)
+ chroot_util.RunUnittests(
+ sysroot,
+ pkg_with_test,
+ extra_env=env,
+ keep_going=keep_going,
+ jobs=opts.jobs,
+ )
except cros_build_lib.RunCommandError:
- logging.error('Failed building dependencies for unittests.')
- return 1
-
- try:
- 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
+ logging.error("Unittests failed.")
+ return 1