bsd.regress.mk revision 1.26
1# $OpenBSD: bsd.regress.mk,v 1.26 2023/09/15 07:13:35 tb Exp $ 2# Documented in bsd.regress.mk(5) 3 4# No man pages for regression tests. 5NOMAN= 6 7# No installation. 8install: 9 10# If REGRESS_TARGETS is defined and PROG is not defined, set NOPROG 11.if defined(REGRESS_TARGETS) && !defined(PROG) && !defined(PROGS) 12NOPROG= 13.endif 14 15.include <bsd.prog.mk> 16 17.MAIN: all 18all: regress 19 20# XXX - Need full path to REGRESS_LOG, otherwise there will be much pain. 21REGRESS_LOG?=/dev/null 22REGRESS_SKIP_TARGETS?= 23REGRESS_SKIP_SLOW?=no 24REGRESS_FAIL_EARLY?=yes 25 26.if ! ${REGRESS_LOG:M/*} 27ERRORS += "Fatal: REGRESS_LOG=${REGRESS_LOG} is not an absolute path" 28.endif 29 30_REGRESS_NAME=${.CURDIR:S/${BSDSRCDIR}\/regress\///} 31_REGRESS_TMP?=/dev/null 32_REGRESS_OUT= | tee -a ${REGRESS_LOG} ${_REGRESS_TMP} 2>&1 > /dev/null 33 34.for p in ${PROG} ${PROGS} 35run-regress-$p: $p 36. if !commands(run-regress-$p) 37 ./$p 38. endif 39.PHONY: run-regress-$p 40.endfor 41 42.if (defined(PROG) || defined(PROGS)) && !defined(REGRESS_TARGETS) 43REGRESS_TARGETS= ${PROG:S/^/run-regress-/} ${PROGS:S/^/run-regress-/} 44. if defined(REGRESS_SKIP) 45REGRESS_SKIP_TARGETS= ${PROG:S/^/run-regress-/} ${PROGS:S/^/run-regress-/} 46. endif 47.endif 48 49.if defined(REGRESS_SLOW_TARGETS) && ${REGRESS_SKIP_SLOW:L} != no 50REGRESS_SKIP_TARGETS+=${REGRESS_SLOW_TARGETS} 51.endif 52 53.if ${REGRESS_FAIL_EARLY:L} != no 54_REGRESS_FAILED = false 55.else 56_REGRESS_FAILED = true 57.endif 58 59.if defined(REGRESS_ROOT_TARGETS) 60_ROOTUSER!=id -g 61SUDO?= 62. if (${_ROOTUSER} != 0) && empty(SUDO) 63REGRESS_SKIP_TARGETS+=${REGRESS_ROOT_TARGETS} 64. endif 65.endif 66 67REGRESS_EXPECTED_FAILURES?= 68REGRESS_SETUP?= 69REGRESS_SETUP_ONCE?= 70REGRESS_CLEANUP?= 71 72.if !empty(REGRESS_SETUP) 73${REGRESS_TARGETS}: ${REGRESS_SETUP} 74.endif 75 76.if !empty(REGRESS_SETUP_ONCE) 77CLEANFILES+=${REGRESS_SETUP_ONCE:S/^/stamp-/} 78${REGRESS_TARGETS}: ${REGRESS_SETUP_ONCE:S/^/stamp-/} 79${REGRESS_SETUP_ONCE:S/^/stamp-/}: .SILENT 80 echo '==== ${@:S/^stamp-//} ====' 81 ${MAKE} -C ${.CURDIR} ${@:S/^stamp-//} 82 date >$@ 83 echo 84.endif 85 86regress: .SILENT 87.if !empty(REGRESS_SETUP_ONCE) 88 rm -f ${REGRESS_SETUP_ONCE:S/^/stamp-/} 89 ${MAKE} -C ${.CURDIR} ${REGRESS_SETUP_ONCE:S/^/stamp-/} 90.endif 91.for RT in ${REGRESS_TARGETS} 92 echo '==== ${RT} ====' 93. if ${REGRESS_SKIP_TARGETS:M${RT}} 94 echo -n "SKIP " ${_REGRESS_OUT} 95 echo SKIPPED 96. elif ${REGRESS_EXPECTED_FAILURES:M${RT}} 97 if ${MAKE} -C ${.CURDIR} ${RT}; then \ 98 echo -n "XPASS " ${_REGRESS_OUT} ; \ 99 echo UNEXPECTED_PASS; \ 100 ${_REGRESS_FAILED}; \ 101 else \ 102 echo -n "XFAIL " ${_REGRESS_OUT} ; \ 103 echo EXPECTED_FAIL; \ 104 fi 105. else 106 if ${MAKE} -C ${.CURDIR} ${RT}; then \ 107 echo -n "SUCCESS " ${_REGRESS_OUT} ; \ 108 else \ 109 echo -n "FAIL " ${_REGRESS_OUT} ; \ 110 echo FAILED ; \ 111 ${_REGRESS_FAILED}; \ 112 fi 113. endif 114 echo ${_REGRESS_NAME}/${RT:S/^run-regress-//} ${_REGRESS_OUT} 115 echo 116.endfor 117.for RT in ${REGRESS_CLEANUP} 118 echo '==== ${RT} ====' 119 ${MAKE} -C ${.CURDIR} ${RT} 120 echo 121.endfor 122 rm -f ${REGRESS_SETUP_ONCE:S/^/stamp-/} 123 124.if defined(ERRORS) 125.BEGIN: 126. for _m in ${ERRORS} 127 @echo 1>&2 ${_m} 128. endfor 129. if !empty(ERRORS:M"Fatal\:*") || !empty(ERRORS:M'Fatal\:*') 130 @exit 1 131. endif 132.endif 133 134.PHONY: regress 135