Skip to content

Commit

Permalink
test: Add a command function for test execution
Browse files Browse the repository at this point in the history
The logic to either iterate through a list of tests or pick a named test
is common to at lest two test suits. Move this logic into a new function
and call it from the environment tests.

Signed-off-by: Simon Glass <[email protected]>
  • Loading branch information
sjg20 authored and trini committed Dec 2, 2017
1 parent b59670f commit 4d869c1
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 18 deletions.
16 changes: 16 additions & 0 deletions include/test/suites.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,22 @@
#ifndef __TEST_SUITES_H__
#define __TEST_SUITES_H__

struct unit_test;

/**
* cmd_ut_category() - Run a category of unit tests
*
* @name: Category name
* @tests: List of tests to run
* @n_ents: Number of tests in @tests
* @argc: Argument count provided. Must be <= 1. If this is 1 then all
* tests are run, otherwise only the one named @argv[1] is run.
* @argv: Arguments: argv[1] is the test to run (if @argc >= 2)
* @return 0 if OK, CMD_RET_FAILURE on failure
*/
int cmd_ut_category(const char *name, struct unit_test *tests, int n_ents,
int argc, char * const argv[]);

int do_ut_dm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
int do_ut_env(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
int do_ut_overlay(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
Expand Down
25 changes: 25 additions & 0 deletions test/cmd_ut.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,34 @@
#include <common.h>
#include <command.h>
#include <test/suites.h>
#include <test/test.h>

static int do_ut_all(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);

int cmd_ut_category(const char *name, struct unit_test *tests, int n_ents,
int argc, char * const argv[])
{
struct unit_test_state uts = { .fail_count = 0 };
struct unit_test *test;

if (argc == 1)
printf("Running %d %s tests\n", n_ents, name);

for (test = tests; test < tests + n_ents; test++) {
if (argc > 1 && strcmp(argv[1], test->name))
continue;
printf("Test: %s\n", test->name);

uts.start = mallinfo();

test->func(&uts);
}

printf("Failures: %d\n", uts.fail_count);

return uts.fail_count ? CMD_RET_FAILURE : 0;
}

static cmd_tbl_t cmd_ut_sub[] = {
U_BOOT_CMD_MKENT(all, CONFIG_SYS_MAXARGS, 1, do_ut_all, "", ""),
#if defined(CONFIG_UT_DM)
Expand Down
19 changes: 1 addition & 18 deletions test/env/cmd_ut_env.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,6 @@ int do_ut_env(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
struct unit_test *tests = ll_entry_start(struct unit_test, env_test);
const int n_ents = ll_entry_count(struct unit_test, env_test);
struct unit_test_state uts = { .fail_count = 0 };
struct unit_test *test;

if (argc == 1)
printf("Running %d environment tests\n", n_ents);

for (test = tests; test < tests + n_ents; test++) {
if (argc > 1 && strcmp(argv[1], test->name))
continue;
printf("Test: %s\n", test->name);

uts.start = mallinfo();

test->func(&uts);
}

printf("Failures: %d\n", uts.fail_count);

return uts.fail_count ? CMD_RET_FAILURE : 0;
return cmd_ut_category("environment", tests, n_ents, argc, argv);
}

0 comments on commit 4d869c1

Please sign in to comment.