Module Name: src Committed By: rillig Date: Sun Aug 20 20:48:33 UTC 2023
Modified Files: src/usr.bin/make/unit-tests: directive-export-gmake.exp directive-export-gmake.mk directive-export.exp directive-export.mk Log Message: tests/make: show a difference between 'export' and '.export' To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 \ src/usr.bin/make/unit-tests/directive-export-gmake.exp \ src/usr.bin/make/unit-tests/directive-export.exp cvs rdiff -u -r1.6 -r1.7 \ src/usr.bin/make/unit-tests/directive-export-gmake.mk cvs rdiff -u -r1.8 -r1.9 src/usr.bin/make/unit-tests/directive-export.mk Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/make/unit-tests/directive-export-gmake.exp diff -u src/usr.bin/make/unit-tests/directive-export-gmake.exp:1.4 src/usr.bin/make/unit-tests/directive-export-gmake.exp:1.5 --- src/usr.bin/make/unit-tests/directive-export-gmake.exp:1.4 Sat Aug 19 11:09:02 2023 +++ src/usr.bin/make/unit-tests/directive-export-gmake.exp Sun Aug 20 20:48:32 2023 @@ -1,4 +1,5 @@ make: "directive-export-gmake.mk" line 71: Invalid line 'export VAR=${:U1}', expanded to 'export VAR=1' +make: "directive-export-gmake.mk" line 85: 16:00:00 make: Fatal errors encountered -- cannot continue make: stopped in unit-tests exit status 1 Index: src/usr.bin/make/unit-tests/directive-export.exp diff -u src/usr.bin/make/unit-tests/directive-export.exp:1.4 src/usr.bin/make/unit-tests/directive-export.exp:1.5 --- src/usr.bin/make/unit-tests/directive-export.exp:1.4 Sun Dec 13 01:07:54 2020 +++ src/usr.bin/make/unit-tests/directive-export.exp Sun Aug 20 20:48:32 2023 @@ -1 +1,4 @@ +make: "directive-export.mk" line 50: 00:00:00 +make: "directive-export.mk" line 55: 00:00:00 +make: "directive-export.mk" line 58: 16:00:00 exit status 0 Index: src/usr.bin/make/unit-tests/directive-export-gmake.mk diff -u src/usr.bin/make/unit-tests/directive-export-gmake.mk:1.6 src/usr.bin/make/unit-tests/directive-export-gmake.mk:1.7 --- src/usr.bin/make/unit-tests/directive-export-gmake.mk:1.6 Sat Aug 19 11:09:02 2023 +++ src/usr.bin/make/unit-tests/directive-export-gmake.mk Sun Aug 20 20:48:32 2023 @@ -1,4 +1,4 @@ -# $NetBSD: directive-export-gmake.mk,v 1.6 2023/08/19 11:09:02 rillig Exp $ +# $NetBSD: directive-export-gmake.mk,v 1.7 2023/08/20 20:48:32 rillig Exp $ # # Tests for the export directive (without leading dot), as in GNU make. @@ -70,3 +70,16 @@ export VAR=an ${UNDEF} variable # expect+1: Invalid line 'export VAR=${:U1}' 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} Index: src/usr.bin/make/unit-tests/directive-export.mk diff -u src/usr.bin/make/unit-tests/directive-export.mk:1.8 src/usr.bin/make/unit-tests/directive-export.mk:1.9 --- src/usr.bin/make/unit-tests/directive-export.mk:1.8 Tue Feb 16 19:01:18 2021 +++ src/usr.bin/make/unit-tests/directive-export.mk Sun Aug 20 20:48:32 2023 @@ -1,4 +1,4 @@ -# $NetBSD: directive-export.mk,v 1.8 2021/02/16 19:01:18 rillig Exp $ +# $NetBSD: directive-export.mk,v 1.9 2023/08/20 20:48:32 rillig Exp $ # # Tests for the .export directive. # @@ -41,4 +41,21 @@ EMPTY_SHELL= ${:sh} _!= :;: # Force the variable to be actually exported. +# If the '.export' directive exports a variable whose value contains a '$', +# the actual export action is deferred until a subprocess is started, assuming +# that only subprocesses access the environment variables. The ':localtime' +# modifier depends on the 'TZ' environment variable, without any subprocess. +export TZ=${UTC} +# expect+1: 00:00:00 +.info ${%T:L:localtime=86400} +INDIRECT_TZ= ${:UAmerica/Los_Angeles} +TZ= ${INDIRECT_TZ} +.export TZ +# expect+1: 00:00:00 +.info ${%T:L:localtime=86400} +_!= echo 'force exporting the environment variables' +# expect+1: 16:00:00 +.info ${%T:L:localtime=86400} + + all: