On Tue, Nov 22, 2022 at 3:55 AM 'Daniel Latypov' via KUnit Development <kunit-dev@xxxxxxxxxxxxxxxx> wrote: > > When --raw_output is set (to any value), we don't actually parse the > test results. So asking to print the test results as json doesn't make > sense. > > We internally create a fake test with one passing subtest, so --json > would actually print out something misleading. > > This patch: > * Rewords the flag descriptions so hopefully this is more obvious. > * Also updates --raw_output's description to note the default behavior > is to print out only "KUnit" results (actually any KTAP results) > * also renames and refactors some related logic for clarity (e.g. > test_result => test, it's a kunit_parser.Test object). > > Notably, this patch does not make it an error to specify --json and > --raw_output together. This is an edge case, but I know of at least one > wrapper around kunit.py that always sets --json. You'd never be able to > use --raw_output with that wrapper. > > Signed-off-by: Daniel Latypov <dlatypov@xxxxxxxxxx> > --- This seems sensible enough to me (and works fine here). I really like the new flag descriptions, too. Reviewed-by: David Gow <davidgow@xxxxxxxxxx> Cheers, -- David > tools/testing/kunit/kunit.py | 34 ++++++++++++++++++---------------- > 1 file changed, 18 insertions(+), 16 deletions(-) > > diff --git a/tools/testing/kunit/kunit.py b/tools/testing/kunit/kunit.py > index 4d4663fb578b..e7b6549712d6 100755 > --- a/tools/testing/kunit/kunit.py > +++ b/tools/testing/kunit/kunit.py > @@ -192,12 +192,11 @@ def _map_to_overall_status(test_status: kunit_parser.TestStatus) -> KunitStatus: > def parse_tests(request: KunitParseRequest, metadata: kunit_json.Metadata, input_data: Iterable[str]) -> Tuple[KunitResult, kunit_parser.Test]: > parse_start = time.time() > > - test_result = kunit_parser.Test() > - > if request.raw_output: > # Treat unparsed results as one passing test. > - test_result.status = kunit_parser.TestStatus.SUCCESS > - test_result.counts.passed = 1 > + fake_test = kunit_parser.Test() > + fake_test.status = kunit_parser.TestStatus.SUCCESS > + fake_test.counts.passed = 1 > > output: Iterable[str] = input_data > if request.raw_output == 'all': > @@ -206,14 +205,17 @@ def parse_tests(request: KunitParseRequest, metadata: kunit_json.Metadata, input > output = kunit_parser.extract_tap_lines(output, lstrip=False) > for line in output: > print(line.rstrip()) > + parse_time = time.time() - parse_start > + return KunitResult(KunitStatus.SUCCESS, parse_time), fake_test > > - else: > - test_result = kunit_parser.parse_run_tests(input_data) > - parse_end = time.time() > + > + # Actually parse the test results. > + test = kunit_parser.parse_run_tests(input_data) > + parse_time = time.time() - parse_start > > if request.json: > json_str = kunit_json.get_json_result( > - test=test_result, > + test=test, > metadata=metadata) > if request.json == 'stdout': > print(json_str) > @@ -223,10 +225,10 @@ def parse_tests(request: KunitParseRequest, metadata: kunit_json.Metadata, input > stdout.print_with_timestamp("Test results stored in %s" % > os.path.abspath(request.json)) > > - if test_result.status != kunit_parser.TestStatus.SUCCESS: > - return KunitResult(KunitStatus.TEST_FAILURE, parse_end - parse_start), test_result > + if test.status != kunit_parser.TestStatus.SUCCESS: > + return KunitResult(KunitStatus.TEST_FAILURE, parse_time), test > > - return KunitResult(KunitStatus.SUCCESS, parse_end - parse_start), test_result > + return KunitResult(KunitStatus.SUCCESS, parse_time), test > > def run_tests(linux: kunit_kernel.LinuxSourceTree, > request: KunitRequest) -> KunitResult: > @@ -359,14 +361,14 @@ def add_exec_opts(parser) -> None: > choices=['suite', 'test']) > > def add_parse_opts(parser) -> None: > - parser.add_argument('--raw_output', help='If set don\'t format output from kernel. ' > - 'If set to --raw_output=kunit, filters to just KUnit output.', > + parser.add_argument('--raw_output', help='If set don\'t parse output from kernel. ' > + 'By default, filters to just KUnit output. Use ' > + '--raw_output=all to show everything', > type=str, nargs='?', const='all', default=None, choices=['all', 'kunit']) > parser.add_argument('--json', > nargs='?', > - help='Stores test results in a JSON, and either ' > - 'prints to stdout or saves to file if a ' > - 'filename is specified', > + help='Prints parsed test results as JSON to stdout or a file if ' > + 'a filename is specified. Does nothing if --raw_output is set.', > type=str, const='stdout', default=None, metavar='FILE') > > > > base-commit: 870f63b7cd78d0055902d839a60408f7428b4e84 > -- > 2.38.1.584.g0f3c55d4c2-goog > > -- > You received this message because you are subscribed to the Google Groups "KUnit Development" group. > To unsubscribe from this group and stop receiving emails from it, send an email to kunit-dev+unsubscribe@xxxxxxxxxxxxxxxx. > To view this discussion on the web visit https://groups.google.com/d/msgid/kunit-dev/20221121195526.425882-1-dlatypov%40google.com.
Attachment:
smime.p7s
Description: S/MIME Cryptographic Signature