^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #include <kunit/test.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * These symbols point to the .kunit_test_suites section and are defined in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * include/asm-generic/vmlinux.lds.h, and consequently must be extern.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) extern struct kunit_suite * const * const __kunit_suites_start[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) extern struct kunit_suite * const * const __kunit_suites_end[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #if IS_BUILTIN(CONFIG_KUNIT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) static void kunit_print_tap_header(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) struct kunit_suite * const * const *suites, * const *subsuite;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) int num_of_suites = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) for (suites = __kunit_suites_start;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) suites < __kunit_suites_end;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) suites++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) for (subsuite = *suites; *subsuite != NULL; subsuite++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) num_of_suites++;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) pr_info("TAP version 14\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) pr_info("1..%d\n", num_of_suites);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) int kunit_run_all_tests(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) struct kunit_suite * const * const *suites;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) kunit_print_tap_header();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) for (suites = __kunit_suites_start;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) suites < __kunit_suites_end;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) suites++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) __kunit_test_suites_init(*suites);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) #endif /* IS_BUILTIN(CONFIG_KUNIT) */