1d4d90f10SMarcel Moolenaar# This is a generated file, do NOT edit! 2d4d90f10SMarcel Moolenaar# See contrib/bmake/bsd.after-import.mk 3d4d90f10SMarcel Moolenaar# 4d4d90f10SMarcel Moolenaar# $FreeBSD$ 5d4d90f10SMarcel Moolenaar 6d4d90f10SMarcel MoolenaarSRCTOP?= ${.CURDIR:H:H:H} 7d4d90f10SMarcel Moolenaar 8*db29cad8SSimon J. Gerraty# $Id: Makefile.in,v 1.46 2014/11/06 01:47:57 sjg Exp $ 9d4d90f10SMarcel Moolenaar# 10*db29cad8SSimon J. Gerraty# $NetBSD: Makefile,v 1.51 2014/10/20 23:21:11 sjg Exp $ 11d4d90f10SMarcel Moolenaar# 12d4d90f10SMarcel Moolenaar# Unit tests for make(1) 13d4d90f10SMarcel Moolenaar# The main targets are: 14d4d90f10SMarcel Moolenaar# 15d4d90f10SMarcel Moolenaar# all: run all the tests 16*db29cad8SSimon J. Gerraty# test: run 'all', and compare to expected results 17d4d90f10SMarcel Moolenaar# accept: move generated output to expected results 18d4d90f10SMarcel Moolenaar# 19d4d90f10SMarcel Moolenaar# Adding a test case. 20d4d90f10SMarcel Moolenaar# Each feature should get its own set of tests in its own suitably 21*db29cad8SSimon J. Gerraty# named makefile (*.mk), with its own set of expected results (*.exp), 22*db29cad8SSimon J. Gerraty# and it should be added to the TESTNAMES list. 23d4d90f10SMarcel Moolenaar# 24d4d90f10SMarcel Moolenaar 25d4d90f10SMarcel Moolenaarsrcdir= ${SRCTOP}/contrib/bmake/unit-tests 26d4d90f10SMarcel Moolenaar 27d4d90f10SMarcel Moolenaar.MAIN: all 28d4d90f10SMarcel Moolenaar 29d4d90f10SMarcel MoolenaarUNIT_TESTS:= ${srcdir} 30*db29cad8SSimon J. Gerraty.PATH: ${UNIT_TESTS} 31d4d90f10SMarcel Moolenaar 32*db29cad8SSimon J. Gerraty# Each test is in a sub-makefile. 33*db29cad8SSimon J. Gerraty# Keep the list sorted. 34*db29cad8SSimon J. GerratyTESTNAMES= \ 35d4d90f10SMarcel Moolenaar comment \ 36d4d90f10SMarcel Moolenaar cond1 \ 37d4d90f10SMarcel Moolenaar error \ 38d4d90f10SMarcel Moolenaar export \ 39d4d90f10SMarcel Moolenaar export-all \ 401748de26SSimon J. Gerraty export-env \ 41d4d90f10SMarcel Moolenaar doterror \ 42d4d90f10SMarcel Moolenaar dotwait \ 43d4d90f10SMarcel Moolenaar forloop \ 44d4d90f10SMarcel Moolenaar forsubst \ 45d4d90f10SMarcel Moolenaar hash \ 46d4d90f10SMarcel Moolenaar misc \ 47d4d90f10SMarcel Moolenaar moderrs \ 48d4d90f10SMarcel Moolenaar modmatch \ 49d4d90f10SMarcel Moolenaar modmisc \ 50d4d90f10SMarcel Moolenaar modorder \ 51d4d90f10SMarcel Moolenaar modts \ 52d4d90f10SMarcel Moolenaar modword \ 5359a02420SSimon J. Gerraty order \ 54d4d90f10SMarcel Moolenaar posix \ 55d4d90f10SMarcel Moolenaar qequals \ 561bbe5942SSimon J. Gerraty sunshcmd \ 57d4d90f10SMarcel Moolenaar sysv \ 58d4d90f10SMarcel Moolenaar ternary \ 59d4d90f10SMarcel Moolenaar unexport \ 60d4d90f10SMarcel Moolenaar unexport-env \ 61*db29cad8SSimon J. Gerraty varcmd \ 62*db29cad8SSimon J. Gerraty varmisc \ 63*db29cad8SSimon J. Gerraty varshell 64d4d90f10SMarcel Moolenaar 65*db29cad8SSimon J. Gerraty# these tests were broken by referting POSIX chanegs 66*db29cad8SSimon J. GerratySTRICT_POSIX_TESTS = \ 67*db29cad8SSimon J. Gerraty escape \ 68*db29cad8SSimon J. Gerraty impsrc \ 69*db29cad8SSimon J. Gerraty phony-end \ 70*db29cad8SSimon J. Gerraty posix1 \ 71*db29cad8SSimon J. Gerraty suffixes 72d4d90f10SMarcel Moolenaar 73*db29cad8SSimon J. Gerraty# Override make flags for certain tests 74d4d90f10SMarcel Moolenaarflags.doterror= 7559a02420SSimon J. Gerratyflags.order=-j1 76d4d90f10SMarcel Moolenaar 77*db29cad8SSimon J. GerratyOUTFILES= ${TESTNAMES:S/$/.out/} 78*db29cad8SSimon J. Gerraty 79*db29cad8SSimon J. Gerratyall: ${OUTFILES} 80*db29cad8SSimon J. Gerraty 81*db29cad8SSimon J. GerratyCLEANFILES += *.rawout *.out *.status *.tmp *.core *.tmp 82*db29cad8SSimon J. GerratyCLEANFILES += obj*.[och] lib*.a # posix1.mk 83*db29cad8SSimon J. GerratyCLEANFILES += issue* .[ab]* # suffixes.mk 84*db29cad8SSimon J. GerratyCLEANRECURSIVE += dir dummy # posix1.mk 85d4d90f10SMarcel Moolenaar 86d4d90f10SMarcel Moolenaarclean: 87*db29cad8SSimon J. Gerraty rm -f ${CLEANFILES} 88*db29cad8SSimon J. Gerraty.if !empty(CLEANRECURSIVE) 89*db29cad8SSimon J. Gerraty rm -rf ${CLEANRECURSIVE} 90*db29cad8SSimon J. Gerraty.endif 91d4d90f10SMarcel Moolenaar 92d4d90f10SMarcel MoolenaarTEST_MAKE?= ${.MAKE} 93d4d90f10SMarcel MoolenaarTOOL_SED?= sed 94d4d90f10SMarcel MoolenaarTOOL_TR?= tr 95d4d90f10SMarcel MoolenaarTOOL_DIFF?= diff 96d4d90f10SMarcel MoolenaarDIFF_FLAGS?= -u 97d4d90f10SMarcel Moolenaar 984639b858SSimon J. Gerraty.if defined(.PARSEDIR) 99d4d90f10SMarcel Moolenaar# ensure consistent results from sort(1) 100d4d90f10SMarcel MoolenaarLC_ALL= C 101d4d90f10SMarcel MoolenaarLANG= C 102d4d90f10SMarcel Moolenaar.export LANG LC_ALL 1034639b858SSimon J. Gerraty.endif 104d4d90f10SMarcel Moolenaar 105*db29cad8SSimon J. Gerraty# some tests need extra post-processing 106*db29cad8SSimon J. GerratySED_CMDS.varshell = -e 's,^[a-z]*sh: ,,' \ 107*db29cad8SSimon J. Gerraty -e '/command/s,No such.*,not found,' 108*db29cad8SSimon J. Gerraty 109*db29cad8SSimon J. Gerraty# the tests are actually done with sub-makes. 110*db29cad8SSimon J. Gerraty.SUFFIXES: .mk .rawout .out 111*db29cad8SSimon J. Gerraty.mk.rawout: 112*db29cad8SSimon J. Gerraty @echo ${TEST_MAKE} ${flags.${.TARGET:R}:U-k} -f ${.IMPSRC} 113*db29cad8SSimon J. Gerraty -@cd ${.OBJDIR} && \ 114*db29cad8SSimon J. Gerraty { ${TEST_MAKE} ${flags.${.TARGET:R}:U-k} -f ${.IMPSRC} \ 115*db29cad8SSimon J. Gerraty 2>&1 ; echo $$? >${.TARGET:R}.status ; } > ${.TARGET}.tmp 116*db29cad8SSimon J. Gerraty @mv ${.TARGET}.tmp ${.TARGET} 117*db29cad8SSimon J. Gerraty 118d4d90f10SMarcel Moolenaar# We always pretend .MAKE was called 'make' 119d4d90f10SMarcel Moolenaar# and strip ${.CURDIR}/ from the output 120d4d90f10SMarcel Moolenaar# and replace anything after 'stopped in' with unit-tests 121d4d90f10SMarcel Moolenaar# so the results can be compared. 122*db29cad8SSimon J. Gerraty.rawout.out: 123*db29cad8SSimon J. Gerraty @echo postprocess ${.TARGET} 124*db29cad8SSimon J. Gerraty @${TOOL_SED} -e 's,^${TEST_MAKE:T:C/\./\\\./g}[][0-9]*:,make:,' \ 125*db29cad8SSimon J. Gerraty -e 's,${TEST_MAKE:C/\./\\\./g},make,' \ 126d4d90f10SMarcel Moolenaar -e '/stopped/s, /.*, unit-tests,' \ 127d4d90f10SMarcel Moolenaar -e 's,${.CURDIR:C/\./\\\./g}/,,g' \ 128*db29cad8SSimon J. Gerraty -e 's,${UNIT_TESTS:C/\./\\\./g}/,,g' ${SED_CMDS.${.TARGET:T:R}} \ 129*db29cad8SSimon J. Gerraty < ${.IMPSRC} > ${.TARGET}.tmp 130*db29cad8SSimon J. Gerraty @echo "exit status `cat ${.TARGET:R}.status`" >> ${.TARGET}.tmp 131*db29cad8SSimon J. Gerraty @mv ${.TARGET}.tmp ${.TARGET} 132*db29cad8SSimon J. Gerraty 133*db29cad8SSimon J. Gerraty# Compare all output files 134*db29cad8SSimon J. Gerratytest: ${OUTFILES} .PHONY 135*db29cad8SSimon J. Gerraty @failed= ; \ 136*db29cad8SSimon J. Gerraty for test in ${TESTNAMES}; do \ 137*db29cad8SSimon J. Gerraty ${TOOL_DIFF} -u ${UNIT_TESTS}/$${test}.exp $${test}.out \ 138*db29cad8SSimon J. Gerraty || failed="$${failed}$${failed:+ }$${test}" ; \ 139*db29cad8SSimon J. Gerraty done ; \ 140*db29cad8SSimon J. Gerraty if [ -n "$${failed}" ]; then \ 141*db29cad8SSimon J. Gerraty echo "Failed tests: $${failed}" ; false ; \ 142*db29cad8SSimon J. Gerraty else \ 143*db29cad8SSimon J. Gerraty echo "All tests passed" ; \ 144*db29cad8SSimon J. Gerraty fi 145d4d90f10SMarcel Moolenaar 146d4d90f10SMarcel Moolenaaraccept: 147*db29cad8SSimon J. Gerraty @for test in ${TESTNAMES}; do \ 148*db29cad8SSimon J. Gerraty cmp -s ${UNIT_TESTS}/$${test}.exp $${test}.out \ 149*db29cad8SSimon J. Gerraty || { echo "Replacing $${test}.exp" ; \ 150*db29cad8SSimon J. Gerraty cp $${test}.out ${UNIT_TESTS}/$${test}.exp ; } \ 151*db29cad8SSimon J. Gerraty done 152d4d90f10SMarcel Moolenaar 153*db29cad8SSimon J. Gerraty.if exists(${TEST_MAKE}) 154*db29cad8SSimon J. Gerraty${TESTNAMES:S/$/.rawout/}: ${TEST_MAKE} 155*db29cad8SSimon J. Gerraty.endif 156*db29cad8SSimon J. Gerraty 157*db29cad8SSimon J. Gerraty.sinclude <bsd.obj.mk> 158