mirror of
https://github.com/netbirdio/plugins.git
synced 2026-05-22 18:44:07 -07:00
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:
+55
-25
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user