diff options
Diffstat (limited to 'contrib/bmake/unit-tests/directive-export-gmake.mk')
-rw-r--r-- | contrib/bmake/unit-tests/directive-export-gmake.mk | 48 |
1 files changed, 45 insertions, 3 deletions
diff --git a/contrib/bmake/unit-tests/directive-export-gmake.mk b/contrib/bmake/unit-tests/directive-export-gmake.mk index d94cd9debf64..de79470bf305 100644 --- a/contrib/bmake/unit-tests/directive-export-gmake.mk +++ b/contrib/bmake/unit-tests/directive-export-gmake.mk @@ -1,4 +1,4 @@ -# $NetBSD: directive-export-gmake.mk,v 1.3 2020/11/17 20:16:44 rillig Exp $ +# $NetBSD: directive-export-gmake.mk,v 1.9 2023/12/17 09:44:00 rillig Exp $ # # Tests for the export directive (without leading dot), as in GNU make. @@ -60,5 +60,47 @@ export VAR=an ${UNDEF} variable . error .endif -all: - @:; + +# The body of the .for loop expands to 'export VAR=${:U1}', and the 'export' +# directive is only recognized if the line does not contain a ':', to allow +# 'export' to be a regular target. +.for value in 1 +# XXX: The ':' in this line is inside an expression and should thus not be +# interpreted as a dependency operator. +# expect+1: Invalid line 'export VAR=${:U1}', expanded to 'export VAR=1' +export VAR=${value} +.endfor + + +# The 'export' directive expands expressions, but the expressions must not +# contain a ':', due to the overly strict parser. The indirect expressions +# may contain a ':', though. +# +# As a side effect, this test demonstrates that the 'export' directive exports +# the environment variable immediately, other than the '.export' directive, +# which defers that action if the variable value contains a '$'. +INDIRECT_TZ= ${:UAmerica/Los_Angeles} +export TZ=${INDIRECT_TZ} +# expect+1: 16:00:00 +.info ${%T:L:localtime=86400} + + +# The '=' must be present in the unexpanded line, it cannot be generated by +# an expression. +EQ= = +# expect+1: Variable/Value missing from "export" +export EQ_VAR${EQ}eq-value +.if ${:!env!:MEQ_VAR=*} +. error +.endif + + +# The variable name must be given directly, it is not expanded. The name of +# the exported variable thus starts with a '$', and that name may be filtered +# out by the platform. +INDIRECT_NAME= I_NAME +INDIRECT_VALUE= indirect value +export ${INDIRECT_NAME}=${INDIRECT_VALUE} +.if ${:!env!:MI_NAME=*} +. error +.endif |