lib: math: Move KUnit tests into tests/ subdir
authorLuis Felipe Hernandez <luis.hernandez093@gmail.com>
Mon, 2 Dec 2024 07:55:38 +0000 (15:55 +0800)
committerKees Cook <kees@kernel.org>
Tue, 11 Feb 2025 02:24:57 +0000 (18:24 -0800)
This patch is a follow-up task from a discussion stemming from point 3
in a recent patch introducing the int_pow kunit test [1] and
documentation regarding kunit test style and nomenclature [2].

Colocate all kunit test suites in lib/math/tests/ and
follow recommended naming convention for files <suite>_kunit.c
and kconfig entries CONFIG_<name>_KUNIT_TEST.

Link: https://lore.kernel.org/all/CABVgOS=-vh5TqHFCq_jo=ffq8v_nGgr6JsPnOZag3e6+19ysxQ@mail.gmail.com/
Link: https://docs.kernel.org/dev-tools/kunit/style.html
Signed-off-by: Luis Felipe Hernandez <luis.hernandez093@gmail.com>
Acked-by: Nicolas Pitre <npitre@baylibre.com>
Reviewed-by: David Gow <davidgow@google.com>
Reviewed-by: Rae Moar <rmoar@google.com>
Link: https://lore.kernel.org/r/20241202075545.3648096-2-davidgow@google.com
Signed-off-by: Kees Cook <kees@kernel.org>
lib/Kconfig.debug
lib/math/Makefile
lib/math/rational-test.c [deleted file]
lib/math/tests/Makefile
lib/math/tests/rational_kunit.c [new file with mode: 0644]

index 1af972a92d06f6e3f7beec4bd086c00b412c83ac..b18dbfc53ca4b87b1fe0fbde679d99234c54f2e8 100644 (file)
@@ -3166,7 +3166,7 @@ config TEST_OBJPOOL
 
          If unsure, say N.
 
-config INT_POW_TEST
+config INT_POW_KUNIT_TEST
        tristate "Integer exponentiation (int_pow) test" if !KUNIT_ALL_TESTS
        depends on KUNIT
        default KUNIT_ALL_TESTS
index 853f023ae53709bbcd31ef207794fb0c29bedaa5..d1caba23baa0b7c3b24d4767812dfdabf628b13f 100644 (file)
@@ -5,8 +5,7 @@ obj-$(CONFIG_CORDIC)            += cordic.o
 obj-$(CONFIG_PRIME_NUMBERS)    += prime_numbers.o
 obj-$(CONFIG_RATIONAL)         += rational.o
 
-obj-$(CONFIG_INT_POW_TEST)  += tests/int_pow_kunit.o
 obj-$(CONFIG_TEST_DIV64)       += test_div64.o
 obj-$(CONFIG_TEST_MULDIV64)    += test_mul_u64_u64_div_u64.o
-obj-$(CONFIG_RATIONAL_KUNIT_TEST) += rational-test.o
-obj-$(CONFIG_INT_SQRT_KUNIT_TEST) += tests/int_sqrt_kunit.o
\ No newline at end of file
+
+obj-y += tests/
diff --git a/lib/math/rational-test.c b/lib/math/rational-test.c
deleted file mode 100644 (file)
index 47486a9..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-
-#include <kunit/test.h>
-
-#include <linux/rational.h>
-
-struct rational_test_param {
-       unsigned long num, den;
-       unsigned long max_num, max_den;
-       unsigned long exp_num, exp_den;
-
-       const char *name;
-};
-
-static const struct rational_test_param test_parameters[] = {
-       { 1230, 10,     100, 20,        100, 1,    "Exceeds bounds, semi-convergent term > 1/2 last term" },
-       { 34567,100,    120, 20,        120, 1,    "Exceeds bounds, semi-convergent term < 1/2 last term" },
-       { 1, 30,        100, 10,        0, 1,      "Closest to zero" },
-       { 1, 19,        100, 10,        1, 10,     "Closest to smallest non-zero" },
-       { 27,32,        16, 16,         11, 13,    "Use convergent" },
-       { 1155, 7735,   255, 255,       33, 221,   "Exact answer" },
-       { 87, 32,       70, 32,         68, 25,    "Semiconvergent, numerator limit" },
-       { 14533, 4626,  15000, 2400,    7433, 2366, "Semiconvergent, denominator limit" },
-};
-
-static void get_desc(const struct rational_test_param *param, char *desc)
-{
-       strscpy(desc, param->name, KUNIT_PARAM_DESC_SIZE);
-}
-
-/* Creates function rational_gen_params */
-KUNIT_ARRAY_PARAM(rational, test_parameters, get_desc);
-
-static void rational_test(struct kunit *test)
-{
-       const struct rational_test_param *param = (const struct rational_test_param *)test->param_value;
-       unsigned long n = 0, d = 0;
-
-       rational_best_approximation(param->num, param->den, param->max_num, param->max_den, &n, &d);
-       KUNIT_EXPECT_EQ(test, n, param->exp_num);
-       KUNIT_EXPECT_EQ(test, d, param->exp_den);
-}
-
-static struct kunit_case rational_test_cases[] = {
-       KUNIT_CASE_PARAM(rational_test, rational_gen_params),
-       {}
-};
-
-static struct kunit_suite rational_test_suite = {
-       .name = "rational",
-       .test_cases = rational_test_cases,
-};
-
-kunit_test_suites(&rational_test_suite);
-
-MODULE_DESCRIPTION("Rational fractions unit test");
-MODULE_LICENSE("GPL v2");
index e1a79f093b2d0c84e88e8f824f1a0ebf2d7983a9..a982f71800bdd3bf867fc2a742a98f4b63779475 100644 (file)
@@ -1,4 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0-only
 
