test: Create pre/post-run functions

Split out the test preparation into a separation function before
expanding it. Add a post-run function as well, currently empty.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2021-03-07 17:34:48 -07:00 committed by Tom Rini
parent 1c7217511c
commit d002a27644
2 changed files with 51 additions and 10 deletions

View file

@ -356,6 +356,26 @@ void ut_silence_console(struct unit_test_state *uts);
*/ */
void ut_unsilence_console(struct unit_test_state *uts); void ut_unsilence_console(struct unit_test_state *uts);
/**
* test_pre_run() - Handle any preparation needed to run a test
*
* @uts: Test state
* @test: Test to prepare for
* @return 0 if OK, -EAGAIN to skip this test since some required feature is not
* available, other -ve on error (meaning that testing cannot likely
* continue)
*/
int test_pre_run(struct unit_test_state *uts, struct unit_test *test);
/**
* test_post_run() - Handle cleaning up after a test
*
* @uts: Test state
* @test: Test to clean up after
* @return 0 if OK, -ve on error (meaning that testing cannot likely continue)
*/
int test_post_run(struct unit_test_state *uts, struct unit_test *test);
/** /**
* ut_run_tests() - Run a set of tests * ut_run_tests() - Run a set of tests
* *

View file

@ -8,6 +8,27 @@
#include <console.h> #include <console.h>
#include <test/test.h> #include <test/test.h>
int test_pre_run(struct unit_test_state *uts, struct unit_test *test)
{
uts->start = mallinfo();
if (test->flags & UT_TESTF_CONSOLE_REC) {
int ret = console_record_reset_enable();
if (ret) {
printf("Skipping: Console recording disabled\n");
return -EAGAIN;
}
}
return 0;
}
int test_post_run(struct unit_test_state *uts, struct unit_test *test)
{
return 0;
}
int ut_run_tests(struct unit_test_state *uts, const char *prefix, int ut_run_tests(struct unit_test_state *uts, const char *prefix,
struct unit_test *tests, int count, const char *select_name) struct unit_test *tests, int count, const char *select_name)
{ {
@ -17,6 +38,7 @@ int ut_run_tests(struct unit_test_state *uts, const char *prefix,
for (test = tests; test < tests + count; test++) { for (test = tests; test < tests + count; test++) {
const char *test_name = test->name; const char *test_name = test->name;
int ret;
/* Remove the prefix */ /* Remove the prefix */
if (prefix && !strncmp(test_name, prefix, prefix_len)) if (prefix && !strncmp(test_name, prefix, prefix_len))
@ -27,18 +49,17 @@ int ut_run_tests(struct unit_test_state *uts, const char *prefix,
printf("Test: %s\n", test_name); printf("Test: %s\n", test_name);
found++; found++;
if (test->flags & UT_TESTF_CONSOLE_REC) { ret = test_pre_run(uts, test);
int ret = console_record_reset_enable(); if (ret == -EAGAIN)
continue;
if (ret) { if (ret)
printf("Skipping: Console recording disabled\n"); return ret;
continue;
}
}
uts->start = mallinfo();
test->func(uts); test->func(uts);
ret = test_post_run(uts, test);
if (ret)
return ret;
} }
if (select_name && !found) if (select_name && !found)
return -ENOENT; return -ENOENT;