mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] kunit: tool: add test counts to JSON output
@ 2025-05-16 20:16 Rae Moar
  2025-05-17  9:42 ` David Gow
  2025-05-20  9:54 ` Thomas Weißschuh
  0 siblings, 2 replies; 3+ messages in thread
From: Rae Moar @ 2025-05-16 20:16 UTC (permalink / raw)
  To: davidgow, brendan.higgins, skhan
  Cc: dlatypov, kunit-dev, linux-kernel, linux-kselftest, Rae Moar

Add the test counts to the JSON output from kunit.py. For example:

...
"git_branch": "kselftest",
"misc":
{
    "tests": 2,
    "passed": 1.
    "failed": 1,
    "crashed": 0,
    "skipped": 0,
    "errors": 0,
}
...

To output the JSON using the following command:
./tools/testing/kunit/kunit.py run example --json

This has been requested by KUnit users. The counts are in a "misc"
field because the JSON output needs to be compliant with the KCIDB
submission guide. There are no counts fields but there is a "misc" field
in the guide.

Signed-off-by: Rae Moar <rmoar@google.com>
---
 tools/testing/kunit/kunit_json.py | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/tools/testing/kunit/kunit_json.py b/tools/testing/kunit/kunit_json.py
index 10ff65689dd8..80fa4e354a17 100644
--- a/tools/testing/kunit/kunit_json.py
+++ b/tools/testing/kunit/kunit_json.py
@@ -39,10 +39,20 @@ def _get_group_json(test: Test, common_fields: JsonObj) -> JsonObj:
 		status = _status_map.get(subtest.status, "FAIL")
 		test_cases.append({"name": subtest.name, "status": status})
 
+	test_counts = test.counts
+	counts_json = {
+		"tests": test_counts.total(),
+		"passed": test_counts.passed,
+		"failed": test_counts.failed,
+		"crashed": test_counts.crashed,
+		"skipped": test_counts.skipped,
+		"errors": test_counts.errors,
+	}
 	test_group = {
 		"name": test.name,
 		"sub_groups": sub_groups,
 		"test_cases": test_cases,
+		"misc": counts_json
 	}
 	test_group.update(common_fields)
 	return test_group

base-commit: c2493384e8110d5a4792fff4b9d46e47b78ea10a
-- 
2.49.0.1101.gccaa498523-goog


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] kunit: tool: add test counts to JSON output
  2025-05-16 20:16 [PATCH] kunit: tool: add test counts to JSON output Rae Moar
@ 2025-05-17  9:42 ` David Gow
  2025-05-20  9:54 ` Thomas Weißschuh
  1 sibling, 0 replies; 3+ messages in thread
From: David Gow @ 2025-05-17  9:42 UTC (permalink / raw)
  To: Rae Moar
  Cc: brendan.higgins, skhan, dlatypov, kunit-dev, linux-kernel,
	linux-kselftest

[-- Attachment #1: Type: text/plain, Size: 2083 bytes --]

On Sat, 17 May 2025 at 04:17, Rae Moar <rmoar@google.com> wrote:
>
> Add the test counts to the JSON output from kunit.py. For example:
>
> ...
> "git_branch": "kselftest",
> "misc":
> {
>     "tests": 2,
>     "passed": 1.
>     "failed": 1,
>     "crashed": 0,
>     "skipped": 0,
>     "errors": 0,
> }
> ...
>
> To output the JSON using the following command:
> ./tools/testing/kunit/kunit.py run example --json
>
> This has been requested by KUnit users. The counts are in a "misc"
> field because the JSON output needs to be compliant with the KCIDB
> submission guide. There are no counts fields but there is a "misc" field
> in the guide.
>
> Signed-off-by: Rae Moar <rmoar@google.com>
> ---

Thanks! It's very nice to see `"failed": 0`!

Reviewed-by: David Gow <davidgow@google.com>

Cheers,
-- David

>  tools/testing/kunit/kunit_json.py | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/tools/testing/kunit/kunit_json.py b/tools/testing/kunit/kunit_json.py
> index 10ff65689dd8..80fa4e354a17 100644
> --- a/tools/testing/kunit/kunit_json.py
> +++ b/tools/testing/kunit/kunit_json.py
> @@ -39,10 +39,20 @@ def _get_group_json(test: Test, common_fields: JsonObj) -> JsonObj:
>                 status = _status_map.get(subtest.status, "FAIL")
>                 test_cases.append({"name": subtest.name, "status": status})
>
> +       test_counts = test.counts
> +       counts_json = {
> +               "tests": test_counts.total(),
> +               "passed": test_counts.passed,
> +               "failed": test_counts.failed,
> +               "crashed": test_counts.crashed,
> +               "skipped": test_counts.skipped,
> +               "errors": test_counts.errors,
> +       }
>         test_group = {
>                 "name": test.name,
>                 "sub_groups": sub_groups,
>                 "test_cases": test_cases,
> +               "misc": counts_json
>         }
>         test_group.update(common_fields)
>         return test_group
>
> base-commit: c2493384e8110d5a4792fff4b9d46e47b78ea10a
> --
> 2.49.0.1101.gccaa498523-goog
>

[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5281 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] kunit: tool: add test counts to JSON output
  2025-05-16 20:16 [PATCH] kunit: tool: add test counts to JSON output Rae Moar
  2025-05-17  9:42 ` David Gow
@ 2025-05-20  9:54 ` Thomas Weißschuh
  1 sibling, 0 replies; 3+ messages in thread
From: Thomas Weißschuh @ 2025-05-20  9:54 UTC (permalink / raw)
  To: Rae Moar, skhan
  Cc: davidgow, brendan.higgins, dlatypov, kunit-dev, linux-kernel,
	linux-kselftest

On 2025-05-16 20:16:15+0000, Rae Moar wrote:
<snip>

>  	test_group = {
>  		"name": test.name,
>  		"sub_groups": sub_groups,
>  		"test_cases": test_cases,
> +		"misc": counts_json

Should have a trailing comma for future extensibility.
In case history is rewritten anyways, this could be fixed up.

>  	}
>  	test_group.update(common_fields)
>  	return test_group
> 
> base-commit: c2493384e8110d5a4792fff4b9d46e47b78ea10a
> -- 
> 2.49.0.1101.gccaa498523-goog
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-05-20  9:54 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-05-16 20:16 [PATCH] kunit: tool: add test counts to JSON output Rae Moar
2025-05-17  9:42 ` David Gow
2025-05-20  9:54 ` Thomas Weißschuh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®