110 lines
3.3 KiB
Makefile

# $OpenBSD: Makefile,v 1.16 2015/04/15 08:19:48 zhuk Exp $
# To add a test named ${testname}:
# 1) If test should catch errors, add sample portcheck output to the
# ${testname}.sample file in this directory. Otherwise, this file should
# absent.
# 2) Create test port directory with ${testname} name.
# 3) Add the test to REGRESS_TARGETS.
# 4) If the test doesn't need running plist checks, add the -P to the
# TEST_${testname}_ARGS variable. Do this in the "test-specific parameters"
# section below.
# user-customizeable
REGRESS_TARGETS ?= t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16
PORTCHECK ?= ${PORTSDIR}/infrastructure/bin/portcheck
PORTCHECK_ARGS ?=
SUBST_CMD ?= ${PORTSDIR}/infrastructure/bin/pkg_subst
# internal stuff, non-customizable
PORTCHECK_ROOT_DIR = ${.CURDIR:C,/[^/]+/*$,,}
CATEGORY = ${.CURDIR:C,^${PORTSDIR}/,,}
SUBST_ARGS = -c -DCATEGORY=${CATEGORY}
SCANNING_MSG = "scanning ports under the ${PORTSDIR}"
# test-specific parameters
TEST_t1_ARGS = -N
TEST_t3_ARGS = -A ${CATEGORY}/t3
TEST_t4_ARGS = -A -P ${CATEGORY}/t4
TEST_t5_ARGS = -N
TEST_t7_ARGS = -P
TEST_t8_ARGS = -P
TEST_t9_ARGS = -P
TEST_t13_ARGS = -P
TEST_t14_ARGS = -P
TEST_t15_ARGS = -P
TEST_t16_ARGS = -P
# define tests
.for _t in ${REGRESS_TARGETS}
TEST_${_t}_ARGS ?=
TEST_${_t}_DIR = ${.CURDIR}/${_t}
TEST_${_t}_DIFF_OPTS =
. if ${TEST_${_t}_ARGS:M-A}
TEST_${_t}_DIFF_OPTS += -I ${SCANNING_MSG}
. endif
# will exist if and only if portcheck returned non-zero
TEST_${_t}_FAIL = ${_t}.failed
# output of portcheck's stdout and stderr
TEST_${_t}_OUT = ${_t}.pkgpath
TEST_${_t}_ERR = ${_t}.errors
CLEANFILES += ${TEST_${_t}_FAIL} ${TEST_${_t}_ERR} ${TEST_${_t}_OUT}
# sample error list, to compare with actual portcheck output
TEST_${_t}_SAMPLE_SRC = ${.CURDIR}/${_t}.sample
# same as above but after substitution, needed for path independancy
TEST_${_t}_SAMPLE = ${_t}.sample.subst
CLEANFILES += ${TEST_${_t}_SAMPLE}
. if exists(${TEST_${_t}_SAMPLE_SRC})
${TEST_${_t}_SAMPLE}: ${TEST_${_t}_SAMPLE_SRC}
@${SUBST_CMD} ${SUBST_ARGS} -DTEST=${_t} $> $@
${_t}: ${TEST_${_t}_SAMPLE}
. endif
${_t}:
@echo '=> ${_t}'
@rm -f ${TEST_${_t}_FAIL}
@(cd ${TEST_${_t}_DIR}; ${PORTCHECK} ${TEST_${_t}_ARGS}) \
>${TEST_${_t}_OUT} 2>${TEST_${_t}_ERR} || touch ${TEST_${_t}_FAIL}
. if exists(${TEST_${_t}_SAMPLE_SRC})
# there should be errors printed and portcheck should exit with non-zero code
@test -e ${TEST_${_t}_FAIL} || echo "${_t}: portcheck did not fail"
@sort <${TEST_${_t}_ERR} | \
diff -u ${TEST_${_t}_DIFF_OPTS} ${TEST_${_t}_SAMPLE} -
. else
# there should be NO errors printed and portcheck should exit with zero code
@test ! -e ${TEST_${_t}_FAIL} || echo "${_t}: portcheck did not succeed"
# in -A mode, portcheck still prints to stderr ${SCANNING_MSG}
. if ${TEST_${_t}_ARGS:M-A}
@echo ${SCANNING_MSG} | \
diff -u ${TEST_${_t}_DIFF_OPTS} - ${TEST_${_t}_ERR}
. else
@test ! -s ${TEST_${_t}_ERR} || { \
echo "${_t}: portcheck printed errors:"; \
cat ${TEST_${_t}_ERR}; \
}
. endif
. endif
. if ${TEST_${_t}_ARGS:M-A}
@test ! -s ${TEST_${_t}_OUT} || { \
echo "${_t}: portcheck printed on stdout:"; \
cat ${TEST_${_t}_OUT}; \
}
. else
@echo ${CATEGORY}/${_t} | \
diff -u ${TEST_${_t}_DIFF_OPTS} - ${TEST_${_t}_OUT}
. endif
.PHONY: ${_t}
.endfor
.include <bsd.regress.mk>