[Piglit] [RFC 05/10] framework: add various helper functions to TestResult

Nicolai Hähnle nhaehnle at gmail.com
Wed Oct 11 10:26:54 UTC 2017


From: Nicolai Hähnle <nicolai.haehnle at amd.com>

---
 framework/results.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/framework/results.py b/framework/results.py
index 26ebbe7a6..c13379b3e 100644
--- a/framework/results.py
+++ b/framework/results.py
@@ -202,20 +202,66 @@ class TestResult(object):
         if relative == '':
             if self.subtests:
                 raise KeyError(key)
             return self.result
 
         try:
             return self.subtests[relative]
         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 = {
             '__type__': 'TestResult',
             'root': self.root,
             'command': self.command,
             'environment': self.environment,
             'err': self.err,
             'out': self.out,
             'result': self.result,
-- 
2.11.0



More information about the Piglit mailing list