aboutgitcodebugslistschat
path: root/test/lib/exeter
diff options
context:
space:
mode:
Diffstat (limited to 'test/lib/exeter')
-rw-r--r--test/lib/exeter66
1 files changed, 66 insertions, 0 deletions
diff --git a/test/lib/exeter b/test/lib/exeter
new file mode 100644
index 0000000..ccdb19c
--- /dev/null
+++ b/test/lib/exeter
@@ -0,0 +1,66 @@
+#!/bin/sh
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# PASST - Plug A Simple Socket Transport
+# for qemu/UNIX domain socket mode
+#
+# PASTA - Pack A Subtle Tap Abstraction
+# for network namespace/tap device mode
+#
+# test/lib/exeter - Run exeter tests within the rest of passt's tests
+#
+# Copyright Red Hat
+# Author: David Gibson <david@gibson.dropbear.id.au>
+
+EXETOOL="${BASEPATH}/exeter/exetool/exetool"
+
+# is_exeter() - Determine if a test file is an exeter program
+# $@: Command line to invoke test program
+is_exeter() {
+ ${EXETOOL} probe -- "${@}"
+}
+
+# exeter() - Run each test in an exeter program, logging each test separately
+# $@: Command line to invoke exeter test program
+exeter() {
+ STATESETUP="${STATEBASE}/${1}"
+ mkdir -p "${STATESETUP}"
+
+ context_setup_host host
+ layout_host
+
+ cd test
+
+ __ntests=$(${EXETOOL} list -- "${@}" | wc -l)
+ if [ ${?} != 0 ]; then
+ info "Failed to get exeter manifest for ${@}"
+ pause_continue \
+ "Press any key to pause test session" \
+ "Resuming in " \
+ "Paused, press any key to continue" \
+ 5
+ return
+ fi
+
+ status_file_start "${*} (exeter)" ${__ntests}
+ [ ${CI} -eq 1 ] && video_link "${1}"
+
+ for __testid in $(${EXETOOL} list -- "${@}"); do
+ __desc="$(${EXETOOL} desc -- "${@}" -- "${__testid}")"
+ status_test_start "${__desc}"
+ status=0
+ context_run host "${*} '${__testid}'" || status="${?}"
+ if [ "${status}" = 0 ]; then
+ status_test_ok
+ elif [ "${status}" = 77 ]; then
+ status_test_skip
+ else
+ status_test_fail
+ fi
+ done
+
+ cd ..
+
+ teardown_context_watch ${PANE_HOST} host
+}