diff mbox series

[1/3] lib: tests: Add test suite init function

Message ID 20240423155245.14541-2-ivan.orlov0322@gmail.com
State Accepted
Headers show
Series [1/3] lib: tests: Add test suite init function | expand

Commit Message

Ivan Orlov April 23, 2024, 3:52 p.m. UTC
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>
---
 include/sbi/sbi_unit_test.h   | 2 ++
 lib/sbi/tests/sbi_unit_test.c | 3 +++
 2 files changed, 5 insertions(+)

Comments

Anup Patel May 7, 2024, 6:02 a.m. UTC | #1
On Tue, Apr 23, 2024 at 9:23 PM Ivan Orlov <ivan.orlov0322@gmail.com> wrote:
>
> 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>

LGTM.

Reviewed-by: Anup Patel <anup@brainfault.org>

Applied this patch to the riscv/opensbi repo.

Thanks,
Anup

> ---
>  include/sbi/sbi_unit_test.h   | 2 ++
>  lib/sbi/tests/sbi_unit_test.c | 3 +++
>  2 files changed, 5 insertions(+)
>
> 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);
> --
> 2.34.1
>
diff mbox series

Patch

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);