Add unit-tests for .for
This commit is contained in:
parent
ce4e7f03e3
commit
d912c0b39e
@ -1,4 +1,4 @@
|
||||
# $NetBSD: Makefile,v 1.33 2011/09/29 23:38:04 sjg Exp $
|
||||
# $NetBSD: Makefile,v 1.34 2012/06/19 23:25:53 sjg Exp $
|
||||
#
|
||||
# Unit tests for make(1)
|
||||
# The main targets are:
|
||||
@ -26,6 +26,7 @@ SUBFILES= \
|
||||
export-all \
|
||||
doterror \
|
||||
dotwait \
|
||||
forloop \
|
||||
forsubst \
|
||||
hash \
|
||||
misc \
|
||||
|
45
usr.bin/make/unit-tests/forloop
Normal file
45
usr.bin/make/unit-tests/forloop
Normal file
@ -0,0 +1,45 @@
|
||||
# $Id: forloop,v 1.1 2012/06/19 23:25:53 sjg Exp $
|
||||
|
||||
all: for-loop
|
||||
|
||||
LIST = one "two and three" four "five"
|
||||
|
||||
.if make(for-fail)
|
||||
for-fail:
|
||||
|
||||
XTRA_LIST = xtra
|
||||
.else
|
||||
|
||||
.for x in ${LIST}
|
||||
X!= echo 'x=$x' >&2; echo
|
||||
.endfor
|
||||
|
||||
CFL = -I/this -I"This or that" -Ithat "-DTHIS=\"this and that\""
|
||||
cfl=
|
||||
.for x in ${CFL}
|
||||
X!= echo 'x=$x' >&2; echo
|
||||
.if empty(cfl)
|
||||
cfl= $x
|
||||
.else
|
||||
cfl+= $x
|
||||
.endif
|
||||
.endfor
|
||||
X!= echo 'cfl=${cfl}' >&2; echo
|
||||
|
||||
.if ${cfl} != ${CFL}
|
||||
.error ${.newline}'${cfl}' != ${.newline}'${CFL}'
|
||||
.endif
|
||||
|
||||
.for a b in ${EMPTY}
|
||||
X!= echo 'a=$a b=$b' >&2; echo
|
||||
.endfor
|
||||
.endif
|
||||
|
||||
.for a b in ${LIST} ${LIST:tu} ${XTRA_LIST}
|
||||
X!= echo 'a=$a b=$b' >&2; echo
|
||||
.endfor
|
||||
|
||||
for-loop:
|
||||
@echo We expect an error next:
|
||||
@(cd ${.CURDIR} && ${.MAKE} -f ${MAKEFILE} for-fail) && \
|
||||
{ echo "Oops that should have failed!"; exit 1; } || echo OK
|
@ -80,6 +80,24 @@ make: Graph cycles through `cycle.2.98'
|
||||
make: Graph cycles through `cycle.2.97'
|
||||
cycle.1.99
|
||||
cycle.1.99
|
||||
x=one
|
||||
x="two and three"
|
||||
x=four
|
||||
x="five"
|
||||
x=-I/this
|
||||
x=-I"This or that"
|
||||
x=-Ithat
|
||||
x="-DTHIS=\"this and that\""
|
||||
cfl=-I/this -I"This or that" -Ithat "-DTHIS=\"this and that\""
|
||||
a=one b="two and three"
|
||||
a=four b="five"
|
||||
a=ONE b="TWO AND THREE"
|
||||
a=FOUR b="FIVE"
|
||||
We expect an error next:
|
||||
make: "forloop" line 38: Wrong number of words (9) in .for substitution list with 2 vars
|
||||
make: Fatal errors encountered -- cannot continue
|
||||
make: stopped in unit-tests
|
||||
OK
|
||||
.for with :S;... OK
|
||||
b2af338b
|
||||
3360ac65
|
||||
|
Loading…
Reference in New Issue
Block a user