test: env: Add test framework for env
authorJoe Hershberger <joe.hershberger@ni.com>
Wed, 20 May 2015 19:27:36 +0000 (14:27 -0500)
committerTom Rini <trini@konsulko.com>
Thu, 21 May 2015 13:16:18 +0000 (09:16 -0400)
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>
Makefile
include/test/env.h [new file with mode: 0644]
include/test/suites.h
test/Kconfig
test/cmd_ut.c
test/env/Kconfig [new file with mode: 0644]
test/env/Makefile [new file with mode: 0644]
test/env/cmd_ut_env.c [new file with mode: 0644]

index 1cdc4a1d268d03bc5f7e983a64b3ab19fc790a87..bc47d98931ab7790f6d394c85118f33af561d912 100644 (file)
--- 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 (file)
index 0000000..2b0cd68
--- /dev/null
@@ -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__ */
index f68cdec12aa71f977552fa0d9e855fb41bfcb4f8..f5790333ff8e62183e793e105217af3f6738c1ce 100644 (file)
@@ -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__ */
index 50d3a49c97470a60bf7686569d9f716c5f5ca8e6..d71c332eee27cc51fcc839163a81ae64c241e130 100644 (file)
@@ -16,3 +16,4 @@ config UT_TIME
          this is a good place to start.
 
 source "test/dm/Kconfig"
+source "test/env/Kconfig"
index a65bfeaf3122da5068d5d37e051995068f94d5a1..f6e1f413db7f6f472d9609d728b0c40e8d347f41 100644 (file)
@@ -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 (file)
index 0000000..ff16413
--- /dev/null
@@ -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 (file)
index 0000000..59b38e9
--- /dev/null
@@ -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 (file)
index 0000000..893e5e6
--- /dev/null
@@ -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;
+}