From 0859b68c4f07e672f54ce3a8def3a4a05e4ccb55 Mon Sep 17 00:00:00 2001 From: Elouan Da Costa Peixoto Date: Tue, 3 Feb 2026 16:35:02 +0100 Subject: [PATCH 1/2] refactor: test suites creation to not specify the number of tests inside the suite --- src/tests/arch/riscv32/task/task_context.rs | 3 +-- src/tests/arch/riscv32/traps/handler.rs | 1 - src/tests/arch/riscv32/traps/interrupt.rs | 1 - src/tests/arch/riscv32/traps/trap_frame.rs | 1 - src/tests/drivers/cpu_intc/subsystem.rs | 1 - src/tests/drivers/serials/ns16550a.rs | 1 - src/tests/drivers/serials/subsystem.rs | 1 - src/tests/drivers/timer/subsystem.rs | 1 - src/tests/ktime/mod.rs | 1 - src/tests/mem/mod.rs | 1 - src/tests/mod.rs | 18 +++++------------- src/tests/platform/mod.rs | 1 - src/tests/primitives/ring_buff.rs | 1 - src/tests/task/list.rs | 1 - src/tests/task/mod.rs | 1 - 15 files changed, 6 insertions(+), 28 deletions(-) diff --git a/src/tests/arch/riscv32/task/task_context.rs b/src/tests/arch/riscv32/task/task_context.rs index 11e8940..6e63da1 100644 --- a/src/tests/arch/riscv32/task/task_context.rs +++ b/src/tests/arch/riscv32/task/task_context.rs @@ -157,11 +157,10 @@ pub fn task_context_test_suite() { TestCase::init( "Task context switch no invariants violated", test_task_context_switch, - TestBehavior::Default, + TestBehavior::Skipped, ), ], name: "RISC-V32 bit task context layout", - tests_nb: 3, behavior: TestSuiteBehavior::Default, }; #[allow(static_mut_refs)] diff --git a/src/tests/arch/riscv32/traps/handler.rs b/src/tests/arch/riscv32/traps/handler.rs index f855bc9..754853f 100644 --- a/src/tests/arch/riscv32/traps/handler.rs +++ b/src/tests/arch/riscv32/traps/handler.rs @@ -29,7 +29,6 @@ pub fn trap_handler_test_suite() { TestBehavior::Default, )], name: "Trap handler", - tests_nb: 1, behavior: TestSuiteBehavior::Default, }; #[allow(static_mut_refs)] diff --git a/src/tests/arch/riscv32/traps/interrupt.rs b/src/tests/arch/riscv32/traps/interrupt.rs index b6b265e..c7dc1ef 100644 --- a/src/tests/arch/riscv32/traps/interrupt.rs +++ b/src/tests/arch/riscv32/traps/interrupt.rs @@ -133,7 +133,6 @@ pub fn interrupt_enabling_test_suite() { // }, ], name: "Interruptions enabling", - tests_nb: 6, behavior: TestSuiteBehavior::Default, }; #[allow(static_mut_refs)] diff --git a/src/tests/arch/riscv32/traps/trap_frame.rs b/src/tests/arch/riscv32/traps/trap_frame.rs index 542f624..5f2ec1c 100644 --- a/src/tests/arch/riscv32/traps/trap_frame.rs +++ b/src/tests/arch/riscv32/traps/trap_frame.rs @@ -61,7 +61,6 @@ pub fn trap_frame_test_suite() { ), ], name: "Trap frame", - tests_nb: 2, behavior: TestSuiteBehavior::Default, }; #[allow(static_mut_refs)] diff --git a/src/tests/drivers/cpu_intc/subsystem.rs b/src/tests/drivers/cpu_intc/subsystem.rs index e055b64..32eabee 100644 --- a/src/tests/drivers/cpu_intc/subsystem.rs +++ b/src/tests/drivers/cpu_intc/subsystem.rs @@ -124,7 +124,6 @@ pub fn cpu_intc_subsystem_test_suite() { ), ], name: "CPU interrupt-controller", - tests_nb: 3, behavior: TestSuiteBehavior::Default, }; #[allow(static_mut_refs)] diff --git a/src/tests/drivers/serials/ns16550a.rs b/src/tests/drivers/serials/ns16550a.rs index d6581d4..3c962da 100644 --- a/src/tests/drivers/serials/ns16550a.rs +++ b/src/tests/drivers/serials/ns16550a.rs @@ -33,7 +33,6 @@ pub fn ns16550_test_suite() { TestBehavior::Default, )], name: "Ns16550", - tests_nb: 1, behavior: TestSuiteBehavior::Skipped, }; #[allow(static_mut_refs)] diff --git a/src/tests/drivers/serials/subsystem.rs b/src/tests/drivers/serials/subsystem.rs index 6a67269..90e8ed2 100644 --- a/src/tests/drivers/serials/subsystem.rs +++ b/src/tests/drivers/serials/subsystem.rs @@ -229,7 +229,6 @@ pub fn serial_subsystem_test_suite() { ), ], name: "Serial sub-system", - tests_nb: 3, behavior: TestSuiteBehavior::Default, }; #[allow(static_mut_refs)] diff --git a/src/tests/drivers/timer/subsystem.rs b/src/tests/drivers/timer/subsystem.rs index 00cfdff..94e8991 100644 --- a/src/tests/drivers/timer/subsystem.rs +++ b/src/tests/drivers/timer/subsystem.rs @@ -224,7 +224,6 @@ pub fn timer_subsystem_test_suite() { ), ], name: "Timer sub-system", - tests_nb: 4, behavior: TestSuiteBehavior::Default, }; diff --git a/src/tests/ktime/mod.rs b/src/tests/ktime/mod.rs index 412fbbc..a444a18 100644 --- a/src/tests/ktime/mod.rs +++ b/src/tests/ktime/mod.rs @@ -58,7 +58,6 @@ pub fn ktime_test_suite() { ), ], name: "Ktime", - tests_nb: 3, behavior: TestSuiteBehavior::Default, }; #[allow(static_mut_refs)] diff --git a/src/tests/mem/mod.rs b/src/tests/mem/mod.rs index 314a1a7..5479769 100644 --- a/src/tests/mem/mod.rs +++ b/src/tests/mem/mod.rs @@ -59,7 +59,6 @@ pub fn memory_test_suite() { ), ], name: "Kernel memory", - tests_nb: 2, behavior: TestSuiteBehavior::Default, }; #[allow(static_mut_refs)] diff --git a/src/tests/mod.rs b/src/tests/mod.rs index f4cf38e..a7f3dc9 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -94,7 +94,6 @@ impl<'a> TestManager<'a> { pub struct TestSuite<'a> { pub tests: &'a [TestCase<'a>], pub name: &'a str, - pub tests_nb: u32, pub behavior: TestSuiteBehavior, } @@ -103,21 +102,14 @@ impl<'a> TestSuite<'a> { TestSuite { tests: &[], name: "", - tests_nb: 0, behavior: TestSuiteBehavior::Skipped, } } - pub fn init( - tests: &'a [TestCase], - name: &'a str, - tests_nb: u32, - behavior: TestSuiteBehavior, - ) -> Self { + pub fn init(tests: &'a [TestCase], name: &'a str, behavior: TestSuiteBehavior) -> Self { TestSuite { tests, name, - tests_nb, behavior, } } @@ -155,7 +147,6 @@ impl<'a> TestCase<'a> { pub static mut TEST_MANAGER: TestManager = TestManager::init(); -#[unsafe(no_mangle)] pub fn test_runner(core: usize, dtb_addr: usize) -> ! { // Basic test before running all test suites kprint!("Starting kernel in test mode.\n"); @@ -182,7 +173,8 @@ pub fn test_runner(core: usize, dtb_addr: usize) -> ! { let mut test_suites_skipped: usize = 0; // Iterate over all test suite and run all test inside for test_suite in unsafe { TEST_MANAGER.test_pool } { - if test_suite.tests_nb == 0 { + let test_nb = test_suite.tests.len(); + if test_nb == 0 { continue; } if test_suite.behavior == TestSuiteBehavior::Skipped { @@ -191,10 +183,10 @@ pub fn test_runner(core: usize, dtb_addr: usize) -> ! { } kprint_fmt!( "\nRunning {} tests from test suite: {}\n", - test_suite.tests_nb, + test_nb, test_suite.name ); - let test_to_pass = test_suite.tests_nb; + let test_to_pass = test_nb; let mut test_passed: usize = 0; let mut test_failed: usize = 0; let mut test_skipped: usize = 0; diff --git a/src/tests/platform/mod.rs b/src/tests/platform/mod.rs index b1a6034..3e508ed 100644 --- a/src/tests/platform/mod.rs +++ b/src/tests/platform/mod.rs @@ -132,7 +132,6 @@ pub fn platform_test_suite() { ), ], name: "Platform", - tests_nb: 2, behavior: TestSuiteBehavior::Default, }; #[allow(static_mut_refs)] diff --git a/src/tests/primitives/ring_buff.rs b/src/tests/primitives/ring_buff.rs index c0ac3a2..06dcb35 100644 --- a/src/tests/primitives/ring_buff.rs +++ b/src/tests/primitives/ring_buff.rs @@ -154,7 +154,6 @@ pub fn ring_buff_primitive_test_suite() { TestCase::init("RingBuffer pop", test_ringbuffer_pop, TestBehavior::Default), ], name: "RingBuffer primitive type", - tests_nb: 3, behavior: TestSuiteBehavior::Default, }; #[allow(static_mut_refs)] diff --git a/src/tests/task/list.rs b/src/tests/task/list.rs index 3e04a38..ebf7b09 100644 --- a/src/tests/task/list.rs +++ b/src/tests/task/list.rs @@ -4,7 +4,6 @@ pub fn task_list_test_suite() { const TASK_LIST_TEST_SUITE: TestSuite = TestSuite { tests: &[], name: "Task list", - tests_nb: 0, behavior: TestSuiteBehavior::Skipped, }; #[allow(static_mut_refs)] diff --git a/src/tests/task/mod.rs b/src/tests/task/mod.rs index 54c8238..a11cbe5 100644 --- a/src/tests/task/mod.rs +++ b/src/tests/task/mod.rs @@ -35,7 +35,6 @@ pub fn task_test_suite() { TestBehavior::Default, )], name: "Task", - tests_nb: 1, behavior: TestSuiteBehavior::Default, }; #[allow(static_mut_refs)] From eab4f11cfb25268824a4ead1adc2ed620af9c451 Mon Sep 17 00:00:00 2001 From: Elouan Da Costa Peixoto Date: Tue, 3 Feb 2026 16:36:51 +0100 Subject: [PATCH 2/2] docs(kernel): update the test_framework doc for test suite creation --- Documentation/kernel/test_framework.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Documentation/kernel/test_framework.md b/Documentation/kernel/test_framework.md index 20c5fad..a3b4cda 100644 --- a/Documentation/kernel/test_framework.md +++ b/Documentation/kernel/test_framework.md @@ -68,8 +68,6 @@ pub fn foo_test_suite() { )], // Name of the test suite name: "Foo", - // Number of tests inside the suite - tests_nb: 1, // Behavior of the test suite // Default: run the suite normally // Skipped: don't run the suite at all