Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bf660782 authored by Kees Cook's avatar Kees Cook Committed by Shuah Khan
Browse files

selftests: Extract logic for multiple test runs



This moves the logic for running multiple tests into a single "run_many"
function of runner.sh. Both "run_tests" and "emit_tests" are modified to
use it. Summary handling is now controlled by the "per_test_logging"
shell flag.

Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
parent d4e59a53
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -193,16 +193,14 @@ ifdef INSTALL_PATH
	echo "  logfile=\$$BASE_DIR/output.log" >> $(ALL_SCRIPT)
	echo "  cat /dev/null > \$$logfile" >> $(ALL_SCRIPT)
	echo "fi" >> $(ALL_SCRIPT)
	echo "export KSFT_TAP_LEVEL=1" >> $(ALL_SCRIPT)

	for TARGET in $(TARGETS); do \
		BUILD_TARGET=$$BUILD/$$TARGET;	\
		echo "echo ; echo TAP version 13" >> $(ALL_SCRIPT);	\
		echo "echo Running tests in $$TARGET" >> $(ALL_SCRIPT); \
		echo "echo ========================================" >> $(ALL_SCRIPT); \
		echo "[ -w /dev/kmsg ] && echo \"kselftest: Running tests in $$TARGET\" >> /dev/kmsg" >> $(ALL_SCRIPT); \
		echo "cd $$TARGET" >> $(ALL_SCRIPT); \
		echo -n "run_many" >> $(ALL_SCRIPT); \
		make -s --no-print-directory OUTPUT=$$BUILD_TARGET -C $$TARGET emit_tests >> $(ALL_SCRIPT); \
		echo "" >> $(ALL_SCRIPT);	    \
		echo "cd \$$ROOT" >> $(ALL_SCRIPT); \
	done;

+22 −3
Original line number Diff line number Diff line
@@ -2,17 +2,20 @@
# SPDX-License-Identifier: GPL-2.0
#
# Runs a set of tests in a given subdirectory.
export KSFT_TAP_LEVEL=1
export skip_rc=4
export logfile=/dev/stdout
export per_test_logging=

run_one()
{
	TEST="$1"
	NUM="$2"
	DIR="$1"
	TEST="$2"
	NUM="$3"

	BASENAME_TEST=$(basename $TEST)

	TEST_HDR_MSG="selftests: "`basename $PWD`:" $BASENAME_TEST"
	TEST_HDR_MSG="selftests: $DIR: $BASENAME_TEST"
	echo "$TEST_HDR_MSG"
	echo "========================================"
	if [ ! -x "$TEST" ]; then
@@ -30,3 +33,19 @@ run_one()
		cd - >/dev/null
	fi
}

run_many()
{
	echo "TAP version 13"
	DIR=$(basename "$PWD")
	test_num=0
	for TEST in "$@"; do
		BASENAME_TEST=$(basename $TEST)
		test_num=$(( test_num + 1 ))
		if [ -n "$per_test_logging" ]; then
			logfile="/tmp/$BASENAME_TEST"
			cat /dev/null > "$logfile"
		fi
		run_one "$DIR" "$TEST" "$test_num"
	done
}
+8 −17
Original line number Diff line number Diff line
@@ -67,19 +67,11 @@ endif

.ONESHELL:
define RUN_TESTS
	@export KSFT_TAP_LEVEL=`echo 1`;		\
	test_num=`echo 0`;				\
	. $(selfdir)/kselftest/runner.sh;		\
	echo "TAP version 13";				\
	for TEST in $(1); do				\
		BASENAME_TEST=`basename $$TEST`;	\
		test_num=`echo $$test_num+1 | bc`;	\
	@. $(selfdir)/kselftest/runner.sh;	\
	if [ "X$(summary)" != "X" ]; then       \
		        logfile="/tmp/$$BASENAME_TEST";	\
			cat /dev/null > "$$logfile";	\
		per_test_logging=1;		\
	fi;                                     \
		run_one "$$BASENAME_TEST" "$$test_num";	\
	done;
	run_many $(1)
endef

run_tests: all
@@ -117,12 +109,11 @@ else
endif

emit_tests:
	@test_num=`echo 0`;				\
	for TEST in $(TEST_GEN_PROGS) $(TEST_CUSTOM_PROGS) $(TEST_PROGS); do \
		BASENAME_TEST=`basename $$TEST`;	\
		test_num=`echo $$test_num+1 | bc`;	\
		echo "run_one \"$$BASENAME_TEST\" \"$$test_num\"";	\
	done;
		echo "	\\";				\
		echo -n "	\"$$BASENAME_TEST\"";	\
	done;						\

# define if isn't already. It is undefined in make O= case.
ifeq ($(RM),)