xref: /freebsd/usr.bin/bmake/unit-tests/Makefile (revision 1bbe5942b51aa3fda538e42dd23181f865998614)
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*1bbe5942SSimon J. Gerraty# $Id: Makefile.in,v 1.44 2013/08/28 22:09:29 sjg Exp $
9d4d90f10SMarcel Moolenaar#
10*1bbe5942SSimon J. Gerraty# $NetBSD: Makefile,v 1.38 2013/08/28 21:56:50 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
16d4d90f10SMarcel Moolenaar# test:	run 'all', capture output 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
21d4d90f10SMarcel Moolenaar# named makefile which should be added to SUBFILES to hook it in.
22d4d90f10SMarcel Moolenaar#
23d4d90f10SMarcel Moolenaar
24d4d90f10SMarcel Moolenaarsrcdir= ${SRCTOP}/contrib/bmake/unit-tests
25d4d90f10SMarcel Moolenaar
26d4d90f10SMarcel Moolenaar.MAIN: all
27d4d90f10SMarcel Moolenaar
28d4d90f10SMarcel MoolenaarUNIT_TESTS:= ${srcdir}
29d4d90f10SMarcel Moolenaar
30d4d90f10SMarcel Moolenaar# Simple sub-makefiles - we run them as a black box
31d4d90f10SMarcel Moolenaar# keep the list sorted.
32d4d90f10SMarcel MoolenaarSUBFILES= \
33d4d90f10SMarcel Moolenaar	comment \
34d4d90f10SMarcel Moolenaar	cond1 \
35d4d90f10SMarcel Moolenaar	error \
36d4d90f10SMarcel Moolenaar	export \
37d4d90f10SMarcel Moolenaar	export-all \
381748de26SSimon J. Gerraty	export-env \
39d4d90f10SMarcel Moolenaar	doterror \
40d4d90f10SMarcel Moolenaar	dotwait \
41d4d90f10SMarcel Moolenaar	forloop \
42d4d90f10SMarcel Moolenaar	forsubst \
43d4d90f10SMarcel Moolenaar	hash \
44d4d90f10SMarcel Moolenaar	misc \
45d4d90f10SMarcel Moolenaar	moderrs \
46d4d90f10SMarcel Moolenaar	modmatch \
47d4d90f10SMarcel Moolenaar	modmisc \
48d4d90f10SMarcel Moolenaar	modorder \
49d4d90f10SMarcel Moolenaar	modts \
50d4d90f10SMarcel Moolenaar	modword \
5159a02420SSimon J. Gerraty	order \
52d4d90f10SMarcel Moolenaar	phony-end \
53d4d90f10SMarcel Moolenaar	posix \
54d4d90f10SMarcel Moolenaar	qequals \
55*1bbe5942SSimon J. Gerraty	sunshcmd \
56d4d90f10SMarcel Moolenaar	sysv \
57d4d90f10SMarcel Moolenaar	ternary \
58d4d90f10SMarcel Moolenaar	unexport \
59d4d90f10SMarcel Moolenaar	unexport-env \
60d4d90f10SMarcel Moolenaar	varcmd
61d4d90f10SMarcel Moolenaar
62d4d90f10SMarcel Moolenaarall: ${SUBFILES}
63d4d90f10SMarcel Moolenaar
64d4d90f10SMarcel Moolenaarflags.doterror=
6559a02420SSimon J. Gerratyflags.order=-j1
66d4d90f10SMarcel Moolenaar
67d4d90f10SMarcel Moolenaar# the tests are actually done with sub-makes.
68d4d90f10SMarcel Moolenaar.PHONY: ${SUBFILES}
69d4d90f10SMarcel Moolenaar.PRECIOUS: ${SUBFILES}
70d4d90f10SMarcel Moolenaar${SUBFILES}:
71d4d90f10SMarcel Moolenaar	-@${.MAKE} ${flags.$@:U-k} -f ${UNIT_TESTS}/$@
72d4d90f10SMarcel Moolenaar
73d4d90f10SMarcel Moolenaarclean:
74d4d90f10SMarcel Moolenaar	rm -f *.out *.fail *.core
75d4d90f10SMarcel Moolenaar
76d4d90f10SMarcel Moolenaar.sinclude <bsd.obj.mk>
77d4d90f10SMarcel Moolenaar
78d4d90f10SMarcel MoolenaarTEST_MAKE?= ${.MAKE}
79d4d90f10SMarcel MoolenaarTOOL_SED?= sed
80d4d90f10SMarcel MoolenaarTOOL_TR?= tr
81d4d90f10SMarcel MoolenaarTOOL_DIFF?= diff
82d4d90f10SMarcel MoolenaarDIFF_FLAGS?= -u
83d4d90f10SMarcel Moolenaar
844639b858SSimon J. Gerraty.if defined(.PARSEDIR)
85d4d90f10SMarcel Moolenaar# ensure consistent results from sort(1)
86d4d90f10SMarcel MoolenaarLC_ALL= C
87d4d90f10SMarcel MoolenaarLANG= C
88d4d90f10SMarcel Moolenaar.export LANG LC_ALL
894639b858SSimon J. Gerraty.endif
90d4d90f10SMarcel Moolenaar
91d4d90f10SMarcel Moolenaar# The driver.
92d4d90f10SMarcel Moolenaar# We always pretend .MAKE was called 'make'
93d4d90f10SMarcel Moolenaar# and strip ${.CURDIR}/ from the output
94d4d90f10SMarcel Moolenaar# and replace anything after 'stopped in' with unit-tests
95d4d90f10SMarcel Moolenaar# so the results can be compared.
96d4d90f10SMarcel Moolenaartest:
97d4d90f10SMarcel Moolenaar	@echo "${TEST_MAKE} -f ${MAKEFILE} > ${.TARGET}.out 2>&1"
98d4d90f10SMarcel Moolenaar	@cd ${.OBJDIR} && ${TEST_MAKE} -f ${MAKEFILE} 2>&1 | \
99d4d90f10SMarcel Moolenaar	${TOOL_TR} -d '\015' | \
10051ee2c1cSSimon J. Gerraty	${TOOL_SED} -e 's,^${TEST_MAKE:T:C/\./\\\./g}[^:]*:,make:,' \
101d4d90f10SMarcel Moolenaar	-e '/stopped/s, /.*, unit-tests,' \
102d4d90f10SMarcel Moolenaar	-e 's,${.CURDIR:C/\./\\\./g}/,,g' \
103d4d90f10SMarcel Moolenaar	-e 's,${UNIT_TESTS:C/\./\\\./g}/,,g' > ${.TARGET}.out || { \
104d4d90f10SMarcel Moolenaar	tail ${.TARGET}.out; mv ${.TARGET}.out ${.TARGET}.fail; exit 1; }
105d4d90f10SMarcel Moolenaar	${TOOL_DIFF} ${DIFF_FLAGS} ${UNIT_TESTS}/${.TARGET}.exp ${.TARGET}.out
106d4d90f10SMarcel Moolenaar
107d4d90f10SMarcel Moolenaaraccept:
108d4d90f10SMarcel Moolenaar	mv test.out ${srcdir}/test.exp
109d4d90f10SMarcel Moolenaar
110