Annotation of src/share/mk/bsd.regress.mk, Revision 1.21
1.21 ! espie 1: # $OpenBSD: bsd.regress.mk,v 1.20 2019/06/15 07:30:26 espie 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
11: .if defined(REGRESS_TARGETS) && !defined(PROG)
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.11 halex 24: REGRESS_FAIL_EARLY?=no
1.10 avsm 25:
1.19 espie 26: .if ! ${REGRESS_LOG:M/*}
27: ERRORS += "Fatal: REGRESS_LOG=${REGRESS_LOG} is not an absolute path"
28: .endif
29:
1.10 avsm 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
1.1 art 33:
34: .if defined(PROG) && !empty(PROG)
1.3 art 35: run-regress-${PROG}: ${PROG}
1.1 art 36: ./${PROG}
1.19 espie 37: .PHONY: run-regress-${PROG}
1.1 art 38: .endif
39:
1.12 kettenis 40: .if defined(PROG) && !defined(REGRESS_TARGETS)
1.10 avsm 41: REGRESS_TARGETS=run-regress-${PROG}
42: . if defined(REGRESS_SKIP)
43: REGRESS_SKIP_TARGETS=run-regress-${PROG}
1.1 art 44: . endif
45: .endif
46:
1.18 bluhm 47: .if defined(REGRESS_SLOW_TARGETS) && ${REGRESS_SKIP_SLOW:L} != no
1.10 avsm 48: REGRESS_SKIP_TARGETS+=${REGRESS_SLOW_TARGETS}
1.9 marc 49: .endif
50:
1.18 bluhm 51: .if ${REGRESS_FAIL_EARLY:L} != no
1.19 espie 52: _REGRESS_FAILED = false
1.11 halex 53: .else
1.19 espie 54: _REGRESS_FAILED = true
1.11 halex 55: .endif
56:
1.10 avsm 57: .if defined(REGRESS_ROOT_TARGETS)
58: _ROOTUSER!=id -g
1.9 marc 59: SUDO?=
1.10 avsm 60: . if (${_ROOTUSER} != 0) && empty(SUDO)
61: REGRESS_SKIP_TARGETS+=${REGRESS_ROOT_TARGETS}
62: . endif
1.4 art 63: .endif
64:
1.21 ! espie 65: REGRESS_EXPECTED_FAILURES?=
1.15 bluhm 66: REGRESS_SETUP?=
1.16 bluhm 67: REGRESS_SETUP_ONCE?=
1.15 bluhm 68: REGRESS_CLEANUP?=
1.16 bluhm 69:
1.15 bluhm 70: .if !empty(REGRESS_SETUP)
71: ${REGRESS_TARGETS}: ${REGRESS_SETUP}
72: .endif
1.1 art 73:
1.16 bluhm 74: .if !empty(REGRESS_SETUP_ONCE)
75: CLEANFILES+=${REGRESS_SETUP_ONCE:S/^/stamp-/}
76: ${REGRESS_TARGETS}: ${REGRESS_SETUP_ONCE:S/^/stamp-/}
77: ${REGRESS_SETUP_ONCE:S/^/stamp-/}: .SILENT
78: ${MAKE} -C ${.CURDIR} ${@:S/^stamp-//}
79: date >$@
80: .endif
81:
1.10 avsm 82: regress: .SILENT
1.16 bluhm 83: .if !empty(REGRESS_SETUP_ONCE)
84: rm -f ${REGRESS_SETUP_ONCE:S/^/stamp-/}
1.10 avsm 85: .endif
1.20 espie 86: .for RT in ${REGRESS_TARGETS}
1.10 avsm 87: . if ${REGRESS_SKIP_TARGETS:M${RT}}
1.19 espie 88: echo -n "SKIP " ${_REGRESS_OUT}
89: echo SKIPPED
1.21 ! espie 90: . elif ${REGRESS_EXPECTED_FAILURES:M${RT}}
! 91: if ${MAKE} -C ${.CURDIR} ${RT}; then \
! 92: echo -n "XPASS " ${_REGRESS_OUT} ; \
! 93: echo UNEXPECTED_PASS; \
! 94: ${_REGRESS_FAILED}; \
! 95: else \
! 96: echo -n "XFAIL " ${_REGRESS_OUT} ; \
! 97: echo EXPECTED_FAIL; \
! 98: fi
1.1 art 99: . else
1.19 espie 100: if ${MAKE} -C ${.CURDIR} ${RT}; then \
1.10 avsm 101: echo -n "SUCCESS " ${_REGRESS_OUT} ; \
1.3 art 102: else \
1.10 avsm 103: echo -n "FAIL " ${_REGRESS_OUT} ; \
1.1 art 104: echo FAILED ; \
1.19 espie 105: ${_REGRESS_FAILED}; \
1.1 art 106: fi
107: . endif
1.19 espie 108: echo ${_REGRESS_NAME}/${RT:S/^run-regress-//} ${_REGRESS_OUT}
1.1 art 109: .endfor
1.20 espie 110: .for RT in ${REGRESS_CLEANUP}
111: ${MAKE} -C ${.CURDIR} ${RT}
112: .endfor
113: rm -f ${REGRESS_SETUP_ONCE:S/^/stamp-/}
1.19 espie 114:
115: .if defined(ERRORS)
116: .BEGIN:
117: . for _m in ${ERRORS}
118: @echo 1>&2 ${_m}
119: . endfor
120: . if !empty(ERRORS:M"Fatal\:*") || !empty(ERRORS:M'Fatal\:*')
121: @exit 1
122: . endif
123: .endif
1.1 art 124:
125: .PHONY: regress