STRUCT KUNIT_SUITE(9)
π struct kunit_suite(9) β the Kernel API Manual, bestie edition π
okay so you've wandered into the Kernel API Manual and the page you want is struct kunit_suite(9). sit down, grab a strawberry π, and let me tell you about the single most iconic little struct in KUnit land.
β¨ NAME β¨
struct kunit_suite β literally just describes a related collection of &struct kunit_case. that's it. that's the whole vibe. it's the group chat and the test cases are the members π
π¦ SYNOPSIS π¦
struct kunit_suite {
const char name[256];
int (*suite_init)(struct kunit_suite *suite);
void (*suite_exit)(struct kunit_suite *suite);
int (*init)(struct kunit *test);
void (*exit)(struct kunit *test);
struct kunit_case *test_cases;
struct kunit_attributes attr;
};
like, look at her. seven fields. every single one serving c*nt. π₯
π Members π
okay let's go field by field, no skipping, we're doing all of them:
nameβ the name of the test. purely informational, bestie β it's giving "decorative but make it diagnostic" β¨suite_initβ called once per test suite before the test cases. she arrives first, sets up the vibes π§suite_exitβ called once per test suite after all test cases. she's the last one to leave the party and she turns off the lights πinitβ called before every test case. every. single. one. consistency queen πexitβ called after every test case. yep, matchesinit. periodt πtest_casesβ a null terminated array of test cases. null terminated!! don't forget the terminator or it's gonna keep reading and that's not the energy we want πattrβ the attributes associated with the test suite π
π Description π
so a kunit_suite is a collection of related struct kunit_case s, such that init is called before every test case and exit is called after every test case. sound familiar? it's the same idea as a test fixture or a test class in other unit testing frameworks like JUnit or Googletest. like, if you know, you know β iykyk π«Ά
β οΈ okay this part is important so pay attention: note thatexitandsuite_exitwill run even ifinitorsuite_initfail. so make sure they can handle any inconsistent state which may result. like, your cleanup has to be built different, it cannot be assuming everything went to plan. no cap. π
and the rule that ties it all together: every struct kunit_case must be associated with a kunit_suite for KUnit to run it. no suite, no run. that's the whole gatekeeping situation π
β SEE ALSO β
the lore is deep, bestie. it's in the kernel file ./include/kunit/test.h and here's the full squad:
enum kunit_status(9)struct kunit_case(9)KUNIT_CASE(9)KUNIT_CASE_ATTR(9)KUNIT_CASE_SLOW(9)KUNIT_CASE_PARAM(9)KUNIT_CASE_PARAM_ATTR(9)KUNIT_CASE_PARAM_WITH_INIT(9)struct kunit(9)kunit_test_suites(9)kunit_test_init_section_suites(9)kunit_kmalloc_array(9)kunit_kmalloc(9)kunit_kfree(9)kunit_kzalloc(9)kunit_kcalloc(9)kunit_kfree_const(9)kunit_kstrdup(9)kunit_kstrdup_const(9)kunit_attach_mm(9)kunit_vm_mmap(9)kunit_mark_skipped(9)kunit_skip(9)kunit_info(9)kunit_warn(9)kunit_err(9)KUNIT_SUCCEED(9)KUNIT_FAIL(9)KUNIT_EXPECT_TRUE(9)KUNIT_EXPECT_FALSE(9)KUNIT_EXPECT_EQ(9)KUNIT_EXPECT_PTR_EQ(9)KUNIT_EXPECT_NE(9)KUNIT_EXPECT_PTR_NE(9)KUNIT_EXPECT_LT(9)KUNIT_EXPECT_LE(9)KUNIT_EXPECT_GT(9)KUNIT_EXPECT_GE(9)KUNIT_EXPECT_STREQ(9)KUNIT_EXPECT_STRNEQ(9)KUNIT_EXPECT_MEMEQ(9)KUNIT_EXPECT_MEMNEQ(9)KUNIT_EXPECT_NULL(9)KUNIT_EXPECT_NOT_NULL(9)KUNIT_EXPECT_NOT_ERR_OR_NULL(9)KUNIT_FAIL_AND_ABORT(9)KUNIT_ASSERT_TRUE(9)KUNIT_ASSERT_FALSE(9)KUNIT_ASSERT_EQ(9)KUNIT_ASSERT_PTR_EQ(9)KUNIT_ASSERT_NE(9)KUNIT_ASSERT_PTR_NE(9)KUNIT_ASSERT_LT(9)KUNIT_ASSERT_LE(9)KUNIT_ASSERT_GT(9)KUNIT_ASSERT_GE(9)KUNIT_ASSERT_STREQ(9)KUNIT_ASSERT_STRNEQ(9)KUNIT_ASSERT_MEMEQ(9)KUNIT_ASSERT_MEMNEQ(9)KUNIT_ASSERT_NULL(9)KUNIT_ASSERT_NOT_NULL(9)KUNIT_ASSERT_NOT_ERR_OR_NULL(9)KUNIT_ARRAY_PARAM(9)KUNIT_ARRAY_PARAM_DESC(9)kunit_register_params_array(9)kunit_warning_suppress(9)KUNIT_SUPPRESSED_WARNING_COUNT(9)KUNIT_EXPECT_SUPPRESSED_WARNING_COUNT(9)KUNIT_ASSERT_SUPPRESSED_WARNING_COUNT(9)
that's the whole page, bestie, you ate it up π this one lives in ./include/kunit and the manual page is dated October 2026, filed under struct kunit_suite(9). go forth and write tests, and remember: always clean up after yourself. π§ββοΈβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms