dm: test: Allow 'dm test' to select a particular test to run
As well as running all tests, it is useful to be able to run a selected test. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Marek Vasut <marex@denx.de>
This commit is contained in:
parent
b66c0a662b
commit
57f54d55bd
|
@ -205,12 +205,13 @@ void dm_leak_check_start(struct dm_test_state *dms);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dm_test_main() - Run all the tests
|
* dm_test_main() - Run all or one of the tests
|
||||||
*
|
*
|
||||||
* This runs all available driver model tests
|
* This runs all available driver model tests, or a selected one
|
||||||
*
|
*
|
||||||
|
* @test_name: Name of test to run, or NULL for all
|
||||||
* @return 0 if OK, -ve on error
|
* @return 0 if OK, -ve on error
|
||||||
*/
|
*/
|
||||||
int dm_test_main(void);
|
int dm_test_main(const char *test_name);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -113,7 +113,12 @@ static int do_dm_dump_uclass(cmd_tbl_t *cmdtp, int flag, int argc,
|
||||||
static int do_dm_test(cmd_tbl_t *cmdtp, int flag, int argc,
|
static int do_dm_test(cmd_tbl_t *cmdtp, int flag, int argc,
|
||||||
char * const argv[])
|
char * const argv[])
|
||||||
{
|
{
|
||||||
return dm_test_main();
|
const char *test_name = NULL;
|
||||||
|
|
||||||
|
if (argc > 0)
|
||||||
|
test_name = argv[0];
|
||||||
|
|
||||||
|
return dm_test_main(test_name);
|
||||||
}
|
}
|
||||||
#define TEST_HELP "\ndm test Run tests"
|
#define TEST_HELP "\ndm test Run tests"
|
||||||
#else
|
#else
|
||||||
|
@ -133,7 +138,7 @@ static int do_dm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
cmd_tbl_t *test_cmd;
|
cmd_tbl_t *test_cmd;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (argc != 2)
|
if (argc < 2)
|
||||||
return CMD_RET_USAGE;
|
return CMD_RET_USAGE;
|
||||||
test_cmd = find_cmd_tbl(argv[1], test_commands,
|
test_cmd = find_cmd_tbl(argv[1], test_commands,
|
||||||
ARRAY_SIZE(test_commands));
|
ARRAY_SIZE(test_commands));
|
||||||
|
@ -148,7 +153,7 @@ static int do_dm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
U_BOOT_CMD(
|
U_BOOT_CMD(
|
||||||
dm, 2, 1, do_dm,
|
dm, 3, 1, do_dm,
|
||||||
"Driver model low level access",
|
"Driver model low level access",
|
||||||
"tree Dump driver model tree ('*' = activated)\n"
|
"tree Dump driver model tree ('*' = activated)\n"
|
||||||
"dm uclass Dump list of instances for each uclass"
|
"dm uclass Dump list of instances for each uclass"
|
||||||
|
|
|
@ -65,7 +65,7 @@ static int dm_test_destroy(struct dm_test_state *dms)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int dm_test_main(void)
|
int dm_test_main(const char *test_name)
|
||||||
{
|
{
|
||||||
struct dm_test *tests = ll_entry_start(struct dm_test, dm_test);
|
struct dm_test *tests = ll_entry_start(struct dm_test, dm_test);
|
||||||
const int n_ents = ll_entry_count(struct dm_test, dm_test);
|
const int n_ents = ll_entry_count(struct dm_test, dm_test);
|
||||||
|
@ -83,9 +83,12 @@ int dm_test_main(void)
|
||||||
ut_assert(gd->fdt_blob);
|
ut_assert(gd->fdt_blob);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Running %d driver model tests\n", n_ents);
|
if (!test_name)
|
||||||
|
printf("Running %d driver model tests\n", n_ents);
|
||||||
|
|
||||||
for (test = tests; test < tests + n_ents; test++) {
|
for (test = tests; test < tests + n_ents; test++) {
|
||||||
|
if (test_name && strcmp(test_name, test->name))
|
||||||
|
continue;
|
||||||
printf("Test: %s\n", test->name);
|
printf("Test: %s\n", test->name);
|
||||||
ut_assertok(dm_test_init(dms));
|
ut_assertok(dm_test_init(dms));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue