Message ID | 20240403131936.787234-5-linux@roeck-us.net (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Add support for suppressing warning backtraces | expand |
On Wed, 3 Apr 2024 at 21:19, Guenter Roeck <linux@roeck-us.net> wrote: > > Document API functions for suppressing warning backtraces. > > Tested-by: Linux Kernel Functional Testing <lkft@linaro.org> > Acked-by: Dan Carpenter <dan.carpenter@linaro.org> > Reviewed-by: Kees Cook <keescook@chromium.org> > Signed-off-by: Guenter Roeck <linux@roeck-us.net> > --- This looks good to me: thanks for adding the documentation! If we add integration between this and the KUnit resource system, we'll need to add that to this documentation. I wonder if it would make sense to have an example where the DEFINE_SUPPRESSED_WARNING() is global, e.g., in the test init/exit functions. That might overcomplicate it a bit. It also might be nice to document the individual macros with kerneldoc comments. (Though, that could equally fit in patch #1). Still, this is the most important bit, so I'm happy to have it as-is. Reviewed-by: David Gow <davidgow@google.com> Cheers, -- David > v2: > - Rebased to v6.9-rc1 > - Added Tested-by:, Acked-by:, and Reviewed-by: tags > v3: > - Rebased to v6.9-rc2 > > Documentation/dev-tools/kunit/usage.rst | 30 ++++++++++++++++++++++++- > 1 file changed, 29 insertions(+), 1 deletion(-) > > diff --git a/Documentation/dev-tools/kunit/usage.rst b/Documentation/dev-tools/kunit/usage.rst > index 22955d56b379..8d3d36d4103d 100644 > --- a/Documentation/dev-tools/kunit/usage.rst > +++ b/Documentation/dev-tools/kunit/usage.rst > @@ -157,6 +157,34 @@ Alternatively, one can take full control over the error message by using > if (some_setup_function()) > KUNIT_FAIL(test, "Failed to setup thing for testing"); > > +Suppressing warning backtraces > +------------------------------ > + > +Some unit tests trigger warning backtraces either intentionally or as side > +effect. Such backtraces are normally undesirable since they distract from > +the actual test and may result in the impression that there is a problem. > + > +Such backtraces can be suppressed. To suppress a backtrace in some_function(), > +use the following code. > + > +.. code-block:: c > + > + static void some_test(struct kunit *test) > + { > + DEFINE_SUPPRESSED_WARNING(some_function); > + > + START_SUPPRESSED_WARNING(some_function); > + trigger_backtrace(); > + END_SUPPRESSED_WARNING(some_function); > + } > + > +SUPPRESSED_WARNING_COUNT() returns the number of suppressed backtraces. If the > +suppressed backtrace was triggered on purpose, this can be used to check if > +the backtrace was actually triggered. > + > +.. code-block:: c > + > + KUNIT_EXPECT_EQ(test, SUPPRESSED_WARNING_COUNT(some_function), 1); > > Test Suites > ~~~~~~~~~~~ > @@ -857,4 +885,4 @@ For example: > dev_managed_string = devm_kstrdup(fake_device, "Hello, World!"); > > // Everything is cleaned up automatically when the test ends. > - } > \ No newline at end of file > + } > -- > 2.39.2 >
diff --git a/Documentation/dev-tools/kunit/usage.rst b/Documentation/dev-tools/kunit/usage.rst index 22955d56b379..8d3d36d4103d 100644 --- a/Documentation/dev-tools/kunit/usage.rst +++ b/Documentation/dev-tools/kunit/usage.rst @@ -157,6 +157,34 @@ Alternatively, one can take full control over the error message by using if (some_setup_function()) KUNIT_FAIL(test, "Failed to setup thing for testing"); +Suppressing warning backtraces +------------------------------ + +Some unit tests trigger warning backtraces either intentionally or as side +effect. Such backtraces are normally undesirable since they distract from +the actual test and may result in the impression that there is a problem. + +Such backtraces can be suppressed. To suppress a backtrace in some_function(), +use the following code. + +.. code-block:: c + + static void some_test(struct kunit *test) + { + DEFINE_SUPPRESSED_WARNING(some_function); + + START_SUPPRESSED_WARNING(some_function); + trigger_backtrace(); + END_SUPPRESSED_WARNING(some_function); + } + +SUPPRESSED_WARNING_COUNT() returns the number of suppressed backtraces. If the +suppressed backtrace was triggered on purpose, this can be used to check if +the backtrace was actually triggered. + +.. code-block:: c + + KUNIT_EXPECT_EQ(test, SUPPRESSED_WARNING_COUNT(some_function), 1); Test Suites ~~~~~~~~~~~ @@ -857,4 +885,4 @@ For example: dev_managed_string = devm_kstrdup(fake_device, "Hello, World!"); // Everything is cleaned up automatically when the test ends. - } \ No newline at end of file + }