sanitycheck: fail on faults/panics/oopses
Fail in tests where we have an OOPS or a panic. Right now and in many
cases we continue and test case might be reported as PASS.
Cases that have the tag ignore_faults will ignore those faults (cases
that are testing faults for example).
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
diff --git a/scripts/sanity_chk/harness.py b/scripts/sanity_chk/harness.py
index fdbbf4b..bfcd4cf 100644
--- a/scripts/sanity_chk/harness.py
+++ b/scripts/sanity_chk/harness.py
@@ -11,10 +11,14 @@
self.repeat = 1
self.tests = {}
self.id = None
+ self.fail_on_fault = True
def configure(self, instance):
config = instance.test.harness_config
self.id = instance.test.id
+ if "ignore_faults" in instance.test.tags:
+ self.fail_on_fault = False
+
if config:
self.type = config.get('type', None)
self.regex = config.get('regex', [] )
@@ -55,6 +59,14 @@
RUN_PASSED = "PROJECT EXECUTION SUCCESSFUL"
RUN_FAILED = "PROJECT EXECUTION FAILED"
+ faults = [
+ "Unknown Fatal Error",
+ "MPU FAULT",
+ "Kernel Panic",
+ "Kernel OOPS",
+ "BUS FAULT"
+ ]
+
def handle(self, line):
result = re.compile("(PASS|FAIL|SKIP) - (test_)?(.*)")
match = result.match(line)
@@ -67,3 +79,9 @@
if self.RUN_FAILED in line:
self.state = "failed"
+
+ if self.fail_on_fault:
+ for fault in self.faults:
+ if fault in line:
+ self.state = "failed"
+