kunit: tool: fix --json output for skipped tests
authorDaniel Latypov <dlatypov@google.com>
Fri, 8 Oct 2021 23:24:21 +0000 (16:24 -0700)
committerShuah Khan <skhan@linuxfoundation.org>
Mon, 13 Dec 2021 20:33:30 +0000 (13:33 -0700)
Currently, KUnit will report SKIPPED tests as having failed if one uses
--json.

Add the missing if statement to set the appropriate status ("SKIP").
See https://api.kernelci.org/schema-test-case.html:
  "status": {
      "type": "string",
      "description": "The status of the execution of this test case",
      "enum": ["PASS", "FAIL", "SKIP", "ERROR"],
      "default": "PASS"
  },
with this, we now can properly produce all four of the statuses.

Fixes: 5acaf6031f53 ("kunit: tool: Support skipped tests in kunit_tool")
Signed-off-by: Daniel Latypov <dlatypov@google.com>
Reviewed-by: David Gow <davidgow@google.com>
Reviewed-by: Brendan Higgins <brendanhiggins@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
tools/testing/kunit/kunit_json.py
tools/testing/kunit/kunit_tool_test.py

index 746bec72b9ac2d5e6da75a41d1cbf08339d9eb07..b6e66c5d64d14433e2fc9ef6d6d43cc401ca4e98 100644 (file)
@@ -30,6 +30,8 @@ def _get_group_json(test: Test, def_config: str,
                        test_case = {"name": subtest.name, "status": "FAIL"}
                        if subtest.status == TestStatus.SUCCESS:
                                test_case["status"] = "PASS"
+                       elif subtest.status == TestStatus.SKIPPED:
+                               test_case["status"] = "SKIP"
                        elif subtest.status == TestStatus.TEST_CRASHED:
                                test_case["status"] = "ERROR"
                        test_cases.append(test_case)
index 9c41267314573308729b90a7eab2fc3977bdd931..34cb0a12ba1800697396098be8fe9114052185c5 100755 (executable)
@@ -383,6 +383,12 @@ class KUnitJsonTest(unittest.TestCase):
                        {'name': 'example_simple_test', 'status': 'ERROR'},
                        result["sub_groups"][1]["test_cases"][0])
 
+       def test_skipped_test_json(self):
+               result = self._json_for('test_skip_tests.log')
+               self.assertEqual(
+                       {'name': 'example_skip_test', 'status': 'SKIP'},
+                       result["sub_groups"][1]["test_cases"][1])
+
        def test_no_tests_json(self):
                result = self._json_for('test_is_test_passed-no_tests_run_with_header.log')
                self.assertEqual(0, len(result['sub_groups']))