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