summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolai Hähnle <nicolai.haehnle@amd.com>2017-09-20 13:00:31 +0200
committerNicolai Hähnle <nicolai.haehnle@amd.com>2017-10-11 12:13:54 +0200
commit5af27cd2c173487f3930da9a00ca0d855e926d43 (patch)
treeb7ae862b71ae8400a2788d9b66699b7c950e9e00
parent6418a14fedfe4221863a95154921e5ff0c72db38 (diff)
framework: add various helper functions to TestResult
-rw-r--r--framework/results.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/framework/results.py b/framework/results.py
index 26ebbe7a6..c13379b3e 100644
--- a/framework/results.py
+++ b/framework/results.py
@@ -209,6 +209,52 @@ class TestResult(object):
except KeyError:
raise KeyError(key)
+ def set_result(self, key, status):
+ """Set the result status of a (sub-)test covered by this object.
+
+ Raises KeyError if the test is not covered.
+ """
+ relative = grouptools.relative(self.root, key)
+
+ if relative == '':
+ if self.subtests:
+ raise KeyError(key)
+ self.result = status
+ return
+
+ if relative not in self.subtests:
+ raise KeyError(key)
+
+ self.subtests[relative] = status
+
+ @property
+ def tests(self):
+ """Iterator over the names of tests covered by this object."""
+ if self.subtests:
+ for subtest in six.iterkeys(self.subtests):
+ yield grouptools.join(self.root, subtest)
+ else:
+ yield self.root
+
+ def add_test(self, key):
+ """Add a (sub-)test to the tests covered by this object."""
+ relative = grouptools.relative(self.root, key)
+
+ if relative == '':
+ assert not self.subtests
+ return # Nothing to be done
+
+ self.subtests[relative] = status.NOTRUN
+
+ def have_test(self, key):
+ """Whether a given (sub-)test is covered by this object."""
+ relative = grouptools.relative(self.root, key)
+
+ if relative == '':
+ return not self.subtests
+
+ return relative in self.subtests
+
def to_json(self):
"""Return the TestResult as a json serializable object."""
obj = {