aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Orlov <ivan.orlov0322@gmail.com>2024-04-23 16:52:43 +0100
committerAnup Patel <anup@brainfault.org>2024-05-07 11:27:13 +0530
commitf6243d9ce591b3a2085feff23ab2fbe1a6d51a14 (patch)
tree77e45848934e0ea0e5d09f1b6d232bc122cf8689
parentd4d2582eef7aac442076f955e4024403f8ff3d96 (diff)
downloadopensbi-f6243d9ce591b3a2085feff23ab2fbe1a6d51a14.zip
opensbi-f6243d9ce591b3a2085feff23ab2fbe1a6d51a14.tar.gz
opensbi-f6243d9ce591b3a2085feff23ab2fbe1a6d51a14.tar.bz2
lib: tests: Add test suite init function
Allow to define an init function for the test suite. It could help us to initialize global variable once, and use them in multiple test cases after the initialization. For instance, if multiple test cases use the same atomic_t var, it could be helpful to call ATOMIC_INIT once during the suite initialization. Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com> Reviewed-by: Anup Patel <anup@brainfault.org>
-rw-r--r--include/sbi/sbi_unit_test.h2
-rw-r--r--lib/sbi/tests/sbi_unit_test.c3
2 files changed, 5 insertions, 0 deletions
diff --git a/include/sbi/sbi_unit_test.h b/include/sbi/sbi_unit_test.h
index c63d900..448c048 100644
--- a/include/sbi/sbi_unit_test.h
+++ b/include/sbi/sbi_unit_test.h
@@ -19,6 +19,7 @@ struct sbiunit_test_case {
struct sbiunit_test_suite {
const char *name;
+ void (*init)(void);
struct sbiunit_test_case *cases;
};
@@ -34,6 +35,7 @@ struct sbiunit_test_suite {
#define SBIUNIT_TEST_SUITE(suite_name, cases_arr) \
struct sbiunit_test_suite suite_name = { \
.name = #suite_name, \
+ .init = NULL, \
.cases = cases_arr \
}
diff --git a/lib/sbi/tests/sbi_unit_test.c b/lib/sbi/tests/sbi_unit_test.c
index 1987838..c2a0be6 100644
--- a/lib/sbi/tests/sbi_unit_test.c
+++ b/lib/sbi/tests/sbi_unit_test.c
@@ -17,6 +17,9 @@ static void run_test_suite(struct sbiunit_test_suite *suite)
sbi_printf("## Running test suite: %s\n", suite->name);
+ if (suite->init)
+ suite->init();
+
s_case = suite->cases;
while (s_case->test_func) {
s_case->test_func(s_case);