59 lines
1.3 KiB
Bash
Executable file
59 lines
1.3 KiB
Bash
Executable file
#!/bin/sh
|
|
method=$1
|
|
img=$2
|
|
timeout=$3
|
|
timeoutprog=$4
|
|
|
|
set -e
|
|
|
|
errcho() {
|
|
>&2 echo "$*"
|
|
}
|
|
|
|
get_test_output() {
|
|
case $method in
|
|
qemu-system-*)
|
|
if ! command -v $method >/dev/null 2>&1 ; then
|
|
errcho "Warning: $method not installed, skipping test"
|
|
echo "@@SKIPPED"
|
|
exit 0
|
|
fi
|
|
|
|
case $method in
|
|
qemu-system-i386) img="-drive file=$img,if=floppy,format=raw" ;;
|
|
qemu-system-ppc) img="-kernel $img" ;;
|
|
esac
|
|
|
|
$timeoutprog -t $timeout -- $method -nographic $img 2>&1
|
|
;;
|
|
|
|
qemu-*)
|
|
if ! command -v $method >/dev/null 2>&1 ; then
|
|
errcho "Warning: $method not installed, skipping test"
|
|
echo "@@SKIPPED"
|
|
exit 0
|
|
fi
|
|
|
|
$method $img 2>&1
|
|
;;
|
|
|
|
*)
|
|
$timeoutprog -t $timeout -- $method $img 2>&1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Hide output if the test passed.
|
|
# Show output if it failed, skipped, or timed out.
|
|
get_test_output | awk '
|
|
{ lines[count++] = $0 }
|
|
/@@FAIL|@@SKIPPED|@@TIMEDOUT/ { bad = 1 }
|
|
/@@FINISHED/ { finished = 1 }
|
|
END {
|
|
if (finished && !bad) exit 0
|
|
for (i = 0; i < count; i++) print lines[i]
|
|
if (!bad) print "@@FAIL by testdriver.sh"
|
|
exit 1
|
|
}
|
|
'
|