aboutgitcodebugslistschat
diff options
context:
space:
mode:
-rw-r--r--test/README.md16
-rwxr-xr-xtest/lib/term2
-rwxr-xr-xtest/run37
3 files changed, 53 insertions, 2 deletions
diff --git a/test/README.md b/test/README.md
index 72a4986..09ad05d 100644
--- a/test/README.md
+++ b/test/README.md
@@ -85,6 +85,22 @@ variable settings: DEBUG=1 enables debugging messages, TRACE=1 enables tracing
PCAP=1 TRACE=1 ./run
+## Running selected tests
+
+Rudimentary support to run a list of selected tests, without support for
+dependencies, is available. Tests need to have a setup function corresponding to
+their path. For example:
+
+ ./run passt/ndp passt/dhcp pasta/ndp
+
+will call the 'passt' setup function (from lib/setup), run the two corresponding
+tests, call the 'passt' teardown function, the 'pasta' setup, run the pasta/ndp
+test, and finally tear down the 'pasta' setup.
+
+Note that requirements on steps implemented by related tests are not handled.
+For example, if the 'passt/tcp' needs guest connectivity set up by the
+'passt/ndp' and 'passt/dhcp' tests, those need to be listed explicitly.
+
## Continuous integration
Issuing:
diff --git a/test/lib/term b/test/lib/term
index eade2cd..1b42df8 100755
--- a/test/lib/term
+++ b/test/lib/term
@@ -650,7 +650,7 @@ run_term() {
asciinema rec --overwrite "${STATEBASE}/demo.uncut" -c "$TMUX /bin/sh -c './run_demo from_term'"
video_postprocess "${STATEBASE}/demo.uncut"
else
- $TMUX /bin/sh -c './run from_term'
+ $TMUX /bin/sh -c "./run from_term ${*}"
fi
}
diff --git a/test/run b/test/run
index 4bb9cd8..1ae270e 100755
--- a/test/run
+++ b/test/run
@@ -127,6 +127,37 @@ run() {
return 0
}
+# run_selected() - Run list of tests, with setup/teardown based on test path
+# $@: List of tests
+run_selected() {
+ mkfifo $STATEBASE/log_pipe
+
+ term
+ VALGRIND=1
+
+ __setup=
+ for __test; do
+ if [ "${__test%%/*}" != "${__setup}" ]; then
+ [ -n "${__setup}" ] && teardown "${__setup}"
+ __setup="${__test%%/*}"
+ setup "${__setup}"
+ fi
+
+ test "${__test}"
+ done
+ teardown "${__setup}"
+
+ log "PASS: ${STATUS_PASS}, FAIL: ${STATUS_FAIL}"
+
+ pause_continue \
+ "Press any key to keep test session open" \
+ "Closing in " \
+ "Interrupted, press any key to quit" \
+ 9
+
+ return 0
+}
+
# demo() - Simpler path for demo purposes
demo() {
mkfifo $STATEBASE/log_pipe
@@ -160,11 +191,15 @@ demo() {
[ "$(basename "${0}")" = "run_demo" ] && DEMO=1
if [ "${1}" = "from_term" ]; then
+ shift
+
exec > ${LOGDIR}/script.log 2>&1
[ ${DEBUG} -eq 1 ] && set -x
cd ..
if [ ${DEMO} -eq 1 ]; then
demo
+ elif [ -n "${1}" ]; then
+ run_selected ${*}
else
run
fi
@@ -176,7 +211,7 @@ else
:> "${LOGFILE}"
STATEBASE="$(mktemp -d --tmpdir passt-tests-XXXXXX)"
trap "cleanup" EXIT
- run_term
+ run_term ${*}
fi
[ ${DEMO} -eq 1 ] && exit 0