From 530ca736f14db3eb16dc7ec962161801c3e93654 Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Fri, 22 Nov 2024 08:56:45 +0100 Subject: [PATCH] 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 --- devel/debug/src/sbin/qyua | 80 +++++++++++++++++++++++++++------------ 1 file changed, 55 insertions(+), 25 deletions(-) diff --git a/devel/debug/src/sbin/qyua b/devel/debug/src/sbin/qyua index 7596ecbba..77f50354f 100755 --- a/devel/debug/src/sbin/qyua +++ b/devel/debug/src/sbin/qyua @@ -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