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

Commit 32dcfba6 authored by Michael Ellerman's avatar Michael Ellerman Committed by Shuah Khan
Browse files

selftests: Add install target



This adds make install support to selftests. The basic usage is:

$ cd tools/testing/selftests
$ make install

That installs into tools/testing/selftests/install, which can then be
copied where ever necessary.

The install destination is also configurable using eg:

$ INSTALL_PATH=/mnt/selftests make install

The implementation uses two targets in the child makefiles. The first
"install" is expected to install all files into $(INSTALL_PATH).

The second, "emit_tests", is expected to emit the test instructions (ie.
bash script) on stdout. Separating this from install means the child
makefiles need no knowledge of the location of the test script.

Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Signed-off-by: default avatarShuah Khan <shuahkh@osg.samsung.com>
parent 5e29a910
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -47,7 +47,40 @@ clean_hotplug:
		make -C $$TARGET clean; \
	done;

INSTALL_PATH ?= install
INSTALL_PATH := $(abspath $(INSTALL_PATH))
ALL_SCRIPT := $(INSTALL_PATH)/run_kselftest.sh

install:
ifdef INSTALL_PATH
	@# Ask all targets to install their files
	mkdir -p $(INSTALL_PATH)
	for TARGET in $(TARGETS); do \
		mkdir -p $(INSTALL_PATH)/$$TARGET ; \
		make -C $$TARGET INSTALL_PATH=$(INSTALL_PATH)/$$TARGET install; \
	done;

	@# Ask all targets to emit their test scripts
	echo "#!/bin/bash" > $(ALL_SCRIPT)
	echo "cd \$$(dirname \$$0)" >> $(ALL_SCRIPT)
	echo "ROOT=\$$PWD" >> $(ALL_SCRIPT)

	for TARGET in $(TARGETS); do \
		echo "echo ; echo Running tests in $$TARGET" >> $(ALL_SCRIPT); \
		echo "echo ========================================" >> $(ALL_SCRIPT); \
		echo "cd $$TARGET" >> $(ALL_SCRIPT); \
		make -s --no-print-directory -C $$TARGET emit_tests >> $(ALL_SCRIPT); \
		echo "cd \$$ROOT" >> $(ALL_SCRIPT); \
	done;

	chmod u+x $(ALL_SCRIPT)
else
	$(error Error: set INSTALL_PATH to use install)
endif

clean:
	for TARGET in $(TARGETS); do \
		make -C $$TARGET clean; \
	done;

.PHONY: install
+1 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ test_objs = open-unlink create-read
all: $(test_objs)

TEST_PROGS := efivarfs.sh
TEST_FILES := $(test_objs)

include ../lib.mk

+3 −0
Original line number Diff line number Diff line
@@ -19,8 +19,11 @@ execveat.denatured: execveat
	$(CC) $(CFLAGS) -o $@ $^

TEST_PROGS := execveat
TEST_FILES := $(DEPS)

include ../lib.mk

override EMIT_TESTS := echo "mkdir -p subdir; (./execveat && echo \"selftests: execveat [PASS]\") || echo \"selftests: execveat [FAIL]\""

clean:
	rm -rf $(BINARIES) $(DEPS) subdir.moved execveat.moved xxxxx*
+22 −1
Original line number Diff line number Diff line
@@ -7,4 +7,25 @@ endef
run_tests: all
	$(RUN_TESTS)

.PHONY: run_tests all clean
define INSTALL_RULE
	mkdir -p $(INSTALL_PATH)
	install -t $(INSTALL_PATH) $(TEST_PROGS) $(TEST_FILES)
endef

install: all
ifdef INSTALL_PATH
	$(INSTALL_RULE)
else
	$(error Error: set INSTALL_PATH to use install)
endif

define EMIT_TESTS
	@for TEST in $(TEST_PROGS); do \
		echo "(./$$TEST && echo \"selftests: $$TEST [PASS]\") || echo \"selftests: $$TEST [FAIL]\""; \
	done;
endef

emit_tests:
	$(EMIT_TESTS)

.PHONY: run_tests all clean install emit_tests
+2 −0
Original line number Diff line number Diff line
@@ -2,7 +2,9 @@ all:

include ../lib.mk

TEST_PROGS := on-off-test.sh
override RUN_TESTS := ./on-off-test.sh -r 2 || echo "selftests: memory-hotplug [FAIL]"
override EMIT_TESTS := echo "$(RUN_TESTS)"

run_full_test:
	@/bin/bash ./on-off-test.sh || echo "memory-hotplug selftests: [FAIL]"
Loading