summaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
authorAnil Madhavapeddy <avsm@cvs.openbsd.org>2002-09-02 19:56:56 +0000
committerAnil Madhavapeddy <avsm@cvs.openbsd.org>2002-09-02 19:56:56 +0000
commit70193690e3923fa6112b8081bdb745c3d4cbf025 (patch)
tree1698f113eccd6c769bb561f6228bacc0cf3a50aa /share
parent271b56cac31ac1bca5bb463a045e9afa2209dda9 (diff)
- Precede internal bsd.regress.mk variables with a _
- Rename old variables to be easier to read, and deprecate old variables. The old variables will still work, but emit warnings. - REGRESS_SKIP_SLOW only needs to be non-empty now, not explicitly set to 'yes' - REGRESS_LOG can contain more than one file to append results to - ERRORS variable can be set in Makefile to emit warnings or indicate fatal errors. - Add REGRESS_MAIL variable which can be set to an email address to send results to. Currently this only works for a full regression run, since art doesnt want partial run results - sync bsd.regress.mk(5) with these changes ok art@ , also looked over by miod@
Diffstat (limited to 'share')
-rw-r--r--share/man/man5/bsd.regress.mk.526
-rw-r--r--share/mk/bsd.regress.mk99
2 files changed, 80 insertions, 45 deletions
diff --git a/share/man/man5/bsd.regress.mk.5 b/share/man/man5/bsd.regress.mk.5
index c4410b91bd0..6a370f8ffe6 100644
--- a/share/man/man5/bsd.regress.mk.5
+++ b/share/man/man5/bsd.regress.mk.5
@@ -1,4 +1,4 @@
-.\" $OpenBSD: bsd.regress.mk.5,v 1.2 2002/08/30 11:59:39 mpech Exp $
+.\" $OpenBSD: bsd.regress.mk.5,v 1.3 2002/09/02 19:56:55 avsm Exp $
.\"
.\" Copyright (c) 2002 Anil Madhavapeddy
.\" Copyright (c) 2000 Marc Espie
@@ -58,33 +58,33 @@ If the exit status of the program indicates an error or timeout,
then a failure is logged, otherwise the test is marked as a success.
.El
.Sh VARIABLES
-.Bl -tag -width REGRESSLOG
-.It Ev REGRESSLOG
+.Bl -tag -width REGRESS_LOG
+.It Ev REGRESS_LOG
Points to the fully-qualified path of a file to which regression
results are appended.
Defaults to
.Pa /dev/null .
-.It Ev REGRESSMAXTIME
+.It Ev REGRESS_MAXTIME
Maximum limit of CPU seconds to spend on the regression test.
Exceeding this time will result in a failure being logged.
-.It Ev REGRESSROOTTARGETS
+.It Ev REGRESS_ROOT_TARGETS
Targets for which root access is required to run the test.
The
.Ev SUDO
variable is invoked for these targets.
See also
.Ev SUDO .
-.It Ev REGRESSSKIPSLOW
-Skip over all the regression tests which have been marked as
-being 'slow' using the
-.Ev REGRESSSLOWTARGETS
+.It Ev REGRESS_SKIP_SLOW
+If this variable is not empty, skip over all the regression
+tests which have been marked as being 'slow' using the
+.Ev REGRESS_SLOW_TARGETS
variable.
-.It Ev REGRESSSLOWTARGETS
+.It Ev REGRESS_SLOW_TARGETS
Targets which are defined as 'slow'.
All of these tests can be skipped by setting the
-.Ev REGRESSSKIPSLOW
+.Ev REGRESS_SKIP_SLOW
variable.
-.It Ev REGRESSTARGETS
+.It Ev REGRESS_TARGETS
Targets which are invoked to run the set of regression tests
for this Makefile.
Defaults to
@@ -95,7 +95,7 @@ test targets which require it.
.El
.Sh BUGS AND LIMITATIONS
The build system is unable to distinguish between timeouts due to
-.Ev REGRESSMAXTIME
+.Ev REGRESS_MAXTIME
being exceeded, or a genuine failure occurring.
.Sh HISTORY
The regression system originally came from
diff --git a/share/mk/bsd.regress.mk b/share/mk/bsd.regress.mk
index ff70d71a5ce..71776683f7e 100644
--- a/share/mk/bsd.regress.mk
+++ b/share/mk/bsd.regress.mk
@@ -1,12 +1,14 @@
-# $OpenBSD: bsd.regress.mk,v 1.9 2002/02/17 01:10:15 marc Exp $
+# $OpenBSD: bsd.regress.mk,v 1.10 2002/09/02 19:56:55 avsm Exp $
+# Documented in bsd.regress.mk(5)
+
# No man pages for regression tests.
NOMAN=
# No installation.
install:
-# If REGRESSTARGETS is defined and PROG is not defined, set NOPROG
-.if defined(REGRESSTARGETS) && !defined(PROG)
+# If REGRESS_TARGETS is defined and PROG is not defined, set NOPROG
+.if defined(REGRESS_TARGETS) && !defined(PROG)
NOPROG=
.endif
@@ -15,63 +17,96 @@ NOPROG=
.MAIN: all
all: regress
-# XXX - Need full path to REGRESSLOG, otherwise there will be much pain.
+# Check for deprecated REGRESS* variables and assign them to the
+# new versions if the new version is not already defined.
+_REGRESS_DEPRECATED=LOG:LOG SKIPTARGETS:SKIP_TARGETS SKIPSLOW:SKIP_SLOW \
+ SKIP:SKIP TARGETS:TARGETS MAXTIME:MAXTIME ROOTTARGETS:ROOT_TARGETS
+
+.for _I in ${_REGRESS_DEPRECATED}
+_REGRESS_OLD=REGRESS${_I:C/\:.*//}
+_REGRESS_NEW=REGRESS_${_I:C/.*\://}
+. if defined(${_REGRESS_OLD})
+ERRORS:= ${ERRORS} "Warning: ${_REGRESS_OLD} is deprecated, use ${_REGRESS_NEW} instead."
+. if !defined(${_REGRESS_NEW})
+${_REGRESS_NEW}:=${${_REGRESS_OLD}}
+. endif
+. endif
+.endfor
+
+# XXX - Need full path to REGRESS_LOG, otherwise there will be much pain.
+REGRESS_LOG?=/dev/null
+REGRESS_SKIP_TARGETS?=
+REGRESS_SKIP_SLOW?=no
-REGRESSLOG?=/dev/null
-REGRESSNAME=${.CURDIR:S/${BSDSRCDIR}\/regress\///}
+_REGRESS_NAME=${.CURDIR:S/${BSDSRCDIR}\/regress\///}
+_REGRESS_TMP?=/dev/null
+_REGRESS_OUT= | tee -a ${REGRESS_LOG} ${_REGRESS_TMP} 2>&1 > /dev/null
.if defined(PROG) && !empty(PROG)
run-regress-${PROG}: ${PROG}
./${PROG}
.endif
-.if !defined(REGRESSTARGETS)
-REGRESSTARGETS=run-regress-${PROG}
-. if defined(REGRESSSKIP)
-REGRESSSKIPTARGETS=run-regress-${PROG}
+.if !defined(REGRESS_TARGETS)
+REGRESS_TARGETS=run-regress-${PROG}
+. if defined(REGRESS_SKIP)
+REGRESS_SKIP_TARGETS=run-regress-${PROG}
. endif
.endif
-REGRESSSKIPSLOW?=no
-
-.if (${REGRESSSKIPSLOW:L} == "yes") && defined(REGRESSSLOWTARGETS)
-REGRESSSKIPTARGETS+=${REGRESSSLOWTARGETS}
+.if defined(REGRESS_SLOW_TARGETS) && !empty(REGRESS_SKIP_SLOW)
+REGRESS_SKIP_TARGETS+=${REGRESS_SLOW_TARGETS}
.endif
-.if defined(REGRESSROOTTARGETS)
-ROOTUSER!=id -g
+.if defined(REGRESS_ROOT_TARGETS)
+_ROOTUSER!=id -g
SUDO?=
-. if (${ROOTUSER} != 0) && empty(SUDO)
-REGRESSSKIPTARGETS+=${REGRESSROOTTARGETS}
-. endif
+. if (${_ROOTUSER} != 0) && empty(SUDO)
+REGRESS_SKIP_TARGETS+=${REGRESS_ROOT_TARGETS}
+. endif
.endif
-REGRESSSKIPTARGETS?=
+.if defined(ERRORS)
+.BEGIN:
+. for _m in ${ERRORS}
+ @echo 1>&2 ${_m}
+. endfor
+. if !empty(ERRORS:M"Fatal\:*") || !empty(ERRORS:M'Fatal\:*')
+ @exit 1
+. endif
+.endif
-regress:
-.for RT in ${REGRESSTARGETS}
-. if ${REGRESSSKIPTARGETS:M${RT}}
- @echo -n "SKIP " >> ${REGRESSLOG}
+regress: .SILENT
+.if ! ${REGRESS_LOG:M/*}
+ echo =========================================================
+ echo REGRESS_LOG must contain an absolute path to the log-file.
+ echo It currently points to: ${REGRESS_LOG}
+ echo =========================================================
+ exit 1
+.endif
+.for RT in ${REGRESS_TARGETS}
+. if ${REGRESS_SKIP_TARGETS:M${RT}}
+ @echo -n "SKIP " ${_REGRESS_OUT}
. else
# XXX - we need a better method to see if a test fails due to timeout or just
# normal failure.
-. if !defined(REGRESSMAXTIME)
- @if cd ${.CURDIR} && ${MAKE} ${RT}; then \
- echo -n "SUCCESS " >> ${REGRESSLOG} ; \
+. if !defined(REGRESS_MAXTIME)
+ -if cd ${.CURDIR} && ${MAKE} ${RT}; then \
+ echo -n "SUCCESS " ${_REGRESS_OUT} ; \
else \
- echo -n "FAIL " >> ${REGRESSLOG} ; \
+ echo -n "FAIL " ${_REGRESS_OUT} ; \
echo FAILED ; \
fi
. else
- @if cd ${.CURDIR} && (ulimit -t ${REGRESSMAXTIME} ; ${MAKE} ${RT}); then \
- echo -n "SUCCESS " >> ${REGRESSLOG} ; \
+ -if cd ${.CURDIR} && (ulimit -t ${REGRESS_MAXTIME} ; ${MAKE} ${RT}); then \
+ echo -n "SUCCESS " ${_REGRESS_OUT} ; \
else \
- echo -n "FAIL (possible timeout) " >> ${REGRESSLOG} ; \
+ echo -n "FAIL (possible timeout) " ${_REGRESS_OUT} ; \
echo FAILED ; \
fi
. endif
. endif
- @echo ${REGRESSNAME}/${RT:S/^run-regress-//} >> ${REGRESSLOG}
+ @echo ${_REGRESS_NAME}/${RT:S/^run-regress-//} ${_REGRESS_OUT}
.endfor
.PHONY: regress