Re: [PATCH v2] scanf: convert self-test to KUnit

From: Petr Mladek
Date: Tue Feb 04 2025 - 03:39:28 EST


On Mon 2025-02-03 06:48:05, Tamir Duberstein wrote:
> Convert the scanf() self-test to a KUnit test.
>
> In the interest of keeping the patch reasonably-sized this doesn't
> refactor the tests into proper parameterized tests - it's all one big
> test case.
>
> Signed-off-by: Tamir Duberstein <tamird@xxxxxxxxx>
> Acked-by: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> # m68k
> ---
> This is one of just 3 remaining "Test Module" kselftests (the others
> being bitmap and printf), the rest having been converted to KUnit. In
> addition to the enclosed patch, please consider this an RFC on the
> removal of the "Test Module" kselftest machinery.
>
> I tested this using:
>
> $ tools/testing/kunit/kunit.py run --arch arm64 --make_options LLVM=1 scanf

Fortunately, the following still works ;-)

$ modprobe scanf_kunit

Just the messages in dmesg are in the ktap format.

Anyway, I do not have strong opinion. I am fine with this change
when similar tests are being tranformed to kunit tests.

Acked-by: Petr Mladek <pmladek@xxxxxxxx>

Should this go via the printk tree, please?
Or is David going to take it via the kunit tree?

Also see a nit below.

> --- a/lib/Kconfig.debug
> +++ b/lib/Kconfig.debug
> @@ -2427,6 +2427,23 @@ config ASYNC_RAID6_TEST
> config TEST_HEXDUMP
> tristate "Test functions located in the hexdump module at runtime"
>
> +config SCANF_KUNIT_TEST
> + tristate "KUnit test scanf() family of functions at runtime" if !KUNIT_ALL_TESTS
> + depends on KUNIT
> + default KUNIT_ALL_TESTS
> + help
> + Enable this option to test the scanf functions at boot.
> +
> + KUnit tests run during boot and output the results to the debug log
> + in TAP format (http://testanything.org/). Only useful for kernel devs
> + running the KUnit test harness, and not intended for inclusion into a
> + production build.
> +
> + For more information on KUnit and unit tests in general please refer
> + to the KUnit documentation in Documentation/dev-tools/kunit/.
> +
> + If unsure, say N.
> +
> config STRING_KUNIT_TEST
> tristate "KUnit test string functions at runtime" if !KUNIT_ALL_TESTS
> depends on KUNIT
> @@ -2443,9 +2460,6 @@ config TEST_KSTRTOX
> config TEST_PRINTF
> tristate "Test printf() family of functions at runtime"
>
> -config TEST_SCANF
> - tristate "Test scanf() family of functions at runtime"
> -
> config TEST_BITMAP
> tristate "Test bitmap_*() family of functions at runtime"
> help
> diff --git a/lib/Makefile b/lib/Makefile
> index d5cfc7afbbb8..a53cf6dd1505 100644
> --- a/lib/Makefile
> +++ b/lib/Makefile
> @@ -85,7 +85,6 @@ obj-$(CONFIG_TEST_STATIC_KEYS) += test_static_keys.o
> obj-$(CONFIG_TEST_STATIC_KEYS) += test_static_key_base.o
> obj-$(CONFIG_TEST_DYNAMIC_DEBUG) += test_dynamic_debug.o
> obj-$(CONFIG_TEST_PRINTF) += test_printf.o
> -obj-$(CONFIG_TEST_SCANF) += test_scanf.o
>
> obj-$(CONFIG_TEST_BITMAP) += test_bitmap.o
> ifeq ($(CONFIG_CC_IS_CLANG)$(CONFIG_KASAN),yy)
> @@ -373,8 +372,9 @@ CFLAGS_bitfield_kunit.o := $(DISABLE_STRUCTLEAK_PLUGIN)
> obj-$(CONFIG_BITFIELD_KUNIT) += bitfield_kunit.o
> obj-$(CONFIG_CHECKSUM_KUNIT) += checksum_kunit.o
> obj-$(CONFIG_UTIL_MACROS_KUNIT) += util_macros_kunit.o
> -obj-$(CONFIG_LIST_KUNIT_TEST) += list-test.o
> obj-$(CONFIG_HASHTABLE_KUNIT_TEST) += hashtable_test.o
> +obj-$(CONFIG_LIST_KUNIT_TEST) += list-test.o

This looks like an unrelated change.

> +obj-$(CONFIG_SCANF_KUNIT_TEST) += scanf_kunit.o
> obj-$(CONFIG_LINEAR_RANGES_TEST) += test_linear_ranges.o
> obj-$(CONFIG_BITS_TEST) += test_bits.o
> obj-$(CONFIG_CMDLINE_KUNIT_TEST) += cmdline_kunit.o

Best Regards,
Petr