Module Name:    src
Committed By:   rillig
Date:           Sat Feb 25 19:24:07 UTC 2023

Modified Files:
        src/usr.bin/make/unit-tests: varname-dot-makeflags.exp
            varname-dot-makeflags.mk varname-makeflags.mk

Log Message:
tests/make: clean up tests for MAKEFLAGS and related variables


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 \
    src/usr.bin/make/unit-tests/varname-dot-makeflags.exp
cvs rdiff -u -r1.6 -r1.7 src/usr.bin/make/unit-tests/varname-dot-makeflags.mk \
    src/usr.bin/make/unit-tests/varname-makeflags.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/varname-dot-makeflags.exp
diff -u src/usr.bin/make/unit-tests/varname-dot-makeflags.exp:1.5 src/usr.bin/make/unit-tests/varname-dot-makeflags.exp:1.6
--- src/usr.bin/make/unit-tests/varname-dot-makeflags.exp:1.5	Sat Feb 25 11:59:12 2023
+++ src/usr.bin/make/unit-tests/varname-dot-makeflags.exp	Sat Feb 25 19:24:07 2023
@@ -1,9 +1,9 @@
 make: "varname-dot-makeflags.mk" line 10: MAKEFLAGS=<undefined>
 make: "varname-dot-makeflags.mk" line 11: .MAKEFLAGS=< -r -k>
 make: "varname-dot-makeflags.mk" line 12: .MAKEOVERRIDES=<>
-make: "varname-dot-makeflags.mk" line 17: MAKEFLAGS=<undefined>
-make: "varname-dot-makeflags.mk" line 18: .MAKEFLAGS=< -r -k -D VARNAME -r>
-make: "varname-dot-makeflags.mk" line 19: .MAKEOVERRIDES=< VAR>
+make: "varname-dot-makeflags.mk" line 18: MAKEFLAGS=<undefined>
+make: "varname-dot-makeflags.mk" line 20: .MAKEFLAGS=< -r -k -D VARNAME -r>
+make: "varname-dot-makeflags.mk" line 22: .MAKEOVERRIDES=< VAR>
 runtime: MAKEFLAGS=< -r -k -D VARNAME -r VAR=value>
 runtime: .MAKEFLAGS=< -r -k -D VARNAME -r>
 runtime: .MAKEOVERRIDES=< VAR>

Index: src/usr.bin/make/unit-tests/varname-dot-makeflags.mk
diff -u src/usr.bin/make/unit-tests/varname-dot-makeflags.mk:1.6 src/usr.bin/make/unit-tests/varname-dot-makeflags.mk:1.7
--- src/usr.bin/make/unit-tests/varname-dot-makeflags.mk:1.6	Sat Feb 25 11:59:12 2023
+++ src/usr.bin/make/unit-tests/varname-dot-makeflags.mk	Sat Feb 25 19:24:07 2023
@@ -1,4 +1,4 @@
-# $NetBSD: varname-dot-makeflags.mk,v 1.6 2023/02/25 11:59:12 rillig Exp $
+# $NetBSD: varname-dot-makeflags.mk,v 1.7 2023/02/25 19:24:07 rillig Exp $
 #
 # Tests for the special .MAKEFLAGS variable, which collects almost all
 # command line arguments and passes them on to any child processes via
@@ -14,11 +14,22 @@
 # Append an option with argument, a plain option and a variable assignment.
 .MAKEFLAGS: -DVARNAME -r VAR=value
 
+# expect+1: MAKEFLAGS=<undefined>
 .info MAKEFLAGS=<${MAKEFLAGS:Uundefined}>
+# expect+1: .MAKEFLAGS=< -r -k -D VARNAME -r>
 .info .MAKEFLAGS=<${.MAKEFLAGS}>
+# expect+1: .MAKEOVERRIDES=< VAR>
 .info .MAKEOVERRIDES=<${.MAKEOVERRIDES}>
 
-# After parsing, the environment variable 'MAKEFLAGS' is set based on
+# The environment variable 'MAKEFLAGS' is not available to child processes
+# when parsing the makefiles.  This is different from exported variables,
+# which are already available during parse time.
+.if ${:!echo "\${MAKEFLAGS-undef}"!} != "undef"
+.  error
+.endif
+
+# After parsing, the environment variable 'MAKEFLAGS' is set based on the
+# special variables '.MAKEFLAGS' and '.MAKEOVERRIDES'.
 runtime:
 	@echo '$@: MAKEFLAGS=<'${MAKEFLAGS:Q}'>'
 	@echo '$@: .MAKEFLAGS=<'${.MAKEFLAGS:Q}'>'
Index: src/usr.bin/make/unit-tests/varname-makeflags.mk
diff -u src/usr.bin/make/unit-tests/varname-makeflags.mk:1.6 src/usr.bin/make/unit-tests/varname-makeflags.mk:1.7
--- src/usr.bin/make/unit-tests/varname-makeflags.mk:1.6	Sat Feb 25 11:59:12 2023
+++ src/usr.bin/make/unit-tests/varname-makeflags.mk	Sat Feb 25 19:24:07 2023
@@ -1,9 +1,11 @@
-# $NetBSD: varname-makeflags.mk,v 1.6 2023/02/25 11:59:12 rillig Exp $
+# $NetBSD: varname-makeflags.mk,v 1.7 2023/02/25 19:24:07 rillig Exp $
 #
-# Tests for the special MAKEFLAGS variable, which is basically just a normal
-# environment variable.  It is closely related to .MAKEFLAGS but captures the
-# state of .MAKEFLAGS at the very beginning of make, before any makefiles are
-# read.
+# Tests for the environment variable 'MAKEFLAGS', from which additional
+# command line arguments are read before the actual command line arguments.
+#
+# After reading the makefiles and before making the targets, the arguments
+# that were collected in '.MAKEFLAGS' and '.MAKEOVERRIDES' are written back to
+# the environment variable 'MAKEFLAGS'.
 
 all: spaces_stage_0 dollars_stage_0 append_stage_0 override_stage_0
 
@@ -11,9 +13,7 @@ all: spaces_stage_0 dollars_stage_0 appe
 .if !make(*stage*)
 
 # The unit tests are run with an almost empty environment.  In particular,
-# the variable MAKEFLAGS is not set.  The '.MAKEFLAGS:' above also doesn't
-# influence the environment variable MAKEFLAGS, therefore it is still
-# undefined at this point.
+# the variable MAKEFLAGS is not set.
 .  if ${MAKEFLAGS:Uundefined} != "undefined"
 .    error
 .  endif

Reply via email to