diff --git a/Makefile b/Makefile index 1cdc4a1d26..bc47d98931 100644 --- a/Makefile +++ b/Makefile @@ -666,6 +666,7 @@ libs-$(CONFIG_API) += api/ libs-$(CONFIG_HAS_POST) += post/ libs-y += test/ libs-y += test/dm/ +libs-$(CONFIG_UT_ENV) += test/env/ libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/) diff --git a/include/test/env.h b/include/test/env.h new file mode 100644 index 0000000000..2b0cd682e4 --- /dev/null +++ b/include/test/env.h @@ -0,0 +1,16 @@ +/* + * (C) Copyright 2015 + * Joe Hershberger, National Instruments, joe.hershberger@ni.com + * + * SPDX-License-Identifier: GPL-2.0 + */ + +#ifndef __TEST_ENV_H__ +#define __TEST_ENV_H__ + +#include + +/* Declare a new environment test */ +#define ENV_TEST(_name, _flags) UNIT_TEST(_name, _flags, env_test) + +#endif /* __TEST_ENV_H__ */ diff --git a/include/test/suites.h b/include/test/suites.h index f68cdec12a..f5790333ff 100644 --- a/include/test/suites.h +++ b/include/test/suites.h @@ -9,6 +9,7 @@ #define __TEST_SUITES_H__ 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_time(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); #endif /* __TEST_SUITES_H__ */ diff --git a/test/Kconfig b/test/Kconfig index 50d3a49c97..d71c332eee 100644 --- a/test/Kconfig +++ b/test/Kconfig @@ -16,3 +16,4 @@ config UT_TIME this is a good place to start. source "test/dm/Kconfig" +source "test/env/Kconfig" diff --git a/test/cmd_ut.c b/test/cmd_ut.c index a65bfeaf31..f6e1f413db 100644 --- a/test/cmd_ut.c +++ b/test/cmd_ut.c @@ -16,6 +16,9 @@ static cmd_tbl_t cmd_ut_sub[] = { #if defined(CONFIG_UT_DM) U_BOOT_CMD_MKENT(dm, CONFIG_SYS_MAXARGS, 1, do_ut_dm, "", ""), #endif +#if defined(CONFIG_UT_ENV) + U_BOOT_CMD_MKENT(env, CONFIG_SYS_MAXARGS, 1, do_ut_env, "", ""), +#endif #ifdef CONFIG_UT_TIME U_BOOT_CMD_MKENT(time, CONFIG_SYS_MAXARGS, 1, do_ut_time, "", ""), #endif @@ -62,6 +65,9 @@ static char ut_help_text[] = #ifdef CONFIG_UT_DM "ut dm [test-name]\n" #endif +#ifdef CONFIG_UT_ENV + "ut env [test-name]\n" +#endif #ifdef CONFIG_UT_TIME "ut time - Very basic test of time functions\n" #endif diff --git a/test/env/Kconfig b/test/env/Kconfig new file mode 100644 index 0000000000..ff164132e9 --- /dev/null +++ b/test/env/Kconfig @@ -0,0 +1,8 @@ +config UT_ENV + bool "Enable env unit tests" + depends on UNIT_TEST + help + This enables the 'ut env' command which runs a series of unit + tests on the env code. + If all is well then all tests pass although there will be a few + messages printed along the way. diff --git a/test/env/Makefile b/test/env/Makefile new file mode 100644 index 0000000000..59b38e99ae --- /dev/null +++ b/test/env/Makefile @@ -0,0 +1,7 @@ +# +# Copyright (c) 2015 National Instruments, Inc +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y += cmd_ut_env.o diff --git a/test/env/cmd_ut_env.c b/test/env/cmd_ut_env.c new file mode 100644 index 0000000000..893e5e6a6d --- /dev/null +++ b/test/env/cmd_ut_env.c @@ -0,0 +1,37 @@ +/* + * (C) Copyright 2015 + * Joe Hershberger, National Instruments, joe.hershberger@ni.com + * + * SPDX-License-Identifier: GPL-2.0 + */ + +#include +#include +#include +#include +#include + +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; +}