]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
lib/tests: convert test_uuid module to KUnit
authorRyota Sakamoto <sakamo.ryota@gmail.com>
Mon, 15 Dec 2025 13:43:22 +0000 (13:43 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Wed, 21 Jan 2026 03:44:18 +0000 (19:44 -0800)
Move lib/test_uuid.c to lib/tests/uuid_kunit.c and convert it to use KUnit.

This change switches the ad-hoc test code to standard KUnit test cases.
The test data remains the same, but the verification logic is updated to
use KUNIT_EXPECT_* macros.

Also remove CONFIG_TEST_UUID from arch/*/configs/* because it is no longer
used.  The new CONFIG_UUID_KUNIT_TEST will be automatically enabled by
CONFIG_KUNIT_ALL_TESTS.

[lukas.bulwahn@redhat.com: MAINTAINERS: adjust file entry in UUID HELPERS]
Link: https://lkml.kernel.org/r/20251217053907.2778515-1-lukas.bulwahn@redhat.com
Link: https://lkml.kernel.org/r/20251215134322.12949-1-sakamo.ryota@gmail.com
Signed-off-by: Ryota Sakamoto <sakamo.ryota@gmail.com>
Signed-off-by: Lukas Bulwahn <lukas.bulwahn@redhat.com>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: David Gow <davidgow@google.com>
Cc: Andriy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Brendan Higgins <brendan.higgins@linux.dev>
Cc: Lukas Bulwahn <lukas.bulwahn@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
19 files changed:
MAINTAINERS
arch/m68k/configs/amiga_defconfig
arch/m68k/configs/apollo_defconfig
arch/m68k/configs/atari_defconfig
arch/m68k/configs/bvme6000_defconfig
arch/m68k/configs/hp300_defconfig
arch/m68k/configs/mac_defconfig
arch/m68k/configs/multi_defconfig
arch/m68k/configs/mvme147_defconfig
arch/m68k/configs/mvme16x_defconfig
arch/m68k/configs/q40_defconfig
arch/m68k/configs/sun3_defconfig
arch/m68k/configs/sun3x_defconfig
arch/powerpc/configs/ppc64_defconfig
lib/Kconfig.debug
lib/Makefile
lib/test_uuid.c [deleted file]
lib/tests/Makefile
lib/tests/uuid_kunit.c [new file with mode: 0644]

index ebc2f1bc0ade3241e312ae1cd4537122a8b6bf0d..99407c4c009567523a7cde155f3cbae2a7ca3596 100644 (file)
@@ -27260,7 +27260,7 @@ R:      Andy Shevchenko <andriy.shevchenko@linux.intel.com>
 L:     linux-kernel@vger.kernel.org
 S:     Maintained
 F:     include/linux/uuid.h
-F:     lib/test_uuid.c
+F:     lib/tests/uuid_kunit.c
 F:     lib/uuid.c
 
 UV SYSFS DRIVER
index bfc1ee7c8158d6e165cd2d6ba71415866b5c5625..1439abb69f733292ce9c9c06b0e9415ed9708f52 100644 (file)
@@ -618,7 +618,6 @@ CONFIG_ASYNC_RAID6_TEST=m
 CONFIG_TEST_HEXDUMP=m
 CONFIG_TEST_KSTRTOX=m
 CONFIG_TEST_BITMAP=m
-CONFIG_TEST_UUID=m
 CONFIG_TEST_XARRAY=m
 CONFIG_TEST_MAPLE_TREE=m
 CONFIG_TEST_RHASHTABLE=m
index d9d1f3c4c70d7808a74876b3c1faf13d0465da46..6a4e71866f60fd3d689ef65b3bd334963d89118b 100644 (file)
@@ -575,7 +575,6 @@ CONFIG_ASYNC_RAID6_TEST=m
 CONFIG_TEST_HEXDUMP=m
 CONFIG_TEST_KSTRTOX=m
 CONFIG_TEST_BITMAP=m
-CONFIG_TEST_UUID=m
 CONFIG_TEST_XARRAY=m
 CONFIG_TEST_MAPLE_TREE=m
 CONFIG_TEST_RHASHTABLE=m
index 523205adccc89f673bb9f2b3fd65173f377cec1c..46ad7d57b4fc79c80a74de2d1df4cabbfd220982 100644 (file)
@@ -595,7 +595,6 @@ CONFIG_ASYNC_RAID6_TEST=m
 CONFIG_TEST_HEXDUMP=m
 CONFIG_TEST_KSTRTOX=m
 CONFIG_TEST_BITMAP=m
-CONFIG_TEST_UUID=m
 CONFIG_TEST_XARRAY=m
 CONFIG_TEST_MAPLE_TREE=m
 CONFIG_TEST_RHASHTABLE=m
index 7b0a4ef0b010f21f9762bc5d651c55b9c9c42251..867bfa13a44c98d362c1d1cf21aff8fa6518a438 100644 (file)
@@ -567,7 +567,6 @@ CONFIG_ASYNC_RAID6_TEST=m
 CONFIG_TEST_HEXDUMP=m
 CONFIG_TEST_KSTRTOX=m
 CONFIG_TEST_BITMAP=m
-CONFIG_TEST_UUID=m
 CONFIG_TEST_XARRAY=m
 CONFIG_TEST_MAPLE_TREE=m
 CONFIG_TEST_RHASHTABLE=m
index 089c5c394c625fd6d77255f3754376386a35fd57..5dfe602cafd4042ae2b89b0673bd1546e2e8af2f 100644 (file)
@@ -577,7 +577,6 @@ CONFIG_ASYNC_RAID6_TEST=m
 CONFIG_TEST_HEXDUMP=m
 CONFIG_TEST_KSTRTOX=m
 CONFIG_TEST_BITMAP=m
-CONFIG_TEST_UUID=m
 CONFIG_TEST_XARRAY=m
 CONFIG_TEST_MAPLE_TREE=m
 CONFIG_TEST_RHASHTABLE=m
index 5f2484c36733de81f461b5935bc0cd4fbf36af65..f5d30310a34955920c816e2d4cb71e4e405231cf 100644 (file)
@@ -594,7 +594,6 @@ CONFIG_ASYNC_RAID6_TEST=m
 CONFIG_TEST_HEXDUMP=m
 CONFIG_TEST_KSTRTOX=m
 CONFIG_TEST_BITMAP=m
-CONFIG_TEST_UUID=m
 CONFIG_TEST_XARRAY=m
 CONFIG_TEST_MAPLE_TREE=m
 CONFIG_TEST_RHASHTABLE=m
index 74f0a1f6d8717fc0abf2c64dda36d81cbb43b4d0..fe54e9222cc0f096c36343b91419fe5c137672d5 100644 (file)
@@ -681,7 +681,6 @@ CONFIG_ASYNC_RAID6_TEST=m
 CONFIG_TEST_HEXDUMP=m
 CONFIG_TEST_KSTRTOX=m
 CONFIG_TEST_BITMAP=m
-CONFIG_TEST_UUID=m
 CONFIG_TEST_XARRAY=m
 CONFIG_TEST_MAPLE_TREE=m
 CONFIG_TEST_RHASHTABLE=m
index 4bee18c820e4cf97c543324560800c47d7780663..4ff2ff0993ad09f32bf635dee9876a277f788bb1 100644 (file)
@@ -567,7 +567,6 @@ CONFIG_ASYNC_RAID6_TEST=m
 CONFIG_TEST_HEXDUMP=m
 CONFIG_TEST_KSTRTOX=m
 CONFIG_TEST_BITMAP=m
-CONFIG_TEST_UUID=m
 CONFIG_TEST_XARRAY=m
 CONFIG_TEST_MAPLE_TREE=m
 CONFIG_TEST_RHASHTABLE=m
index 322c17e55c9aeddce8a75b4399112cfa701d1b3b..6bb4738a65aa5c69cac63ac73d5b1068dc298693 100644 (file)
@@ -568,7 +568,6 @@ CONFIG_ASYNC_RAID6_TEST=m
 CONFIG_TEST_HEXDUMP=m
 CONFIG_TEST_KSTRTOX=m
 CONFIG_TEST_BITMAP=m
-CONFIG_TEST_UUID=m
 CONFIG_TEST_XARRAY=m
 CONFIG_TEST_MAPLE_TREE=m
 CONFIG_TEST_RHASHTABLE=m
index 82f9baab8feaa8bbd9fb5c0970ac035e7f4eac77..14166c8fe2349d81846f731d9ee46158976936e8 100644 (file)
@@ -584,7 +584,6 @@ CONFIG_ASYNC_RAID6_TEST=m
 CONFIG_TEST_HEXDUMP=m
 CONFIG_TEST_KSTRTOX=m
 CONFIG_TEST_BITMAP=m
-CONFIG_TEST_UUID=m
 CONFIG_TEST_XARRAY=m
 CONFIG_TEST_MAPLE_TREE=m
 CONFIG_TEST_RHASHTABLE=m
index f94ad226cb5b5a6089870a537d110c7c70fb2403..5db924e3caf72494aaa0e283fb0360182ce43a68 100644 (file)
@@ -564,7 +564,6 @@ CONFIG_ASYNC_RAID6_TEST=m
 CONFIG_TEST_HEXDUMP=m
 CONFIG_TEST_KSTRTOX=m
 CONFIG_TEST_BITMAP=m
-CONFIG_TEST_UUID=m
 CONFIG_TEST_XARRAY=m
 CONFIG_TEST_MAPLE_TREE=m
 CONFIG_TEST_RHASHTABLE=m
index a5ecfc505ab2df43724f532b86cbf2d2b5b718e6..318c9fe42f461c1357c96161fecfe3c2818196ae 100644 (file)
@@ -565,7 +565,6 @@ CONFIG_ASYNC_RAID6_TEST=m
 CONFIG_TEST_HEXDUMP=m
 CONFIG_TEST_KSTRTOX=m
 CONFIG_TEST_BITMAP=m
-CONFIG_TEST_UUID=m
 CONFIG_TEST_XARRAY=m
 CONFIG_TEST_MAPLE_TREE=m
 CONFIG_TEST_RHASHTABLE=m
index 2d92c11eea7e47ca81865fc41472c755c0a06e3b..684b3ea80f3979debfbaaf30a507bab8f346b86c 100644 (file)
@@ -443,7 +443,6 @@ CONFIG_TEST_KSTRTOX=m
 CONFIG_TEST_PRINTF=m
 CONFIG_TEST_SCANF=m
 CONFIG_TEST_BITMAP=m
-CONFIG_TEST_UUID=m
 CONFIG_TEST_XARRAY=m
 CONFIG_TEST_MAPLE_TREE=m
 CONFIG_TEST_RHASHTABLE=m
index ba36939fda79bf890834b586c366a28acd434ef9..4bfca37f313e907b5a50fb20d6700cee5c55b457 100644 (file)
@@ -2499,9 +2499,6 @@ config TEST_BITMAP
 
          If unsure, say N.
 
-config TEST_UUID
-       tristate "Test functions located in the uuid module at runtime"
-
 config TEST_XARRAY
        tristate "Test the XArray code at runtime"
 
@@ -3285,6 +3282,17 @@ config RATELIMIT_KUNIT_TEST
 
          If unsure, say N.
 
+config UUID_KUNIT_TEST
+       tristate "KUnit test for UUID" if !KUNIT_ALL_TESTS
+       depends on KUNIT
+       default KUNIT_ALL_TESTS
+       help
+         This option enables the KUnit test suite for the uuid library,
+         which provides functions for generating and parsing UUID and GUID.
+         The test suite checks parsing of UUID and GUID strings.
+
+         If unsure, say N.
+
 config INT_POW_KUNIT_TEST
        tristate "Integer exponentiation (int_pow) test" if !KUNIT_ALL_TESTS
        depends on KUNIT
index aaf677cf4527e8f0889b06d5ff6746a1dd1263a7..586a9f9b27a9a74c4f625b27dc122a7d70b9bff8 100644 (file)
@@ -89,7 +89,6 @@ ifeq ($(CONFIG_CC_IS_CLANG)$(CONFIG_KASAN),yy)
 GCOV_PROFILE_test_bitmap.o := n
 endif
 
-obj-$(CONFIG_TEST_UUID) += test_uuid.o
 obj-$(CONFIG_TEST_XARRAY) += test_xarray.o
 obj-$(CONFIG_TEST_MAPLE_TREE) += test_maple_tree.o
 obj-$(CONFIG_TEST_PARMAN) += test_parman.o
diff --git a/lib/test_uuid.c b/lib/test_uuid.c
deleted file mode 100644 (file)
index 0124fad..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Test cases for lib/uuid.c module.
- */
-#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/string.h>
-#include <linux/uuid.h>
-
-struct test_uuid_data {
-       const char *uuid;
-       guid_t le;
-       uuid_t be;
-};
-
-static const struct test_uuid_data test_uuid_test_data[] = {
-       {
-               .uuid = "c33f4995-3701-450e-9fbf-206a2e98e576",
-               .le = GUID_INIT(0xc33f4995, 0x3701, 0x450e, 0x9f, 0xbf, 0x20, 0x6a, 0x2e, 0x98, 0xe5, 0x76),
-               .be = UUID_INIT(0xc33f4995, 0x3701, 0x450e, 0x9f, 0xbf, 0x20, 0x6a, 0x2e, 0x98, 0xe5, 0x76),
-       },
-       {
-               .uuid = "64b4371c-77c1-48f9-8221-29f054fc023b",
-               .le = GUID_INIT(0x64b4371c, 0x77c1, 0x48f9, 0x82, 0x21, 0x29, 0xf0, 0x54, 0xfc, 0x02, 0x3b),
-               .be = UUID_INIT(0x64b4371c, 0x77c1, 0x48f9, 0x82, 0x21, 0x29, 0xf0, 0x54, 0xfc, 0x02, 0x3b),
-       },
-       {
-               .uuid = "0cb4ddff-a545-4401-9d06-688af53e7f84",
-               .le = GUID_INIT(0x0cb4ddff, 0xa545, 0x4401, 0x9d, 0x06, 0x68, 0x8a, 0xf5, 0x3e, 0x7f, 0x84),
-               .be = UUID_INIT(0x0cb4ddff, 0xa545, 0x4401, 0x9d, 0x06, 0x68, 0x8a, 0xf5, 0x3e, 0x7f, 0x84),
-       },
-};
-
-static const char * const test_uuid_wrong_data[] = {
-       "c33f4995-3701-450e-9fbf206a2e98e576 ", /* no hyphen(s) */
-       "64b4371c-77c1-48f9-8221-29f054XX023b", /* invalid character(s) */
-       "0cb4ddff-a545-4401-9d06-688af53e",     /* not enough data */
-};
-
-static unsigned total_tests __initdata;
-static unsigned failed_tests __initdata;
-
-static void __init test_uuid_failed(const char *prefix, bool wrong, bool be,
-                                   const char *data, const char *actual)
-{
-       pr_err("%s test #%u %s %s data: '%s'\n",
-              prefix,
-              total_tests,
-              wrong ? "passed on wrong" : "failed on",
-              be ? "BE" : "LE",
-              data);
-       if (actual && *actual)
-               pr_err("%s test #%u actual data: '%s'\n",
-                      prefix,
-                      total_tests,
-                      actual);
-       failed_tests++;
-}
-
-static void __init test_uuid_test(const struct test_uuid_data *data)
-{
-       guid_t le;
-       uuid_t be;
-       char buf[48];
-
-       /* LE */
-       total_tests++;
-       if (guid_parse(data->uuid, &le))
-               test_uuid_failed("conversion", false, false, data->uuid, NULL);
-
-       total_tests++;
-       if (!guid_equal(&data->le, &le)) {
-               sprintf(buf, "%pUl", &le);
-               test_uuid_failed("cmp", false, false, data->uuid, buf);
-       }
-
-       /* BE */
-       total_tests++;
-       if (uuid_parse(data->uuid, &be))
-               test_uuid_failed("conversion", false, true, data->uuid, NULL);
-
-       total_tests++;
-       if (!uuid_equal(&data->be, &be)) {
-               sprintf(buf, "%pUb", &be);
-               test_uuid_failed("cmp", false, true, data->uuid, buf);
-       }
-}
-
-static void __init test_uuid_wrong(const char *data)
-{
-       guid_t le;
-       uuid_t be;
-
-       /* LE */
-       total_tests++;
-       if (!guid_parse(data, &le))
-               test_uuid_failed("negative", true, false, data, NULL);
-
-       /* BE */
-       total_tests++;
-       if (!uuid_parse(data, &be))
-               test_uuid_failed("negative", true, true, data, NULL);
-}
-
-static int __init test_uuid_init(void)
-{
-       unsigned int i;
-
-       for (i = 0; i < ARRAY_SIZE(test_uuid_test_data); i++)
-               test_uuid_test(&test_uuid_test_data[i]);
-
-       for (i = 0; i < ARRAY_SIZE(test_uuid_wrong_data); i++)
-               test_uuid_wrong(test_uuid_wrong_data[i]);
-
-       if (failed_tests == 0)
-               pr_info("all %u tests passed\n", total_tests);
-       else
-               pr_err("failed %u out of %u tests\n", failed_tests, total_tests);
-
-       return failed_tests ? -EINVAL : 0;
-}
-module_init(test_uuid_init);
-
-static void __exit test_uuid_exit(void)
-{
-       /* do nothing */
-}
-module_exit(test_uuid_exit);
-
-MODULE_AUTHOR("Andy Shevchenko <andriy.shevchenko@linux.intel.com>");
-MODULE_DESCRIPTION("Test cases for lib/uuid.c module");
-MODULE_LICENSE("Dual BSD/GPL");
index 601dba4b7d966d568d0bb6671dffaf4d68489549..9a20608f65f5db57830cc09bf48bc7b567735044 100644 (file)
@@ -49,5 +49,6 @@ obj-$(CONFIG_STRING_HELPERS_KUNIT_TEST) += string_helpers_kunit.o
 obj-$(CONFIG_USERCOPY_KUNIT_TEST) += usercopy_kunit.o
 obj-$(CONFIG_UTIL_MACROS_KUNIT) += util_macros_kunit.o
 obj-$(CONFIG_RATELIMIT_KUNIT_TEST) += test_ratelimit.o
+obj-$(CONFIG_UUID_KUNIT_TEST) += uuid_kunit.o
 
 obj-$(CONFIG_TEST_RUNTIME_MODULE)              += module/
diff --git a/lib/tests/uuid_kunit.c b/lib/tests/uuid_kunit.c
new file mode 100644 (file)
index 0000000..de71b26
--- /dev/null
@@ -0,0 +1,106 @@
+// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
+/*
+ * Test cases for lib/uuid.c module.
+ */
+
+#include <kunit/test.h>
+#include <linux/uuid.h>
+
+struct test_uuid_data {
+       const char *uuid;
+       guid_t le;
+       uuid_t be;
+};
+
+static const struct test_uuid_data test_uuid_test_data[] = {
+       {
+               .uuid = "c33f4995-3701-450e-9fbf-206a2e98e576",
+               .le = GUID_INIT(0xc33f4995, 0x3701, 0x450e, 0x9f, 0xbf, 0x20, 0x6a, 0x2e, 0x98, 0xe5, 0x76),
+               .be = UUID_INIT(0xc33f4995, 0x3701, 0x450e, 0x9f, 0xbf, 0x20, 0x6a, 0x2e, 0x98, 0xe5, 0x76),
+       },
+       {
+               .uuid = "64b4371c-77c1-48f9-8221-29f054fc023b",
+               .le = GUID_INIT(0x64b4371c, 0x77c1, 0x48f9, 0x82, 0x21, 0x29, 0xf0, 0x54, 0xfc, 0x02, 0x3b),
+               .be = UUID_INIT(0x64b4371c, 0x77c1, 0x48f9, 0x82, 0x21, 0x29, 0xf0, 0x54, 0xfc, 0x02, 0x3b),
+       },
+       {
+               .uuid = "0cb4ddff-a545-4401-9d06-688af53e7f84",
+               .le = GUID_INIT(0x0cb4ddff, 0xa545, 0x4401, 0x9d, 0x06, 0x68, 0x8a, 0xf5, 0x3e, 0x7f, 0x84),
+               .be = UUID_INIT(0x0cb4ddff, 0xa545, 0x4401, 0x9d, 0x06, 0x68, 0x8a, 0xf5, 0x3e, 0x7f, 0x84),
+       },
+};
+
+static const char * const test_uuid_wrong_data[] = {
+       "c33f4995-3701-450e-9fbf206a2e98e576 ", /* no hyphen(s) */
+       "64b4371c-77c1-48f9-8221-29f054XX023b", /* invalid character(s) */
+       "0cb4ddff-a545-4401-9d06-688af53e",     /* not enough data */
+};
+
+static void uuid_test_guid_valid(struct kunit *test)
+{
+       unsigned int i;
+       const struct test_uuid_data *data;
+       guid_t le;
+
+       for (i = 0; i < ARRAY_SIZE(test_uuid_test_data); i++) {
+               data = &test_uuid_test_data[i];
+               KUNIT_EXPECT_EQ(test, guid_parse(data->uuid, &le), 0);
+               KUNIT_EXPECT_TRUE(test, guid_equal(&data->le, &le));
+       }
+}
+
+static void uuid_test_uuid_valid(struct kunit *test)
+{
+       unsigned int i;
+       const struct test_uuid_data *data;
+       uuid_t be;
+
+       for (i = 0; i < ARRAY_SIZE(test_uuid_test_data); i++) {
+               data = &test_uuid_test_data[i];
+               KUNIT_EXPECT_EQ(test, uuid_parse(data->uuid, &be), 0);
+               KUNIT_EXPECT_TRUE(test, uuid_equal(&data->be, &be));
+       }
+}
+
+static void uuid_test_guid_invalid(struct kunit *test)
+{
+       unsigned int i;
+       const char *uuid;
+       guid_t le;
+
+       for (i = 0; i < ARRAY_SIZE(test_uuid_wrong_data); i++) {
+               uuid = test_uuid_wrong_data[i];
+               KUNIT_EXPECT_EQ(test, guid_parse(uuid, &le), -EINVAL);
+       }
+}
+
+static void uuid_test_uuid_invalid(struct kunit *test)
+{
+       unsigned int i;
+       const char *uuid;
+       uuid_t be;
+
+       for (i = 0; i < ARRAY_SIZE(test_uuid_wrong_data); i++) {
+               uuid = test_uuid_wrong_data[i];
+               KUNIT_EXPECT_EQ(test, uuid_parse(uuid, &be), -EINVAL);
+       }
+}
+
+static struct kunit_case uuid_test_cases[] = {
+       KUNIT_CASE(uuid_test_guid_valid),
+       KUNIT_CASE(uuid_test_uuid_valid),
+       KUNIT_CASE(uuid_test_guid_invalid),
+       KUNIT_CASE(uuid_test_uuid_invalid),
+       {},
+};
+
+static struct kunit_suite uuid_test_suite = {
+       .name = "uuid",
+       .test_cases = uuid_test_cases,
+};
+
+kunit_test_suite(uuid_test_suite);
+
+MODULE_AUTHOR("Andy Shevchenko <andriy.shevchenko@linux.intel.com>");
+MODULE_DESCRIPTION("Test cases for lib/uuid.c module");
+MODULE_LICENSE("Dual BSD/GPL");