sanitycheck: introduce integration testing
Use --integration testing for CI to limit execution and builds on
platforms that actually provide most of the coverage instead of blindly
building/running on all available platforms.
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
diff --git a/scripts/sanity_chk/sanitylib.py b/scripts/sanity_chk/sanitylib.py
index dc49f6e..2b526e8 100644
--- a/scripts/sanity_chk/sanitylib.py
+++ b/scripts/sanity_chk/sanitylib.py
@@ -1271,12 +1271,6 @@
d[k] = v
for k, v in self.tests[name].items():
- if k not in valid_keys:
- raise ConfigurationError(
- self.filename,
- "Unknown config key '%s' in definition for '%s'" %
- (k, name))
-
if k in d:
if isinstance(d[k], str):
# By default, we just concatenate string values of keys
@@ -1444,6 +1438,7 @@
self.depends_on = None
self.min_flash = -1
self.extra_sections = None
+ self.integration_platforms = []
@staticmethod
def get_unique(testcase_root, workdir, name):
@@ -2294,6 +2289,7 @@
"arch_whitelist": {"type": "set"},
"arch_exclude": {"type": "set"},
"extra_sections": {"type": "list", "default": []},
+ "integration_platforms": {"type": "list", "default": []},
"platform_exclude": {"type": "set"},
"platform_whitelist": {"type": "set"},
"toolchain_exclude": {"type": "set"},
@@ -2366,6 +2362,9 @@
# hardcoded for now
self.connected_hardware = []
+ # run integration tests only
+ self.integration = False
+
def get_platform_instances(self, platform):
filtered_dict = {k:v for k,v in self.instances.items() if k.startswith(platform + "/")}
return filtered_dict
@@ -2636,6 +2635,7 @@
tc.depends_on = tc_dict["depends_on"]
tc.min_flash = tc_dict["min_flash"]
tc.extra_sections = tc_dict["extra_sections"]
+ tc.integration_platforms = tc_dict["integration_platforms"]
tc.parse_subcases(tc_path)
@@ -2759,6 +2759,10 @@
discards[instance] = "Not runnable on device"
continue
+ if self.integration and tc.integration_platforms and plat.name not in tc.integration_platforms:
+ discards[instance] = "Not part of integration platforms"
+ continue
+
if tc.skip:
discards[instance] = "Skip filter"
continue