From 85c07dc59c590600fa0afc42ae9bb0ca501271d0 Mon Sep 17 00:00:00 2001 From: jmmv Date: Tue, 14 Jan 2014 18:35:56 +0000 Subject: [PATCH] Support perl-based TAP-compliant test programs. Introduce a TAP_TESTS_PERL primitive to list test programs written in perl. Only do this in tap.test.mk because I only expect perl-based test programs with this interface. This is very similar to TAP_TESTS_SH but the difference is that we record in the Kyuafile that the test program requires a perl interpreter. This in turn makes Kyua mark the test as skipped if the perl package is not yet installed, instead of mysteriously failing to run the program. MFC after: 5 days --- share/mk/tap.test.mk | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/share/mk/tap.test.mk b/share/mk/tap.test.mk index 394f6857e4e2..9c1ef542ecd9 100644 --- a/share/mk/tap.test.mk +++ b/share/mk/tap.test.mk @@ -18,8 +18,12 @@ # manpage. TAP_TESTS_C?= TAP_TESTS_CXX?= +TAP_TESTS_PERL?= TAP_TESTS_SH?= +# Perl interpreter to use for test programs written in this language. +TAP_PERL_INTERPRETER?= /usr/local/bin/perl + .if !empty(TAP_TESTS_C) PROGS+= ${TAP_TESTS_C} _TESTS+= ${TAP_TESTS_C} @@ -42,6 +46,29 @@ TEST_INTERFACE.${_T}= tap .endfor .endif +.if !empty(TAP_TESTS_PERL) +SCRIPTS+= ${TAP_TESTS_PERL} +_TESTS+= ${TAP_TESTS_PERL} +.for _T in ${TAP_TESTS_PERL} +SCRIPTSDIR_${_T}= ${TESTSDIR} +TEST_INTERFACE.${_T}= tap +TEST_METADATA.${_T}+= required_programs="${TAP_PERL_INTERPRETER}" +CLEANFILES+= ${_T} ${_T}.tmp +# TODO(jmmv): It seems to me that this SED and SRC functionality should +# exist in bsd.prog.mk along the support for SCRIPTS. Move it there if +# this proves to be useful within the tests. +TAP_TESTS_PERL_SED_${_T}?= # empty +TAP_TESTS_PERL_SRC_${_T}?= ${_T}.pl +${_T}: ${TAP_TESTS_PERL_SRC_${_T}} + { \ + echo '#! ${TAP_PERL_INTERPRETER}'; \ + cat ${.ALLSRC} | sed ${TAP_TESTS_PERL_SED_${_T}}; \ + } >${.TARGET}.tmp + chmod +x ${.TARGET}.tmp + mv ${.TARGET}.tmp ${.TARGET} +.endfor +.endif + .if !empty(TAP_TESTS_SH) SCRIPTS+= ${TAP_TESTS_SH} _TESTS+= ${TAP_TESTS_SH}