bsd.regress.mk revision 1.15
1# $OpenBSD: bsd.regress.mk,v 1.15 2018/09/26 09:34:23 bluhm 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) 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?=no 25 26_REGRESS_NAME=${.CURDIR:S/${BSDSRCDIR}\/regress\///} 27_REGRESS_TMP?=/dev/null 28_REGRESS_OUT= | tee -a ${REGRESS_LOG} ${_REGRESS_TMP} 2>&1 > /dev/null 29 30.if defined(PROG) && !empty(PROG) 31run-regress-${PROG}: ${PROG} 32 ./${PROG} 33.endif 34 35.if defined(PROG) && !defined(REGRESS_TARGETS) 36REGRESS_TARGETS=run-regress-${PROG} 37. if defined(REGRESS_SKIP) 38REGRESS_SKIP_TARGETS=run-regress-${PROG} 39. endif 40.endif 41 42.if defined(REGRESS_SLOW_TARGETS) && ${REGRESS_SKIP_SLOW} != no 43REGRESS_SKIP_TARGETS+=${REGRESS_SLOW_TARGETS} 44.endif 45 46.if ${REGRESS_FAIL_EARLY} != no 47_SKIP_FAIL= 48.else 49_SKIP_FAIL=- 50.endif 51 52.if defined(REGRESS_ROOT_TARGETS) 53_ROOTUSER!=id -g 54SUDO?= 55. if (${_ROOTUSER} != 0) && empty(SUDO) 56REGRESS_SKIP_TARGETS+=${REGRESS_ROOT_TARGETS} 57. endif 58.endif 59 60.if defined(ERRORS) 61.BEGIN: 62. for _m in ${ERRORS} 63 @echo 1>&2 ${_m} 64. endfor 65. if !empty(ERRORS:M"Fatal\:*") || !empty(ERRORS:M'Fatal\:*') 66 @exit 1 67. endif 68.endif 69 70REGRESS_SETUP?= 71REGRESS_CLEANUP?= 72.if !empty(REGRESS_SETUP) 73${REGRESS_TARGETS}: ${REGRESS_SETUP} 74.endif 75 76regress: .SILENT 77.if ! ${REGRESS_LOG:M/*} 78 echo ========================================================= 79 echo REGRESS_LOG must contain an absolute path to the log-file. 80 echo It currently points to: ${REGRESS_LOG} 81 echo ========================================================= 82 exit 1 83.endif 84.for RT in ${REGRESS_TARGETS} ${REGRESS_CLEANUP} 85. if ${REGRESS_SKIP_TARGETS:M${RT}} 86 @echo -n "SKIP " ${_REGRESS_OUT} 87. else 88# XXX - we need a better method to see if a test fails due to timeout or just 89# normal failure. 90. if !defined(REGRESS_MAXTIME) 91 ${_SKIP_FAIL}if cd ${.CURDIR} && ${MAKE} ${RT}; then \ 92 echo -n "SUCCESS " ${_REGRESS_OUT} ; \ 93 else \ 94 echo -n "FAIL " ${_REGRESS_OUT} ; \ 95 echo FAILED ; \ 96 false; \ 97 fi 98. else 99 ${_SKIP_FAIL}if cd ${.CURDIR} && \ 100 (ulimit -t ${REGRESS_MAXTIME} ; ${MAKE} ${RT}); then \ 101 echo -n "SUCCESS " ${_REGRESS_OUT} ; \ 102 else \ 103 echo -n "FAIL (possible timeout) " ${_REGRESS_OUT} ; \ 104 echo FAILED ; \ 105 false; \ 106 fi 107. endif 108. endif 109 @echo ${_REGRESS_NAME}/${RT:S/^run-regress-//} ${_REGRESS_OUT} 110.endfor 111 112.PHONY: regress 113