#!/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}"
		context_run host "$@" "${__testid}" && status_test_ok || status_test_fail
	done

	cd ..

	teardown_context_watch ${PANE_HOST} host
}
