[Patchew-devel] [PATCH 03/12] testing: include "pending" testing results in REST API

Paolo Bonzini pbonzini at redhat.com
Tue May 22 06:57:31 UTC 2018


If a test can be done but has not been started yet, its status should be "pending".

Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
---
 mods/testing.py       | 9 +++++++++
 tests/test_testing.py | 4 ++++
 2 files changed, 13 insertions(+)

diff --git a/mods/testing.py b/mods/testing.py
index a791493..824df15 100644
--- a/mods/testing.py
+++ b/mods/testing.py
@@ -252,10 +252,15 @@ class TestingModule(PatchewModule):
         return ret
 
     def rest_results_hook(self, request, obj, results, detailed=False):
+        all_tests = set([k for k, v in _instance.get_tests(obj).items() if v["enabled"]])
         for pn, p in obj.get_properties().items():
             if not pn.startswith("testing.report."):
                 continue
             tn = pn[len("testing.report."):]
+            try:
+                all_tests.remove(tn)
+            except:
+                pass
             failed = not p["passed"]
             log_url = self.reverse_testing_log(obj, tn, request=request, html=False)
             passed_str = Result.FAILURE if failed else Result.SUCCESS
@@ -270,6 +275,10 @@ class TestingModule(PatchewModule):
                                   log=log, log_url=log_url, request=request, data=data,
                                   renderer=self))
 
+        if obj.get_property("testing.ready"):
+            for tn in all_tests:
+                results.append(Result(name='testing.' + tn, obj=obj, status='pending'))
+
     def prepare_message_hook(self, request, message, detailed):
         if not message.is_series_head:
             return
diff --git a/tests/test_testing.py b/tests/test_testing.py
index 73d13f1..8f831a1 100755
--- a/tests/test_testing.py
+++ b/tests/test_testing.py
@@ -91,6 +91,10 @@ class TestingTestCase(PatchewTestCase, metaclass=abc.ABCMeta):
                            capabilities=[])
         self.assertFalse(td)
 
+    def test_rest_basic(self):
+        resp = self.get_test_result('a')
+        self.assertEquals(resp.data['status'], 'pending')
+
     def test_rest_done_success(self):
         self.do_testing_done(log='everything good!', passed=True)
         resp = self.get_test_result('tests')
-- 
2.17.0





More information about the Patchew-devel mailing list