• Daniel Latypov's avatar
    kunit: tool: better handling of quasi-bool args (--json, --raw_output) · d8c23ead
    Daniel Latypov authored
    Problem:
    
    What does this do?
    $ kunit.py run --json
    Well, it runs all the tests and prints test results out as JSON.
    
    And next is
    $ kunit.py run my-test-suite --json
    This runs just `my-test-suite` and prints results out as JSON.
    
    But what about?
    $ kunit.py run --json my-test-suite
    This runs all the tests and stores the json results in a "my-test-suite"
    file.
    
    Why:
    --json, and now --raw_output are actually string flags. They just have a
    default value. --json in particular takes the name of an output file.
    
    It was intended that you'd do
    $ kunit.py run --json=my_output_file my-test-suite
    if you ever wanted to specify the value.
    
    Workaround:
    It doesn't seem like there's a way to make
    https://docs.python.org/3/library/argparse.html only accept arg values
    after a '='.
    
    I believe that `--json` should "just work" regardless of where it is.
    So this patch automatically rewrites a bare `--json` to `--json=stdout`.
    
    That makes the examples above work the same way.
    Add a regression test that can catch this for --raw_output.
    
    Fixes: 6a499c9c ("kunit: tool: make --raw_output support only showing kunit output")
    Signed-off-by: default avatarDaniel Latypov <dlatypov@google.com>
    Tested-by: default avatarDavid Gow <davidgow@google.com>
    Reviewed-by: default avatarBrendan Higgins <brendanhiggins@google.com>
    Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
    d8c23ead
kunit_tool_test.py 18.6 KB