-obj-$(CONFIG_INT_POW_TEST) += int_pow_kunit.o
-obj-$(CONFIG_INT_SQRT_KUNIT_TEST) += int_sqrt_kunit.o
+obj-$(CONFIG_INT_POW_KUNIT_TEST)       += int_pow_kunit.o
+obj-$(CONFIG_INT_SQRT_KUNIT_TEST)      += int_sqrt_kunit.o
+obj-$(CONFIG_RATIONAL_KUNIT_TEST)      += rational_kunit.o
diff --git a/lib/math/tests/rational_kunit.c b/lib/math/tests/rational_kunit.c
new file mode 100644 (file)
index 0000000..47486a9
--- /dev/null
@@ -0,0 +1,57 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include <kunit/test.h>
+
+#include <linux/rational.h>
+
+struct rational_test_param {
+       unsigned long num, den;
+       unsigned long max_num, max_den;
+       unsigned long exp_num, exp_den;
+
+       const char *name;
+};
+
+static const struct rational_test_param test_parameters[] = {
+       { 1230, 10,     100, 20,        100, 1,    "Exceeds bounds, semi-convergent term > 1/2 last term" },
+       { 34567,100,    120, 20,        120, 1,    "Exceeds bounds, semi-convergent term < 1/2 last term" },
+       { 1, 30,        100, 10,        0, 1,      "Closest to zero" },
+       { 1, 19,        100, 10,        1, 10,     "Closest to smallest non-zero" },
+       { 27,32,        16, 16,         11, 13,    "Use convergent" },
+       { 1155, 7735,   255, 255,       33, 221,   "Exact answer" },
+       { 87, 32,       70, 32,         68, 25,    "Semiconvergent, numerator limit" },
+       { 14533, 4626,  15000, 2400,    7433, 2366, "Semiconvergent, denominator limit" },
+};
+
+static void get_desc(const struct rational_test_param *param, char *desc)
+{
+       strscpy(desc, param->name, KUNIT_PARAM_DESC_SIZE);
+}
+
+/* Creates function rational_gen_params */
+KUNIT_ARRAY_PARAM(rational, test_parameters, get_desc);
+
+static void rational_test(struct kunit *test)
+{
+       const struct rational_test_param *param = (const struct rational_test_param *)test->param_value;
+       unsigned long n = 0, d = 0;
+
+       rational_best_approximation(param->num, param->den, param->max_num, param->max_den, &n, &d);
+       KUNIT_EXPECT_EQ(test, n, param->exp_num);
+       KUNIT_EXPECT_EQ(test, d, param->exp_den);
+}
+
+static struct kunit_case rational_test_cases[] = {
+       KUNIT_CASE_PARAM(rational_test, rational_gen_params),
+       {}
+};
+
+static struct kunit_suite rational_test_suite = {
+       .name = "rational",
+       .test_cases = rational_test_cases,
+};
+
+kunit_test_suites(&rational_test_suite);
+
+MODULE_DESCRIPTION("Rational fractions unit test");
+MODULE_LICENSE("GPL v2");