]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
selftests: Fix loss of test output in run_kselftests.sh
authorMichael Ellerman <mpe@ellerman.id.au>
Tue, 16 Jan 2018 06:10:39 +0000 (17:10 +1100)
committerShuah Khan <shuahkh@osg.samsung.com>
Tue, 16 Jan 2018 16:31:31 +0000 (09:31 -0700)
Commit fbcab13d2e25 ("selftests: silence test output by default")
changed the run_tests logic as well as the logic to generate
run_kselftests.sh to redirect test output away from the console.

As discussed on the list and at kernel summit, this is not a desirable
default as it means in order to debug a failure the console output is
not sufficient, you also need access to the test machine to get the
full test logs. Additionally it's impolite to write directly to
/tmp/$TEST_NAME on shared systems.

The change to the run_tests logic was reverted in commit
a323335e62cc ("selftests: lib.mk: print individual test results to
console by default"), and instead a summary option was added so that
quiet output could be requested.

However the change to run_kselftests.sh was left as-is.

This commit applies the same logic to the run_kselftests.sh code, ie.
the script now takes a "--summary" option which suppresses the output,
but shows all output by default.

Additionally instead of writing to /tmp/$TEST_NAME the output is
redirected to the directory where the generated test script is
located.

Fixes: fbcab13d2e25 ("selftests: silence test output by default")
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
tools/testing/selftests/Makefile
tools/testing/selftests/lib.mk

index eaf599dc2137b85c18dbb09b80465528ca07c7b0..7442dfb73b7f3149d00a0ec92e4e7a19dd50542c 100644 (file)
@@ -116,8 +116,15 @@ ifdef INSTALL_PATH
 
        @# Ask all targets to emit their test scripts
        echo "#!/bin/sh" > $(ALL_SCRIPT)
-       echo "cd \$$(dirname \$$0)" >> $(ALL_SCRIPT)
+       echo "BASE_DIR=\$$(realpath \$$(dirname \$$0))" >> $(ALL_SCRIPT)
+       echo "cd \$$BASE_DIR" >> $(ALL_SCRIPT)
        echo "ROOT=\$$PWD" >> $(ALL_SCRIPT)
+       echo "if [ \"\$$1\" = \"--summary\" ]; then" >> $(ALL_SCRIPT)
+       echo "  OUTPUT=\$$BASE_DIR/output.log" >> $(ALL_SCRIPT)
+       echo "  cat /dev/null > \$$OUTPUT" >> $(ALL_SCRIPT)
+       echo "else" >> $(ALL_SCRIPT)
+       echo "  OUTPUT=/dev/stdout" >> $(ALL_SCRIPT)
+       echo "fi" >> $(ALL_SCRIPT)
 
        for TARGET in $(TARGETS); do \
                BUILD_TARGET=$$BUILD/$$TARGET;  \
index 5bef05d6ba3935c4c288faec8c8efc83ed4a3849..7de482a0519dbbc9889e8d969d064bae4d29b3d5 100644 (file)
@@ -77,7 +77,7 @@ endif
 define EMIT_TESTS
        @for TEST in $(TEST_GEN_PROGS) $(TEST_CUSTOM_PROGS) $(TEST_PROGS); do \
                BASENAME_TEST=`basename $$TEST`;        \
-               echo "(./$$BASENAME_TEST > /tmp/$$BASENAME_TEST 2>&1 && echo \"selftests: $$BASENAME_TEST [PASS]\") || echo \"selftests: $$BASENAME_TEST [FAIL]\""; \
+               echo "(./$$BASENAME_TEST >> \$$OUTPUT 2>&1 && echo \"selftests: $$BASENAME_TEST [PASS]\") || echo \"selftests: $$BASENAME_TEST [FAIL]\""; \
        done;
 endef