[U-Boot] [PATCH v4 23/26] test: env: Add test framework for env
Joe Hershberger
joe.hershberger at ni.com
Thu May 7 11:49:14 CEST 2015
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 at ni.com>
Reviewed-by: Simon Glass <sjg at chromium.org>
---
Changes in v4: None
Changes in v3:
-Moved test from env subcommand to ut subcommand
Changes in v2:
-New for version 2
Makefile | 1 +
include/test/env.h | 16 ++++++++++++++++
include/test/suites.h | 1 +
test/Kconfig | 1 +
test/cmd_ut.c | 6 ++++++
test/env/Kconfig | 8 ++++++++
test/env/Makefile | 7 +++++++
test/env/cmd_ut_env.c | 37 +++++++++++++++++++++++++++++++++++++
8 files changed, 77 insertions(+)
create mode 100644 include/test/env.h
create mode 100644 test/env/Kconfig
create mode 100644 test/env/Makefile
create mode 100644 test/env/cmd_ut_env.c
diff --git a/Makefile b/Makefile
index 24503ac..847ed41 100644
--- a/Makefile
+++ b/Makefile
@@ -665,6 +665,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 at 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 27813a3..84d3c67 100644
--- a/include/test/suites.h
+++ b/include/test/suites.h
@@ -9,5 +9,6 @@
#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[]);
#endif /* __TEST_SUITES_H__ */
diff --git a/test/Kconfig b/test/Kconfig
index 8895e82..3dd4492 100644
--- a/test/Kconfig
+++ b/test/Kconfig
@@ -5,3 +5,4 @@ menuconfig UNIT_TEST
U-Boot. Test suites will be subcommands of the "ut" command.
source "test/dm/Kconfig"
+source "test/env/Kconfig"
diff --git a/test/cmd_ut.c b/test/cmd_ut.c
index 08001cd..a0fe34b 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
};
static int do_ut_all(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
@@ -59,6 +62,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
;
#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 at 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;
+}
--
1.7.11.5
More information about the U-Boot
mailing list