Commit 421f86f3 authored by Joe Hershberger's avatar Joe Hershberger Committed by Tom Rini

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: default avatarJoe Hershberger <joe.hershberger@ni.com>
Reviewed-by: default avatarSimon Glass <sjg@chromium.org>
parent b6227d39
......@@ -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)/)
......
/*
* (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__ */
......@@ -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__ */
......@@ -16,3 +16,4 @@ config UT_TIME
this is a good place to start.
source "test/dm/Kconfig"
source "test/env/Kconfig"
......@@ -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
......
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.
#
# Copyright (c) 2015 National Instruments, Inc
#
# SPDX-License-Identifier: GPL-2.0+
#
obj-y += cmd_ut_env.o
/*
* (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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment