xref: /freebsd/usr.bin/bmake/unit-tests/Makefile (revision 2c3632d14fe37fa35c262ee9fb66835be0a52621)
1*2c3632d1SSimon J. Gerraty# This is a generated file, do NOT edit!
2*2c3632d1SSimon J. Gerraty# See contrib/bmake/bsd.after-import.mk
3d4d90f10SMarcel Moolenaar#
4*2c3632d1SSimon J. Gerraty# $FreeBSD$
5*2c3632d1SSimon J. Gerraty# $Id: Makefile,v 1.92 2020/09/02 18:39:29 sjg Exp $
6*2c3632d1SSimon J. Gerraty#
7*2c3632d1SSimon J. Gerraty# $NetBSD: Makefile,v 1.130 2020/09/02 05:33:57 rillig Exp $
8d4d90f10SMarcel Moolenaar#
9d4d90f10SMarcel Moolenaar# Unit tests for make(1)
103841c287SSimon J. Gerraty#
11d4d90f10SMarcel Moolenaar# The main targets are:
12d4d90f10SMarcel Moolenaar#
133841c287SSimon J. Gerraty# all:
143841c287SSimon J. Gerraty#	run all the tests
153841c287SSimon J. Gerraty# test:
163841c287SSimon J. Gerraty#	run 'all', and compare to expected results
173841c287SSimon J. Gerraty# accept:
183841c287SSimon J. Gerraty#	move generated output to expected results
19d4d90f10SMarcel Moolenaar#
203841c287SSimon J. Gerraty# Settable variables
213841c287SSimon J. Gerraty#
223841c287SSimon J. Gerraty# TEST_MAKE
233841c287SSimon J. Gerraty#	The make program to be tested.
243841c287SSimon J. Gerraty#
253841c287SSimon J. Gerraty#
263841c287SSimon J. Gerraty# Adding a test case
273841c287SSimon J. Gerraty#
28d4d90f10SMarcel Moolenaar# Each feature should get its own set of tests in its own suitably
29db29cad8SSimon J. Gerraty# named makefile (*.mk), with its own set of expected results (*.exp),
303841c287SSimon J. Gerraty# and it should be added to the TESTS list.
313841c287SSimon J. Gerraty#
32*2c3632d1SSimon J. Gerraty# A few *.mk files are helper files for other tests (such as include-sub.mk)
33*2c3632d1SSimon J. Gerraty# and are thus not added to TESTS.  Such files must be ignored in
34*2c3632d1SSimon J. Gerraty# src/tests/usr.bin/make/t_make.sh.
35d4d90f10SMarcel Moolenaar#
36d4d90f10SMarcel Moolenaar
373841c287SSimon J. Gerraty# Each test is in a sub-makefile.
383841c287SSimon J. Gerraty# Keep the list sorted.
39*2c3632d1SSimon J. Gerraty# Any test that is commented out must be ignored in
40*2c3632d1SSimon J. Gerraty# src/tests/usr.bin/make/t_make.sh as well.
41*2c3632d1SSimon J. GerratyTESTS+=		# archive	# broken on FreeBSD, enabled in t_make.sh
42*2c3632d1SSimon J. GerratyTESTS+=		archive-suffix
43*2c3632d1SSimon J. GerratyTESTS+=		cmd-interrupt
44*2c3632d1SSimon J. GerratyTESTS+=		cmdline
453841c287SSimon J. GerratyTESTS+=		comment
46*2c3632d1SSimon J. GerratyTESTS+=		cond-cmp-numeric
47*2c3632d1SSimon J. GerratyTESTS+=		cond-cmp-numeric-eq
48*2c3632d1SSimon J. GerratyTESTS+=		cond-cmp-numeric-ge
49*2c3632d1SSimon J. GerratyTESTS+=		cond-cmp-numeric-gt
50*2c3632d1SSimon J. GerratyTESTS+=		cond-cmp-numeric-le
51*2c3632d1SSimon J. GerratyTESTS+=		cond-cmp-numeric-lt
52*2c3632d1SSimon J. GerratyTESTS+=		cond-cmp-numeric-ne
53*2c3632d1SSimon J. GerratyTESTS+=		cond-cmp-string
54*2c3632d1SSimon J. GerratyTESTS+=		cond-func
55*2c3632d1SSimon J. GerratyTESTS+=		cond-func-commands
56*2c3632d1SSimon J. GerratyTESTS+=		cond-func-defined
57*2c3632d1SSimon J. GerratyTESTS+=		cond-func-empty
58*2c3632d1SSimon J. GerratyTESTS+=		cond-func-exists
59*2c3632d1SSimon J. GerratyTESTS+=		cond-func-make
60*2c3632d1SSimon J. GerratyTESTS+=		cond-func-target
613841c287SSimon J. GerratyTESTS+=		cond-late
62*2c3632d1SSimon J. GerratyTESTS+=		cond-op
63*2c3632d1SSimon J. GerratyTESTS+=		cond-op-and
64*2c3632d1SSimon J. GerratyTESTS+=		cond-op-not
65*2c3632d1SSimon J. GerratyTESTS+=		cond-op-or
66*2c3632d1SSimon J. GerratyTESTS+=		cond-op-parentheses
673841c287SSimon J. GerratyTESTS+=		cond-short
68*2c3632d1SSimon J. GerratyTESTS+=		cond-token-number
69*2c3632d1SSimon J. GerratyTESTS+=		cond-token-plain
70*2c3632d1SSimon J. GerratyTESTS+=		cond-token-string
71*2c3632d1SSimon J. GerratyTESTS+=		cond-token-var
723841c287SSimon J. GerratyTESTS+=		cond1
733841c287SSimon J. GerratyTESTS+=		cond2
74*2c3632d1SSimon J. GerratyTESTS+=		counter
75*2c3632d1SSimon J. GerratyTESTS+=		dep
76*2c3632d1SSimon J. GerratyTESTS+=		dep-colon
77*2c3632d1SSimon J. GerratyTESTS+=		dep-double-colon
78*2c3632d1SSimon J. GerratyTESTS+=		dep-exclam
79*2c3632d1SSimon J. GerratyTESTS+=		dep-none
80*2c3632d1SSimon J. GerratyTESTS+=		dep-var
81*2c3632d1SSimon J. GerratyTESTS+=		dep-wildcards
82*2c3632d1SSimon J. GerratyTESTS+=		depsrc
83*2c3632d1SSimon J. GerratyTESTS+=		depsrc-exec
84*2c3632d1SSimon J. GerratyTESTS+=		depsrc-ignore
85*2c3632d1SSimon J. GerratyTESTS+=		depsrc-made
86*2c3632d1SSimon J. GerratyTESTS+=		depsrc-make
87*2c3632d1SSimon J. GerratyTESTS+=		depsrc-meta
88*2c3632d1SSimon J. GerratyTESTS+=		depsrc-nometa
89*2c3632d1SSimon J. GerratyTESTS+=		depsrc-nometa_cmp
90*2c3632d1SSimon J. GerratyTESTS+=		depsrc-nopath
91*2c3632d1SSimon J. GerratyTESTS+=		depsrc-notmain
92*2c3632d1SSimon J. GerratyTESTS+=		depsrc-optional
93*2c3632d1SSimon J. GerratyTESTS+=		depsrc-phony
94*2c3632d1SSimon J. GerratyTESTS+=		depsrc-precious
95*2c3632d1SSimon J. GerratyTESTS+=		depsrc-recursive
96*2c3632d1SSimon J. GerratyTESTS+=		depsrc-silent
97*2c3632d1SSimon J. GerratyTESTS+=		depsrc-use
98*2c3632d1SSimon J. GerratyTESTS+=		depsrc-usebefore
99*2c3632d1SSimon J. GerratyTESTS+=		depsrc-usebefore-double-colon
100*2c3632d1SSimon J. GerratyTESTS+=		depsrc-wait
101*2c3632d1SSimon J. GerratyTESTS+=		deptgt
102*2c3632d1SSimon J. GerratyTESTS+=		deptgt-begin
103*2c3632d1SSimon J. GerratyTESTS+=		deptgt-default
104*2c3632d1SSimon J. GerratyTESTS+=		deptgt-delete_on_error
105*2c3632d1SSimon J. GerratyTESTS+=		deptgt-end
106*2c3632d1SSimon J. GerratyTESTS+=		deptgt-error
107*2c3632d1SSimon J. GerratyTESTS+=		deptgt-ignore
108*2c3632d1SSimon J. GerratyTESTS+=		deptgt-interrupt
109*2c3632d1SSimon J. GerratyTESTS+=		deptgt-main
110*2c3632d1SSimon J. GerratyTESTS+=		deptgt-makeflags
111*2c3632d1SSimon J. GerratyTESTS+=		deptgt-no_parallel
112*2c3632d1SSimon J. GerratyTESTS+=		deptgt-nopath
113*2c3632d1SSimon J. GerratyTESTS+=		deptgt-notparallel
114*2c3632d1SSimon J. GerratyTESTS+=		deptgt-objdir
115*2c3632d1SSimon J. GerratyTESTS+=		deptgt-order
116*2c3632d1SSimon J. GerratyTESTS+=		deptgt-path
117*2c3632d1SSimon J. GerratyTESTS+=		deptgt-path-suffix
118*2c3632d1SSimon J. GerratyTESTS+=		deptgt-phony
119*2c3632d1SSimon J. GerratyTESTS+=		deptgt-precious
120*2c3632d1SSimon J. GerratyTESTS+=		deptgt-shell
121*2c3632d1SSimon J. GerratyTESTS+=		deptgt-silent
122*2c3632d1SSimon J. GerratyTESTS+=		deptgt-stale
123*2c3632d1SSimon J. GerratyTESTS+=		deptgt-suffixes
124*2c3632d1SSimon J. GerratyTESTS+=		dir
125*2c3632d1SSimon J. GerratyTESTS+=		dir-expand-path
126*2c3632d1SSimon J. GerratyTESTS+=		directive
127*2c3632d1SSimon J. GerratyTESTS+=		directive-elif
128*2c3632d1SSimon J. GerratyTESTS+=		directive-elifdef
129*2c3632d1SSimon J. GerratyTESTS+=		directive-elifmake
130*2c3632d1SSimon J. GerratyTESTS+=		directive-elifndef
131*2c3632d1SSimon J. GerratyTESTS+=		directive-elifnmake
132*2c3632d1SSimon J. GerratyTESTS+=		directive-else
133*2c3632d1SSimon J. GerratyTESTS+=		directive-endif
134*2c3632d1SSimon J. GerratyTESTS+=		directive-error
135*2c3632d1SSimon J. GerratyTESTS+=		directive-export
136*2c3632d1SSimon J. GerratyTESTS+=		directive-export-env
137*2c3632d1SSimon J. GerratyTESTS+=		directive-export-literal
138*2c3632d1SSimon J. GerratyTESTS+=		directive-for
139*2c3632d1SSimon J. GerratyTESTS+=		directive-for-generating-endif
140*2c3632d1SSimon J. GerratyTESTS+=		directive-if
141*2c3632d1SSimon J. GerratyTESTS+=		directive-ifdef
142*2c3632d1SSimon J. GerratyTESTS+=		directive-ifmake
143*2c3632d1SSimon J. GerratyTESTS+=		directive-ifndef
144*2c3632d1SSimon J. GerratyTESTS+=		directive-ifnmake
145*2c3632d1SSimon J. GerratyTESTS+=		directive-info
146*2c3632d1SSimon J. GerratyTESTS+=		directive-undef
147*2c3632d1SSimon J. GerratyTESTS+=		directive-unexport
148*2c3632d1SSimon J. GerratyTESTS+=		directive-unexport-env
149*2c3632d1SSimon J. GerratyTESTS+=		directive-warning
150*2c3632d1SSimon J. GerratyTESTS+=		directives
1513841c287SSimon J. GerratyTESTS+=		dollar
1523841c287SSimon J. GerratyTESTS+=		doterror
1533841c287SSimon J. GerratyTESTS+=		dotwait
154*2c3632d1SSimon J. GerratyTESTS+=		envfirst
1553841c287SSimon J. GerratyTESTS+=		error
1563841c287SSimon J. GerratyTESTS+=		# escape	# broken by reverting POSIX changes
1573841c287SSimon J. GerratyTESTS+=		export
1583841c287SSimon J. GerratyTESTS+=		export-all
1593841c287SSimon J. GerratyTESTS+=		export-env
160*2c3632d1SSimon J. GerratyTESTS+=		export-variants
1613841c287SSimon J. GerratyTESTS+=		forloop
1623841c287SSimon J. GerratyTESTS+=		forsubst
1633841c287SSimon J. GerratyTESTS+=		hash
164*2c3632d1SSimon J. GerratyTESTS+=		impsrc
1653841c287SSimon J. GerratyTESTS+=		include-main
166*2c3632d1SSimon J. GerratyTESTS+=		lint
167*2c3632d1SSimon J. GerratyTESTS+=		make-exported
1683841c287SSimon J. GerratyTESTS+=		misc
1693841c287SSimon J. GerratyTESTS+=		moderrs
1703841c287SSimon J. GerratyTESTS+=		modmatch
1713841c287SSimon J. GerratyTESTS+=		modmisc
1723841c287SSimon J. GerratyTESTS+=		modts
1733841c287SSimon J. GerratyTESTS+=		modword
174*2c3632d1SSimon J. GerratyTESTS+=		opt
175*2c3632d1SSimon J. GerratyTESTS+=		opt-backwards
176*2c3632d1SSimon J. GerratyTESTS+=		opt-chdir
177*2c3632d1SSimon J. GerratyTESTS+=		opt-debug
178*2c3632d1SSimon J. GerratyTESTS+=		opt-debug-g1
179*2c3632d1SSimon J. GerratyTESTS+=		opt-define
180*2c3632d1SSimon J. GerratyTESTS+=		opt-env
181*2c3632d1SSimon J. GerratyTESTS+=		opt-file
182*2c3632d1SSimon J. GerratyTESTS+=		opt-ignore
183*2c3632d1SSimon J. GerratyTESTS+=		opt-include-dir
184*2c3632d1SSimon J. GerratyTESTS+=		opt-jobs
185*2c3632d1SSimon J. GerratyTESTS+=		opt-jobs-internal
186*2c3632d1SSimon J. GerratyTESTS+=		opt-keep-going
187*2c3632d1SSimon J. GerratyTESTS+=		opt-m-include-dir
188*2c3632d1SSimon J. GerratyTESTS+=		opt-no-action
189*2c3632d1SSimon J. GerratyTESTS+=		opt-no-action-at-all
190*2c3632d1SSimon J. GerratyTESTS+=		opt-query
191*2c3632d1SSimon J. GerratyTESTS+=		opt-raw
192*2c3632d1SSimon J. GerratyTESTS+=		opt-silent
193*2c3632d1SSimon J. GerratyTESTS+=		opt-touch
194*2c3632d1SSimon J. GerratyTESTS+=		opt-tracefile
195*2c3632d1SSimon J. GerratyTESTS+=		opt-var-expanded
196*2c3632d1SSimon J. GerratyTESTS+=		opt-var-literal
197*2c3632d1SSimon J. GerratyTESTS+=		opt-warnings-as-errors
198*2c3632d1SSimon J. GerratyTESTS+=		opt-where-am-i
199*2c3632d1SSimon J. GerratyTESTS+=		opt-x-reduce-exported
2003841c287SSimon J. GerratyTESTS+=		order
201*2c3632d1SSimon J. GerratyTESTS+=		phony-end
2023841c287SSimon J. GerratyTESTS+=		posix
2033841c287SSimon J. GerratyTESTS+=		# posix1	# broken by reverting POSIX changes
2043841c287SSimon J. GerratyTESTS+=		qequals
205*2c3632d1SSimon J. GerratyTESTS+=		recursive
206*2c3632d1SSimon J. GerratyTESTS+=		sh
207*2c3632d1SSimon J. GerratyTESTS+=		sh-dots
208*2c3632d1SSimon J. GerratyTESTS+=		sh-jobs
209*2c3632d1SSimon J. GerratyTESTS+=		sh-jobs-error
210*2c3632d1SSimon J. GerratyTESTS+=		sh-leading-at
211*2c3632d1SSimon J. GerratyTESTS+=		sh-leading-hyphen
212*2c3632d1SSimon J. GerratyTESTS+=		sh-leading-plus
213*2c3632d1SSimon J. GerratyTESTS+=		sh-meta-chars
214*2c3632d1SSimon J. GerratyTESTS+=		sh-multi-line
215*2c3632d1SSimon J. GerratyTESTS+=		sh-single-line
216*2c3632d1SSimon J. GerratyTESTS+=		# suffixes	# runs into an endless loop (try -dA)
2173841c287SSimon J. GerratyTESTS+=		sunshcmd
2183841c287SSimon J. GerratyTESTS+=		sysv
2193841c287SSimon J. GerratyTESTS+=		ternary
2203841c287SSimon J. GerratyTESTS+=		unexport
2213841c287SSimon J. GerratyTESTS+=		unexport-env
222*2c3632d1SSimon J. GerratyTESTS+=		use-inference
223*2c3632d1SSimon J. GerratyTESTS+=		var-class
224*2c3632d1SSimon J. GerratyTESTS+=		var-class-cmdline
225*2c3632d1SSimon J. GerratyTESTS+=		var-class-env
226*2c3632d1SSimon J. GerratyTESTS+=		var-class-global
227*2c3632d1SSimon J. GerratyTESTS+=		var-class-local
228*2c3632d1SSimon J. GerratyTESTS+=		var-class-local-legacy
229*2c3632d1SSimon J. GerratyTESTS+=		var-op
230*2c3632d1SSimon J. GerratyTESTS+=		var-op-append
231*2c3632d1SSimon J. GerratyTESTS+=		var-op-assign
232*2c3632d1SSimon J. GerratyTESTS+=		var-op-default
233*2c3632d1SSimon J. GerratyTESTS+=		var-op-expand
234*2c3632d1SSimon J. GerratyTESTS+=		var-op-shell
2353841c287SSimon J. GerratyTESTS+=		varcmd
236*2c3632d1SSimon J. GerratyTESTS+=		vardebug
237*2c3632d1SSimon J. GerratyTESTS+=		varfind
2383841c287SSimon J. GerratyTESTS+=		varmisc
239*2c3632d1SSimon J. GerratyTESTS+=		varmod
240*2c3632d1SSimon J. GerratyTESTS+=		varmod-assign
241*2c3632d1SSimon J. GerratyTESTS+=		varmod-defined
2423841c287SSimon J. GerratyTESTS+=		varmod-edge
243*2c3632d1SSimon J. GerratyTESTS+=		varmod-exclam-shell
244*2c3632d1SSimon J. GerratyTESTS+=		varmod-extension
245*2c3632d1SSimon J. GerratyTESTS+=		varmod-gmtime
246*2c3632d1SSimon J. GerratyTESTS+=		varmod-hash
247*2c3632d1SSimon J. GerratyTESTS+=		varmod-head
248*2c3632d1SSimon J. GerratyTESTS+=		varmod-ifelse
249*2c3632d1SSimon J. GerratyTESTS+=		varmod-l-name-to-value
250*2c3632d1SSimon J. GerratyTESTS+=		varmod-localtime
251*2c3632d1SSimon J. GerratyTESTS+=		varmod-loop
252*2c3632d1SSimon J. GerratyTESTS+=		varmod-match
253*2c3632d1SSimon J. GerratyTESTS+=		varmod-match-escape
254*2c3632d1SSimon J. GerratyTESTS+=		varmod-no-match
255*2c3632d1SSimon J. GerratyTESTS+=		varmod-order
256*2c3632d1SSimon J. GerratyTESTS+=		varmod-order-reverse
257*2c3632d1SSimon J. GerratyTESTS+=		varmod-order-shuffle
258*2c3632d1SSimon J. GerratyTESTS+=		varmod-path
259*2c3632d1SSimon J. GerratyTESTS+=		varmod-quote
260*2c3632d1SSimon J. GerratyTESTS+=		varmod-quote-dollar
261*2c3632d1SSimon J. GerratyTESTS+=		varmod-range
262*2c3632d1SSimon J. GerratyTESTS+=		varmod-remember
263*2c3632d1SSimon J. GerratyTESTS+=		varmod-root
264*2c3632d1SSimon J. GerratyTESTS+=		varmod-select-words
265*2c3632d1SSimon J. GerratyTESTS+=		varmod-shell
266*2c3632d1SSimon J. GerratyTESTS+=		varmod-subst
267*2c3632d1SSimon J. GerratyTESTS+=		varmod-subst-regex
268*2c3632d1SSimon J. GerratyTESTS+=		varmod-sysv
269*2c3632d1SSimon J. GerratyTESTS+=		varmod-tail
270*2c3632d1SSimon J. GerratyTESTS+=		varmod-to-abs
271*2c3632d1SSimon J. GerratyTESTS+=		varmod-to-lower
272*2c3632d1SSimon J. GerratyTESTS+=		varmod-to-many-words
273*2c3632d1SSimon J. GerratyTESTS+=		varmod-to-one-word
274*2c3632d1SSimon J. GerratyTESTS+=		varmod-to-separator
275*2c3632d1SSimon J. GerratyTESTS+=		varmod-to-upper
276*2c3632d1SSimon J. GerratyTESTS+=		varmod-undefined
277*2c3632d1SSimon J. GerratyTESTS+=		varmod-unique
278*2c3632d1SSimon J. GerratyTESTS+=		varname
279*2c3632d1SSimon J. GerratyTESTS+=		varname-dollar
280*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-alltargets
281*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-curdir
282*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-includes
283*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-includedfromdir
284*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-includedfromfile
285*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-libs
286*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-dependfile
287*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-expand_variables
288*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-exported
289*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-jobs
290*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-jobs-prefix
291*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-level
292*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-makefile_preference
293*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-makefiles
294*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-meta-bailiwick
295*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-meta-created
296*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-meta-files
297*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-meta-ignore_filter
298*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-meta-ignore_paths
299*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-meta-ignore_patterns
300*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-meta-prefix
301*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-mode
302*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-path_filemon
303*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-pid
304*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-ppid
305*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-make-save_dollars
306*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-makeoverrides
307*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-newline
308*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-objdir
309*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-parsedir
310*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-parsefile
311*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-path
312*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-shell
313*2c3632d1SSimon J. GerratyTESTS+=		varname-dot-targets
314*2c3632d1SSimon J. GerratyTESTS+=		varname-empty
315*2c3632d1SSimon J. GerratyTESTS+=		varname-make
316*2c3632d1SSimon J. GerratyTESTS+=		varname-make_print_var_on_error
317*2c3632d1SSimon J. GerratyTESTS+=		varname-makeflags
318*2c3632d1SSimon J. GerratyTESTS+=		varname-pwd
319*2c3632d1SSimon J. GerratyTESTS+=		varname-vpath
320*2c3632d1SSimon J. GerratyTESTS+=		varparse-dynamic
3213841c287SSimon J. GerratyTESTS+=		varquote
3223841c287SSimon J. GerratyTESTS+=		varshell
3233841c287SSimon J. Gerraty
324*2c3632d1SSimon J. Gerraty# Additional environment variables for some of the tests.
325*2c3632d1SSimon J. Gerraty# The base environment is -i PATH="$PATH".
326*2c3632d1SSimon J. GerratyENV.envfirst=		FROM_ENV=value-from-env
327*2c3632d1SSimon J. GerratyENV.varmisc=		FROM_ENV=env
328*2c3632d1SSimon J. GerratyENV.varmisc+=		FROM_ENV_BEFORE=env
329*2c3632d1SSimon J. GerratyENV.varmisc+=		FROM_ENV_AFTER=env
330*2c3632d1SSimon J. Gerraty
331*2c3632d1SSimon J. Gerraty# Override make flags for some of the tests; default is -k.
332*2c3632d1SSimon J. Gerraty# If possible, write ".MAKEFLAGS: -dv" in the test .mk file instead of
333*2c3632d1SSimon J. Gerraty# settings FLAGS.test=-dv here, since that is closer to the test code.
334*2c3632d1SSimon J. GerratyFLAGS.archive=		-dA
335*2c3632d1SSimon J. GerratyFLAGS.counter=		-dv
336*2c3632d1SSimon J. GerratyFLAGS.directive-ifmake=	first second
3373841c287SSimon J. GerratyFLAGS.doterror=		# none
338*2c3632d1SSimon J. GerratyFLAGS.envfirst=		-e
339*2c3632d1SSimon J. GerratyFLAGS.export=		# none
340*2c3632d1SSimon J. GerratyFLAGS.lint=		-dL -k
341*2c3632d1SSimon J. GerratyFLAGS.opt-debug-g1=	-dg1
342*2c3632d1SSimon J. GerratyFLAGS.opt-ignore=	-i
343*2c3632d1SSimon J. GerratyFLAGS.opt-keep-going=	-k
344*2c3632d1SSimon J. GerratyFLAGS.opt-no-action=	-n
345*2c3632d1SSimon J. GerratyFLAGS.opt-query=	-q
346*2c3632d1SSimon J. GerratyFLAGS.opt-var-expanded=	-v VAR -v VALUE
347*2c3632d1SSimon J. GerratyFLAGS.opt-var-literal=	-V VAR -V VALUE
348*2c3632d1SSimon J. GerratyFLAGS.opt-warnings-as-errors= -W
3493841c287SSimon J. GerratyFLAGS.order=		-j1
350*2c3632d1SSimon J. GerratyFLAGS.recursive=	-dL
351*2c3632d1SSimon J. GerratyFLAGS.sh-leading-plus=	-n
352*2c3632d1SSimon J. GerratyFLAGS.vardebug=		-k -dv FROM_CMDLINE=
353*2c3632d1SSimon J. GerratyFLAGS.varmod-match-escape= -dv
354*2c3632d1SSimon J. GerratyFLAGS.varname-dot-shell= -dpv
355*2c3632d1SSimon J. GerratyFLAGS.varname-empty=	-dv '$${:U}=cmdline-u' '=cmline-plain'
3563841c287SSimon J. Gerraty
3573841c287SSimon J. Gerraty# Some tests need extra post-processing.
358*2c3632d1SSimon J. GerratySED_CMDS.opt-debug-g1=	-e 's,${.CURDIR},CURDIR,'
359*2c3632d1SSimon J. GerratySED_CMDS.opt-debug-g1+=	-e '/Global Variables:/,/Suffixes:/d'
360*2c3632d1SSimon J. GerratySED_CMDS.sh-dots=	-e 's,^.*\.\.\.:.*,<normalized: ...: not found>,'
361*2c3632d1SSimon J. GerratySED_CMDS.varmod-subst-regex+= \
362*2c3632d1SSimon J. Gerraty			-e 's,\(Regex compilation error:\).*,\1 (details omitted),'
363*2c3632d1SSimon J. GerratySED_CMDS.varmod-edge+=	-e 's, line [0-9]*:, line omitted:,'
364*2c3632d1SSimon J. GerratySED_CMDS.varshell+=	-e 's,^${.SHELL:T}: ,,'
3653841c287SSimon J. GerratySED_CMDS.varshell+=	-e '/command/s,No such.*,not found,'
366*2c3632d1SSimon J. GerratySED_CMDS.varname-dot-shell=	-e 's, = /.*, = (details omitted),'
367*2c3632d1SSimon J. GerratySED_CMDS.varname-dot-shell+=	-e 's,"/[^"]*","(details omitted)",'
368*2c3632d1SSimon J. GerratySED_CMDS.varname-dot-shell+=	-e 's,\[/[^]]*\],[(details omitted)],'
369*2c3632d1SSimon J. Gerraty
370*2c3632d1SSimon J. Gerraty# Some tests need an additional round of postprocessing.
371*2c3632d1SSimon J. GerratyPOSTPROC.counter=	${TOOL_SED} -n -e '/:RELEVANT = yes/,/:RELEVANT = no/p'
372*2c3632d1SSimon J. GerratyPOSTPROC.deptgt-suffixes= \
373*2c3632d1SSimon J. Gerraty			${TOOL_SED} -n -e '/^\#\*\*\* Suffixes/,/^\#\*/p'
374*2c3632d1SSimon J. GerratyPOSTPROC.vardebug=	${TOOL_SED} -n -e '/:RELEVANT = yes/,/:RELEVANT = no/p'
375*2c3632d1SSimon J. GerratyPOSTPROC.varmod-match-escape= ${TOOL_SED} -n -e '/^Pattern/p'
376*2c3632d1SSimon J. GerratyPOSTPROC.varname-dot-shell= \
377*2c3632d1SSimon J. Gerraty			awk '/\.SHELL/ || /^ParseReadLine/'
378*2c3632d1SSimon J. GerratyPOSTPROC.varname-empty=	${TOOL_SED} -n -e '/^Var_Set/p' -e '/^out:/p'
379*2c3632d1SSimon J. Gerraty
380*2c3632d1SSimon J. Gerraty# Some tests reuse other tests, which makes them unnecessarily fragile.
381*2c3632d1SSimon J. Gerratyexport-all.rawout: export.mk
382*2c3632d1SSimon J. Gerratyunexport.rawout: export.mk
383*2c3632d1SSimon J. Gerratyunexport-env.rawout: export.mk
3843841c287SSimon J. Gerraty
3853841c287SSimon J. Gerraty# End of the configuration section.
386d4d90f10SMarcel Moolenaar
387d4d90f10SMarcel Moolenaar.MAIN: all
388d4d90f10SMarcel Moolenaar
389*2c3632d1SSimon J. Gerraty.sinclude "Makefile.inc"
390*2c3632d1SSimon J. Gerraty.sinclude "Makefile.config"
3913841c287SSimon J. Gerraty
392d4d90f10SMarcel MoolenaarUNIT_TESTS:= ${srcdir}
393db29cad8SSimon J. Gerraty.PATH: ${UNIT_TESTS}
394d4d90f10SMarcel Moolenaar
3953841c287SSimon J. GerratyOUTFILES=	${TESTS:=.out}
396db29cad8SSimon J. Gerraty
397db29cad8SSimon J. Gerratyall: ${OUTFILES}
398db29cad8SSimon J. Gerraty
399*2c3632d1SSimon J. GerratyCLEANFILES=		*.rawout *.out *.status *.tmp *.core *.tmp
400db29cad8SSimon J. GerratyCLEANFILES+=		obj*.[och] lib*.a	# posix1.mk
401db29cad8SSimon J. GerratyCLEANFILES+=		issue* .[ab]*		# suffixes.mk
402*2c3632d1SSimon J. GerratyCLEANDIRS=		dir dummy		# posix1.mk
403d4d90f10SMarcel Moolenaar
404d4d90f10SMarcel Moolenaarclean:
405db29cad8SSimon J. Gerraty	rm -f ${CLEANFILES}
406*2c3632d1SSimon J. Gerraty	rm -rf ${CLEANDIRS}
407d4d90f10SMarcel Moolenaar
408d4d90f10SMarcel MoolenaarTEST_MAKE?=	${.MAKE}
409d4d90f10SMarcel MoolenaarTOOL_SED?=	sed
410d4d90f10SMarcel MoolenaarTOOL_TR?=	tr
411d4d90f10SMarcel MoolenaarTOOL_DIFF?=	diff
412d4d90f10SMarcel MoolenaarDIFF_FLAGS?=	-u
413d4d90f10SMarcel Moolenaar
4144639b858SSimon J. Gerraty.if defined(.PARSEDIR)
415d4d90f10SMarcel Moolenaar# ensure consistent results from sort(1)
416d4d90f10SMarcel MoolenaarLC_ALL=		C
417d4d90f10SMarcel MoolenaarLANG=		C
418d4d90f10SMarcel Moolenaar.export LANG LC_ALL
4194639b858SSimon J. Gerraty.endif
420d4d90f10SMarcel Moolenaar
421*2c3632d1SSimon J. Gerraty.if ${.MAKE.MODE:Unormal:Mmeta} != ""
422*2c3632d1SSimon J. Gerraty# we don't need the noise
423*2c3632d1SSimon J. Gerraty_MKMSG_TEST= :
424*2c3632d1SSimon J. Gerraty.endif
425*2c3632d1SSimon J. Gerraty
426db29cad8SSimon J. Gerraty# the tests are actually done with sub-makes.
427db29cad8SSimon J. Gerraty.SUFFIXES: .mk .rawout .out
428db29cad8SSimon J. Gerraty.mk.rawout:
429*2c3632d1SSimon J. Gerraty	@${_MKMSG_TEST:Uecho '#      test '} ${.PREFIX}
430*2c3632d1SSimon J. Gerraty	@set -eu; \
431*2c3632d1SSimon J. Gerraty	cd ${.OBJDIR}; \
432*2c3632d1SSimon J. Gerraty	env -i PATH="$$PATH" ${ENV.${.TARGET:R}} \
433*2c3632d1SSimon J. Gerraty	  ${TEST_MAKE} \
434*2c3632d1SSimon J. Gerraty	    -r -C ${.CURDIR} -f ${.IMPSRC} \
435*2c3632d1SSimon J. Gerraty	    ${FLAGS.${.TARGET:R}:U-k} \
436*2c3632d1SSimon J. Gerraty	    > ${.TARGET}.tmp 2>&1 \
437*2c3632d1SSimon J. Gerraty	&& status=$$? || status=$$?; \
438*2c3632d1SSimon J. Gerraty	echo $$status > ${.TARGET:R}.status
439db29cad8SSimon J. Gerraty	@mv ${.TARGET}.tmp ${.TARGET}
440db29cad8SSimon J. Gerraty
4413841c287SSimon J. Gerraty# Post-process the test output so that the results can be compared.
4423841c287SSimon J. Gerraty#
4433841c287SSimon J. Gerraty# always pretend .MAKE was called 'make'
4443841c287SSimon J. Gerraty_SED_CMDS+=	-e 's,^${TEST_MAKE:T:S,.,\\.,g}[][0-9]*:,make:,'
4453841c287SSimon J. Gerraty_SED_CMDS+=	-e 's,${TEST_MAKE:S,.,\\.,g},make,'
4463841c287SSimon J. Gerraty# replace anything after 'stopped in' with unit-tests
4473841c287SSimon J. Gerraty_SED_CMDS+=	-e '/stopped/s, /.*, unit-tests,'
4483841c287SSimon J. Gerraty# strip ${.CURDIR}/ from the output
4493841c287SSimon J. Gerraty_SED_CMDS+=	-e 's,${.CURDIR:S,.,\\.,g}/,,g'
4503841c287SSimon J. Gerraty_SED_CMDS+=	-e 's,${UNIT_TESTS:S,.,\\.,g}/,,g'
4513841c287SSimon J. Gerraty
452db29cad8SSimon J. Gerraty.rawout.out:
4533841c287SSimon J. Gerraty	@${TOOL_SED} ${_SED_CMDS} ${SED_CMDS.${.TARGET:R}} \
454*2c3632d1SSimon J. Gerraty	  < ${.IMPSRC} > ${.TARGET}.tmp1
455*2c3632d1SSimon J. Gerraty	@${POSTPROC.${.TARGET:R}:Ucat} < ${.TARGET}.tmp1 > ${.TARGET}.tmp2
456*2c3632d1SSimon J. Gerraty	@rm ${.TARGET}.tmp1
457*2c3632d1SSimon J. Gerraty	@echo "exit status `cat ${.TARGET:R}.status`" >> ${.TARGET}.tmp2
458*2c3632d1SSimon J. Gerraty	@mv ${.TARGET}.tmp2 ${.TARGET}
459db29cad8SSimon J. Gerraty
460db29cad8SSimon J. Gerraty# Compare all output files
461db29cad8SSimon J. Gerratytest:	${OUTFILES} .PHONY
462db29cad8SSimon J. Gerraty	@failed= ; \
4633841c287SSimon J. Gerraty	for test in ${TESTS}; do \
464ac3446e9SSimon J. Gerraty	  ${TOOL_DIFF} ${DIFF_FLAGS} ${UNIT_TESTS}/$${test}.exp $${test}.out \
465db29cad8SSimon J. Gerraty	  || failed="$${failed}$${failed:+ }$${test}" ; \
466db29cad8SSimon J. Gerraty	done ; \
467db29cad8SSimon J. Gerraty	if [ -n "$${failed}" ]; then \
468db29cad8SSimon J. Gerraty	  echo "Failed tests: $${failed}" ; false ; \
469db29cad8SSimon J. Gerraty	else \
470db29cad8SSimon J. Gerraty	  echo "All tests passed" ; \
471db29cad8SSimon J. Gerraty	fi
472d4d90f10SMarcel Moolenaar
473d4d90f10SMarcel Moolenaaraccept:
4743841c287SSimon J. Gerraty	@for test in ${TESTS}; do \
475db29cad8SSimon J. Gerraty	  cmp -s ${UNIT_TESTS}/$${test}.exp $${test}.out \
476db29cad8SSimon J. Gerraty	  || { echo "Replacing $${test}.exp" ; \
477db29cad8SSimon J. Gerraty	       cp $${test}.out ${UNIT_TESTS}/$${test}.exp ; } \
478db29cad8SSimon J. Gerraty	done
479d4d90f10SMarcel Moolenaar
480db29cad8SSimon J. Gerraty.if exists(${TEST_MAKE})
481*2c3632d1SSimon J. Gerraty${TESTS:=.rawout}: ${TEST_MAKE} ${.PARSEDIR}/Makefile
482db29cad8SSimon J. Gerraty.endif
483db29cad8SSimon J. Gerraty
484*2c3632d1SSimon J. Gerraty.sinclude <bsd.obj.mk>
485