Documentation AND infra patch. - add test to the list of things that can be rebuilt/cleaned - recognize PORTS_PRIVSEP as a special case for automated testing, specifically, set TEST_IS_INTERACTIVE=network for testsuites that require network access.
Index: bsd.port.mk.5 =================================================================== RCS file: /cvs/src/share/man/man5/bsd.port.mk.5,v retrieving revision 1.511 diff -u -p -r1.511 bsd.port.mk.5 --- bsd.port.mk.5 31 May 2019 21:27:48 -0000 1.511 +++ bsd.port.mk.5 29 Jun 2019 12:39:47 -0000 @@ -169,7 +169,7 @@ Clean ports contents. By default, it will clean the work directory. It can be invoked as make clean='[depends build bulk work fake flavors dist install sub package -packages plist]'. +packages plist test]'. .Bl -tag -width packages .It Va work Clean work directory. @@ -195,6 +195,8 @@ Uninstall package. Remove all copies of package file. .It Va plist Remove registered packing lists of all subpackages. +.It Va test +Clean test cookie. .It Va sub With .Va install @@ -702,8 +704,11 @@ see .It Cm reprepare Force running the .Ar prepare -target -again. +target again. +.It Cm retest +Force running the +.Ar test +target again. .It Cm show Invoked as make show=name, show the contents of ${name}. Invoked as make show="name1 name2 ...", @@ -3015,9 +3020,18 @@ Empty by default. .It Ev TEST_IS_INTERACTIVE Set to .Sq Yes -if port needs human interaction to run its tests, or set to +if port needs human interaction to run its tests, set to .Sq X11 -if the tests need an active X11 display to work. +if the tests need an active X11 display to work, +set to +.Sq network +if the tests need access network +(setting +.Ev PORTS_PRIVSEP +disables network access for the +.Sq _pbuild +user, so these tests become, in effect, +interactive). .It Ev TEST_LOG Command used to log the results of regression tests to TEST_LOGFILE. Read-only. Index: bsd.port.mk =================================================================== RCS file: /cvs/ports/infrastructure/mk/bsd.port.mk,v retrieving revision 1.1471 diff -u -p -r1.1471 bsd.port.mk --- bsd.port.mk 16 Jun 2019 14:27:42 -0000 1.1471 +++ bsd.port.mk 29 Jun 2019 12:39:53 -0000 @@ -253,7 +253,7 @@ _clean += -f .endif _okay_words = depends work fake -f flavors dist install sub packages package \ - bulk force plist build all + bulk force plist build all test .for _w in ${_clean} . if !${_okay_words:M${_w}} ERRORS += "Fatal: unknown clean command: ${_w}\n(not in ${_okay_words})" @@ -928,8 +928,13 @@ TEST_LOGFILE ?= ${WRKDIR}/test.log TEST_LOG = | ${_PBUILD} tee ${TEST_LOGFILE} IS_INTERACTIVE ?= No TEST_IS_INTERACTIVE ?= No +.if ${TEST_IS_INTERACTIVE:L} == "network" && ${PORTS_PRIVSEP:L} != "yes" +_TEST_IS_INTERACTIVE = No +.else +_TEST_IS_INTERACTIVE = ${TEST_IS_INTERACTIVE} +.endif -.if ${TEST_IS_INTERACTIVE:L} == "x11" +.if ${_TEST_IS_INTERACTIVE:L} == "x11" TEST_ENV += DISPLAY=${DISPLAY} XAUTHORITY=${XAUTHORITY} XAUTHORITY ?= ${HOME}/.Xauthority .endif @@ -1422,9 +1427,9 @@ MISSING_FILES += ${_F} ################################################################ TRY_BROKEN ?= No _IGNORE_TEST ?= -.if ${TEST_IS_INTERACTIVE:L} != "no" && defined(BATCH) +.if ${_TEST_IS_INTERACTIVE:L} != "no" && defined(BATCH) _IGNORE_TEST += "has interactive tests" -.elif ${TEST_IS_INTERACTIVE:L} == "no" && defined(INTERACTIVE) +.elif ${_TEST_IS_INTERACTIVE:L} == "no" && defined(INTERACTIVE) _IGNORE_TEST += "does not have interactive tests" .endif @@ -2826,7 +2831,7 @@ ${_TEST_COOKIE}: ${_BUILD_COOKIE} .if ${NO_TEST:L} == "no" @${ECHO_MSG} "===> Regression tests for ${FULLPKGNAME}${_MASTER}" # When interactive tests need X11 -. if ${TEST_IS_INTERACTIVE:L} == "x11" +. if ${_TEST_IS_INTERACTIVE:L} == "x11" . if !defined(DISPLAY) || !exists(${XAUTHORITY}) @echo 1>&2 "The regression tests require a running instance of X." @echo 1>&2 "You will also need to set the environment variable DISPLAY" @@ -3151,6 +3156,9 @@ _internal-clean: . endfor . endif .endif +.if ${_clean:Mtest} + rm -f ${_TEST_COOKIE} +.endif print-build-depends: .if !empty(_BUILD_DEP) @@ -3473,6 +3481,10 @@ rebuild: @${_PBUILD} rm -f ${_BUILD_COOKIE} @${_MAKE} build +retest: + @${_PBUILD} rm -f ${_TEST_COOKIE} + @${_MAKE} test + regen: @${_PBUILD} rm -f ${_GEN_COOKIE} @${_MAKE} gen @@ -3549,7 +3561,7 @@ _all_phony = ${_recursive_depends_target post-distpatch post-extract post-install \ post-patch post-test pre-build pre-configure pre-extract pre-fake \ pre-install pre-patch pre-test prepare \ - print-build-depends print-run-depends rebuild regen reprepare \ + print-build-depends print-run-depends rebuild regen reprepare retest \ test-depends test-depends-list run-depends-list \ show-required-by subpackage uninstall _print-metadata \ run-depends-args lib-depends-args all-lib-depends-args wantlib-args \