devel/debug: some qyua improvements

Allow to run reference tests via -r, does not need /usr/src

Add a -b bootstrap mode which brings in /usr/tests
This commit is contained in:
Franco Fichtner
2024-11-22 08:56:45 +01:00
parent edae632a23
commit 530ca736f1
+55 -25
View File
@@ -23,6 +23,8 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
set -e
COMPONENT=sys/netpfil/pf
TESTDIR=/usr/src/tests/${COMPONENT}
@@ -34,20 +36,29 @@ if [ "$(id -u)" != "0" ]; then
fi
DO_ALL=
DO_BOOTSTRAP=
DO_DEBUG=
DO_LIST=
DO_INJECT=yes
while getopts adlV OPT; do
while getopts abdlrV OPT; do
case ${OPT} in
a)
DO_ALL="-a"
;;
b)
DO_BOOTSTRAP="-b"
;;
d)
DO_DEBUG="-d"
;;
l)
DO_LIST="-l"
;;
r)
# referenece testing via /usr/tests
unset DO_INJECT
;;
V)
DO_VERBOSE="-V"
;;
@@ -64,15 +75,14 @@ if [ -n "${DO_VERBOSE}" ]; then
set -x
fi
list()
{
for TEST in $(find -s ${TESTDIR} -name "*.sh"); do
TEST=$(basename ${TEST})
echo ${TEST%.sh}
done
}
if [ -n "${DO_BOOTSTRAP}" ]; then
opnsense-update -Q
if [ ! -d "${TESTDIR}" ]; then
# XXX needed for inject mode (default) but not sure if the best way
#opnsense-code src
fi
if [ -n "${DO_INJECT}" -a ! -d "${TESTDIR}" ]; then
echo "Source directory not found: ${TESTDIR}" >&2
exit 1
fi
@@ -82,6 +92,23 @@ if [ ! -d "${DESTDIR}" ]; then
exit 1
fi
# clear from previous run
rm -rf ${DESTDIR}/_*
list()
{
if [ -z "${DO_INJECT}" ]; then
cat ${DESTDIR}/Kyuafile | tr '"' ' ' | while read PRE NAME MORE; do
echo ${NAME}
done
else
for TEST in $(find -s ${TESTDIR} -name "*.sh"); do
TEST=$(basename ${TEST})
echo ${TEST%.sh}
done
fi
}
if [ -n "${DO_LIST}" ]; then
list
exit 0
@@ -98,9 +125,6 @@ if [ -z "${TESTS}" ]; then
fi
# clear from previous run
rm -rf ${DESTDIR}/_*
# set up a shadow config
cat > ${DESTDIR}/_Kyuafile << EOF
-- Automatically generated by bsd.test.mk.
@@ -111,34 +135,40 @@ test_suite("FreeBSD")
EOF
FINAL=
for TEST in ${TESTS}; do
if [ -n "${DO_DEBUG}" ]; then
TEST=${TEST%%:*}
fi
if [ -n "${DO_INJECT}" ]; then
if [ -n "${DO_DEBUG}" ]; then
TEST=${TEST%%:*}
fi
if [ ! -f ${TESTDIR}/${TEST}.sh ]; then
echo "Source file not found: ${TESTDIR}/${TEST}.sh" >&2
exit 1
fi
if [ ! -f ${TESTDIR}/${TEST}.sh ]; then
echo "Source file not found: ${TESTDIR}/${TEST}.sh" >&2
exit 1
fi
cat >> ${DESTDIR}/_Kyuafile << EOF
cat >> ${DESTDIR}/_Kyuafile << EOF
atf_test_program{name="_${TEST}", is_exclusive=true}
EOF
cat > ${DESTDIR}/_${TEST} << EOF
cat > ${DESTDIR}/_${TEST} << EOF
#! /usr/libexec/atf-sh
$(cat ${TESTDIR}/${TEST}.sh)
EOF
chmod 555 ${DESTDIR}/_${TEST}
chmod 555 ${DESTDIR}/_${TEST}
fi
FINAL="${FINAL} ${DO_INJECT+_}${TEST}"
done
if [ -z "${DO_DEBUG}" ]; then
exec kyua test -k ${DESTDIR}/_Kyuafile
exec kyua test -k ${DESTDIR}/${DO_INJECT+_}Kyuafile ${FINAL}
else
for TEST in ${TESTS}; do
for TEST in ${FINAL}; do
# only support first one
exec kyua debug -k ${DESTDIR}/_Kyuafile _${TEST}
exec kyua debug -k ${DESTDIR}/${DO_INJECT+_}Kyuafile ${TEST}
done
fi