|
@@ -1,13 +1,71 @@
|
|
|
-#!/bin/sh
|
|
|
|
|
|
|
+#!/bin/bash
|
|
|
|
|
|
|
|
|
|
+LOGFILE="build/test-$$.log"
|
|
|
SUCCESS_MSG="###$RANDOM :SuCCeSS: $RANDOM###"
|
|
SUCCESS_MSG="###$RANDOM :SuCCeSS: $RANDOM###"
|
|
|
|
|
|
|
|
-if [ "$ARCH" = "" ]; then
|
|
|
|
|
- echo "Error: ARCH environment variable is not set." >&2
|
|
|
|
|
|
|
+die() {
|
|
|
|
|
+ echo "error: $1" >&2
|
|
|
exit 1
|
|
exit 1
|
|
|
-fi
|
|
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+runcmd() {
|
|
|
|
|
+ printf -v _cmd "%q" "$*"
|
|
|
|
|
+
|
|
|
|
|
+ cat <<EOF
|
|
|
|
|
+ expect {
|
|
|
|
|
+ "*/ # " { send "$_cmd\n" }
|
|
|
|
|
+ "*panicked" { exit 1 }
|
|
|
|
|
+ }
|
|
|
|
|
+EOF
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+wait_str() {
|
|
|
|
|
+ cat <<EOF
|
|
|
|
|
+ expect {
|
|
|
|
|
+ "*$*" {}
|
|
|
|
|
+ "*panicked" { exit 1 }
|
|
|
|
|
+ }
|
|
|
|
|
+EOF
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+wait_init_exit() {
|
|
|
|
|
+ echo 'expect "*init exited:" { exit 0 }'
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+cleanup() {
|
|
|
|
|
+ killall -KILL "qemu-system-$ARCH"
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+[ -z "$ARCH" ] && die "ARCH environment variable is not set"
|
|
|
|
|
+
|
|
|
|
|
+trap cleanup EXIT
|
|
|
|
|
+
|
|
|
|
|
+expect <<EOF | tee "$LOGFILE"
|
|
|
|
|
+
|
|
|
|
|
+set timeout 10
|
|
|
|
|
+spawn make test-run "ARCH=$ARCH" MODE=release "QEMU=qemu-system-$ARCH"
|
|
|
|
|
|
|
|
-printf "ls\necho \"$SUCCESS_MSG\"\npoweroff\n" \
|
|
|
|
|
- | make test-run ARCH=$ARCH MODE=release QEMU=qemu-system-$ARCH \
|
|
|
|
|
- | tee build/test-$$.log \
|
|
|
|
|
- | grep "$SUCCESS_MSG" > /dev/null && echo TEST\ $$\ WITH\ ARCH=$ARCH\ PASSED
|
|
|
|
|
|
|
+$(runcmd ls -la)
|
|
|
|
|
+
|
|
|
|
|
+$(wait_str proc)
|
|
|
|
|
+
|
|
|
|
|
+$(runcmd echo \""$SUCCESS_MSG"\")
|
|
|
|
|
+
|
|
|
|
|
+$(wait_str "\n$SUCCESS_MSG")
|
|
|
|
|
+
|
|
|
|
|
+$(runcmd poweroff)
|
|
|
|
|
+
|
|
|
|
|
+$(wait_init_exit)
|
|
|
|
|
+
|
|
|
|
|
+EOF
|
|
|
|
|
+
|
|
|
|
|
+status=$?
|
|
|
|
|
+
|
|
|
|
|
+echo
|
|
|
|
|
+
|
|
|
|
|
+# shellcheck disable=SC2181
|
|
|
|
|
+if [ $status -ne 0 ]; then
|
|
|
|
|
+ echo "=== Test $$ with ARCH=$ARCH failed"
|
|
|
|
|
+else
|
|
|
|
|
+ echo "=== Test $$ with ARCH=$ARCH passed"
|
|
|
|
|
+fi
|