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