Annotation of src/share/mk/bsd.regress.mk, Revision 1.12
1.12 ! kettenis 1: # $OpenBSD: bsd.regress.mk,v 1.11 2013/06/14 22:38:50 halex 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: # Check for deprecated REGRESS* variables and assign them to the
21: # new versions if the new version is not already defined.
22: _REGRESS_DEPRECATED=LOG:LOG SKIPTARGETS:SKIP_TARGETS SKIPSLOW:SKIP_SLOW \
23: SKIP:SKIP TARGETS:TARGETS MAXTIME:MAXTIME ROOTTARGETS:ROOT_TARGETS
24:
25: .for _I in ${_REGRESS_DEPRECATED}
26: _REGRESS_OLD=REGRESS${_I:C/\:.*//}
27: _REGRESS_NEW=REGRESS_${_I:C/.*\://}
28: . if defined(${_REGRESS_OLD})
29: ERRORS:= ${ERRORS} "Warning: ${_REGRESS_OLD} is deprecated, use ${_REGRESS_NEW} instead."
30: . if !defined(${_REGRESS_NEW})
31: ${_REGRESS_NEW}:=${${_REGRESS_OLD}}
32: . endif
33: . endif
34: .endfor
1.1 art 35:
1.10 avsm 36: # XXX - Need full path to REGRESS_LOG, otherwise there will be much pain.
37: REGRESS_LOG?=/dev/null
38: REGRESS_SKIP_TARGETS?=
39: REGRESS_SKIP_SLOW?=no
1.11 halex 40: REGRESS_FAIL_EARLY?=no
1.10 avsm 41:
42: _REGRESS_NAME=${.CURDIR:S/${BSDSRCDIR}\/regress\///}
43: _REGRESS_TMP?=/dev/null
44: _REGRESS_OUT= | tee -a ${REGRESS_LOG} ${_REGRESS_TMP} 2>&1 > /dev/null
1.1 art 45:
46: .if defined(PROG) && !empty(PROG)
1.3 art 47: run-regress-${PROG}: ${PROG}
1.1 art 48: ./${PROG}
49: .endif
50:
1.12 ! kettenis 51: .if defined(PROG) && !defined(REGRESS_TARGETS)
1.10 avsm 52: REGRESS_TARGETS=run-regress-${PROG}
53: . if defined(REGRESS_SKIP)
54: REGRESS_SKIP_TARGETS=run-regress-${PROG}
1.1 art 55: . endif
56: .endif
57:
1.10 avsm 58: .if defined(REGRESS_SLOW_TARGETS) && !empty(REGRESS_SKIP_SLOW)
59: REGRESS_SKIP_TARGETS+=${REGRESS_SLOW_TARGETS}
1.9 marc 60: .endif
61:
1.11 halex 62: .if ${REGRESS_FAIL_EARLY} != no
63: _SKIP_FAIL=
64: .else
65: _SKIP_FAIL=-
66: .endif
67:
1.10 avsm 68: .if defined(REGRESS_ROOT_TARGETS)
69: _ROOTUSER!=id -g
1.9 marc 70: SUDO?=
1.10 avsm 71: . if (${_ROOTUSER} != 0) && empty(SUDO)
72: REGRESS_SKIP_TARGETS+=${REGRESS_ROOT_TARGETS}
73: . endif
1.4 art 74: .endif
75:
1.10 avsm 76: .if defined(ERRORS)
77: .BEGIN:
78: . for _m in ${ERRORS}
79: @echo 1>&2 ${_m}
80: . endfor
81: . if !empty(ERRORS:M"Fatal\:*") || !empty(ERRORS:M'Fatal\:*')
82: @exit 1
83: . endif
84: .endif
1.1 art 85:
1.10 avsm 86: regress: .SILENT
87: .if ! ${REGRESS_LOG:M/*}
88: echo =========================================================
89: echo REGRESS_LOG must contain an absolute path to the log-file.
90: echo It currently points to: ${REGRESS_LOG}
91: echo =========================================================
92: exit 1
93: .endif
94: .for RT in ${REGRESS_TARGETS}
95: . if ${REGRESS_SKIP_TARGETS:M${RT}}
96: @echo -n "SKIP " ${_REGRESS_OUT}
1.1 art 97: . else
1.3 art 98: # XXX - we need a better method to see if a test fails due to timeout or just
99: # normal failure.
1.10 avsm 100: . if !defined(REGRESS_MAXTIME)
1.11 halex 101: ${_SKIP_FAIL}if cd ${.CURDIR} && ${MAKE} ${RT}; then \
1.10 avsm 102: echo -n "SUCCESS " ${_REGRESS_OUT} ; \
1.3 art 103: else \
1.10 avsm 104: echo -n "FAIL " ${_REGRESS_OUT} ; \
1.1 art 105: echo FAILED ; \
1.11 halex 106: false; \
1.1 art 107: fi
1.3 art 108: . else
1.11 halex 109: ${_SKIP_FAIL}if cd ${.CURDIR} && \
110: (ulimit -t ${REGRESS_MAXTIME} ; ${MAKE} ${RT}); then \
1.10 avsm 111: echo -n "SUCCESS " ${_REGRESS_OUT} ; \
1.3 art 112: else \
1.10 avsm 113: echo -n "FAIL (possible timeout) " ${_REGRESS_OUT} ; \
1.3 art 114: echo FAILED ; \
1.11 halex 115: false; \
1.3 art 116: fi
117: . endif
1.1 art 118: . endif
1.10 avsm 119: @echo ${_REGRESS_NAME}/${RT:S/^run-regress-//} ${_REGRESS_OUT}
1.1 art 120: .endfor
121:
122: .PHONY: regress