• Uriel Guajardo's avatar
    kunit: support failure from dynamic analysis tools · 359a3760
    Uriel Guajardo authored
    Add a kunit_fail_current_test() function to fail the currently running
    test, if any, with an error message.
    
    This is largely intended for dynamic analysis tools like UBSAN and for
    fakes.
    E.g. say I had a fake ops struct for testing and I wanted my `free`
    function to complain if it was called with an invalid argument, or
    caught a double-free. Most return void and have no normal means of
    signalling failure (e.g. super_operations, iommu_ops, etc.).
    
    Key points:
    * Always update current->kunit_test so anyone can use it.
      * commit 83c4e7a0 ("KUnit: KASAN Integration") only updated it for
      CONFIG_KASAN=y
    
    * Create a new header <kunit/test-bug.h> so non-test code doesn't have
    to include all of <kunit/test.h> (e.g. lib/ubsan.c)
    
    * Forward the file and line number to make it easier to track down
    failures
    
    * Declare the helper function for nice __printf() warnings about mismatched
    format strings even when KUnit is not enabled.
    
    Example output from kunit_fail_current_test("message"):
    [15:19:34] [FAILED] example_simple_test
    [15:19:34]     # example_simple_test: initializing
    [15:19:34]     # example_simple_test: lib/kunit/kunit-example-test.c:24: message
    [15:19:34]     not ok 1 - example_simple_test
    
    Fixed minor check patch with checkpatch --fix option:
    Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: default avatarDaniel Latypov <dlatypov@google.com>
    Signed-off-by: default avatarUriel Guajardo <urielguajardo@google.com>
    Reviewed-by: default avatarAlan Maguire <alan.maguire@oracle.com>
    Reviewed-by: default avatarBrendan Higgins <brendanhiggins@google.com>
    Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
    359a3760
test-bug.h 686 Bytes