test: Write state and log files into $BUILD_DIR

This avoids clobbering the source tree with .testdir/test.log files and
makes the tests work in situations where the source tree is read-only.
This commit is contained in:
Martin Pitt 2017-08-07 17:30:11 +02:00
parent 7a0019d373
commit 22077c9c91
1 changed files with 11 additions and 6 deletions

View File

@ -23,6 +23,10 @@ fi
BASICTOOLS="sh bash setsid loadkeys setfont login sulogin gzip sleep echo mount umount cryptsetup date dmsetup modprobe sed cmp tee rm"
DEBUGTOOLS="df free ls stty cat ps ln ip route dmesg dhclient mkdir cp ping dhclient strace less grep id tty touch du sort hostname find"
STATEDIR="${BUILD_DIR:-.}/test/$(basename $(dirname $(realpath $0)))"
STATEFILE="$STATEDIR/.testdir"
TESTLOG="$STATEDIR/test.log"
function find_qemu_bin() {
# SUSE and Red Hat call the binary qemu-kvm
# Debian and Gentoo call it kvm
@ -626,7 +630,6 @@ inst_libs() {
}
import_testdir() {
STATEFILE=".testdir"
[[ -e $STATEFILE ]] && . $STATEFILE
if [[ -z "$TESTDIR" ]] || [[ ! -d "$TESTDIR" ]]; then
TESTDIR=$(mktemp --tmpdir=/var/tmp -d -t systemd-test.XXXXXX)
@ -1421,6 +1424,8 @@ do_test() {
[[ -d $usrlibdir ]] && libdirs+=" $usrlibdir" && break
done
mkdir -p "$STATEDIR"
import_testdir
import_initdir
@ -1444,7 +1449,7 @@ do_test() {
echo "TEST CLEANUP: $TEST_DESCRIPTION"
test_cleanup
rm -fr "$TESTDIR"
rm -f .testdir
rm -f "$STATEFILE"
exit $?;;
--all)
echo -n "TEST: $TEST_DESCRIPTION ";
@ -1453,16 +1458,16 @@ do_test() {
ret=$?
test_cleanup
rm -fr "$TESTDIR"
rm -f .testdir
rm -f "$STATEFILE"
exit $ret
) </dev/null >test.log 2>&1
) </dev/null >"$TESTLOG" 2>&1
ret=$?
if [ $ret -eq 0 ]; then
rm test.log
rm "$TESTLOG"
echo "[OK]"
else
echo "[FAILED]"
echo "see $(pwd)/test.log"
echo "see $TESTLOG"
fi
exit $ret;;
*) break ;;