lkml.org 
[lkml]   [2022]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.17 157/772] kunit: tool: make parser stop overwriting status of suites w/ no_tests
    Date
    From: Daniel Latypov <dlatypov@google.com>

    [ Upstream commit dbf0b0d53a2b5afa6ef7372dcedf52302669fc2c ]

    Consider this invocation
    $ ./tools/testing/kunit/kunit.py parse <<EOF
    TAP version 14
    1..2
    ok 1 - suite
    # Subtest: no_tests_suite
    # catastrophic error!
    not ok 1 - no_tests_suite
    EOF

    It will have a 0 exit code even though there's a "not ok".

    Consider this one:
    $ ./tools/testing/kunit/kunit.py parse <<EOF
    TAP version 14
    1..2
    ok 1 - suite
    not ok 1 - no_tests_suite
    EOF

    It will a non-zero exit code.

    Why?
    We have this line in the kunit_parser.py
    > parent_test = parse_test_header(lines, test)
    where we have special handling when we see "# Subtest" and we ignore the
    explicit reported "not ok 1" status!

    Also, NO_TESTS at a suite-level only results in a non-zero status code
    where then there's only one suite atm.

    This change is the minimal one to make sure we don't overwrite it.

    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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/testing/kunit/kunit_parser.py | 7 +++++--
    .../test_data/test_is_test_passed-no_tests_no_plan.log | 2 +-
    2 files changed, 6 insertions(+), 3 deletions(-)

    diff --git a/tools/testing/kunit/kunit_parser.py b/tools/testing/kunit/kunit_parser.py
    index 05ff334761dd..2f93ed1d7f99 100644
    --- a/tools/testing/kunit/kunit_parser.py
    +++ b/tools/testing/kunit/kunit_parser.py
    @@ -789,8 +789,11 @@ def parse_test(lines: LineStream, expected_num: int, log: List[str]) -> Test:

    # Check for there being no tests
    if parent_test and len(subtests) == 0:
    - test.status = TestStatus.NO_TESTS
    - test.add_error('0 tests run!')
    + # Don't override a bad status if this test had one reported.
    + # Assumption: no subtests means CRASHED is from Test.__init__()
    + if test.status in (TestStatus.TEST_CRASHED, TestStatus.SUCCESS):
    + test.status = TestStatus.NO_TESTS
    + test.add_error('0 tests run!')

    # Add statuses to TestCounts attribute in Test object
    bubble_up_test_results(test)
    diff --git a/tools/testing/kunit/test_data/test_is_test_passed-no_tests_no_plan.log b/tools/testing/kunit/test_data/test_is_test_passed-no_tests_no_plan.log
    index dd873c981108..4f81876ee6f1 100644
    --- a/tools/testing/kunit/test_data/test_is_test_passed-no_tests_no_plan.log
    +++ b/tools/testing/kunit/test_data/test_is_test_passed-no_tests_no_plan.log
    @@ -3,5 +3,5 @@ TAP version 14
    # Subtest: suite
    1..1
    # Subtest: case
    - ok 1 - case # SKIP
    + ok 1 - case
    ok 1 - suite
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-07 22:43    [W:2.935 / U:0.356 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site