Add common_checks dir and call from checker.
- Checker attempts to discover checks in 3 places:
1. common_checks dir.
2. Project repo.
3. Program repo.
- Add basic ConstraintSuite that checks ids are
consistent as an example.
- Right now just fail a check by throwing an
error and do basic logging when a check is run.
Logging and failure handling can be improved in
the future.
- Also added an exclude_pattern arg to
discover_suites to allow excluding tests. If tests
import a constraint suite, the suite would be
defined twice, and run twice.
BUG=chromium:1051187
TEST=payload_utils/checker.py \
--program ../program/volteer \
--project ../project/volteer/volteer
TEST=python unittests
Change-Id: Ida593429f5bbb85d23027db7db27f4f2f1e3f781
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/config/+/2056867
Commit-Queue: Andrew Lamb <andrewlamb@chromium.org>
Tested-by: Andrew Lamb <andrewlamb@chromium.org>
Reviewed-by: David Burger <dburger@chromium.org>
diff --git a/payload_utils/checker.py b/payload_utils/checker.py
index c0ab275..64ae625 100755
--- a/payload_utils/checker.py
+++ b/payload_utils/checker.py
@@ -7,8 +7,12 @@
import argparse
import os
+from checker import constraint_suite_discovery
from checker import io_utils
+COMMON_CHECKS_PATH = os.path.join(
+ os.path.dirname(__file__), 'checker', 'common_checks')
+
def argument_parser():
parser = argparse.ArgumentParser(description=__doc__)
@@ -34,8 +38,20 @@
project_config = io_utils.read_repo_config(args.project)
program_config = io_utils.read_repo_config(args.program)
- print('Read project config: {}'.format(project_config))
- print('Read program config: {}'.format(program_config))
+ constraint_suite_directories = [
+ COMMON_CHECKS_PATH,
+ os.path.join(args.program, 'checks'),
+ os.path.join(args.project, 'checks')
+ ]
+
+ constraint_suites = []
+ for directory in constraint_suite_directories:
+ constraint_suites.extend(
+ constraint_suite_discovery.discover_suites(directory))
+
+ for suite in constraint_suites:
+ suite.run_checks(
+ program_config=program_config, project_config=project_config, verbose=1)
if __name__ == '__main__':