summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Hershberger <joe.hershberger@ni.com>2015-05-20 14:27:36 -0500
committerTom Rini <trini@konsulko.com>2015-05-21 09:16:18 -0400
commit421f86f3293c63fa2669972fb7bdc5ae78729e50 (patch)
tree0a4cf02061c15201325179e5aa8842871ee0a284
parentb6227d3993db8f1763a8bd377b189e7b77cfe885 (diff)
downloadu-boot-imx-421f86f3293c63fa2669972fb7bdc5ae78729e50.zip
u-boot-imx-421f86f3293c63fa2669972fb7bdc5ae78729e50.tar.gz
u-boot-imx-421f86f3293c63fa2669972fb7bdc5ae78729e50.tar.bz2
test: env: Add test framework for env
Add a new "env" subcommand to the ut command. This will run unit tests on the env code. This should be targetable to any device that supports the env features needed for the tests. Signed-off-by: Joe Hershberger <joe.hershberger@ni.com> Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r--Makefile1
-rw-r--r--include/test/env.h16
-rw-r--r--include/test/suites.h1
-rw-r--r--test/Kconfig1
-rw-r--r--test/cmd_ut.c6
-rw-r--r--test/env/Kconfig8
-rw-r--r--test/env/Makefile7
-rw-r--r--test/env/cmd_ut_env.c37
8 files changed, 77 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 1cdc4a1..bc47d98 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 0000000..2b0cd68
--- /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 <test/test.h>
+
+/* 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 f68cdec..f579033 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 50d3a49..d71c332 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 a65bfea..f6e1f41 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 0000000..ff16413
--- /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 0000000..59b38e9
--- /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 0000000..893e5e6
--- /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 <common.h>
+#include <command.h>
+#include <test/env.h>
+#include <test/suites.h>
+#include <test/ut.h>
+
+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;
+}