Module Name:    src
Committed By:   rillig
Date:           Thu Jun  1 07:27:31 UTC 2023

Modified Files:
        src/distrib/sets/lists/tests: mi
        src/usr.bin/make/unit-tests: Makefile check-expect.lua cond-eof.exp
            cond-eof.mk cond-func-empty.mk cond-token-string.mk dep.mk
            directive-endif.exp directive-endif.mk directive-for.mk
            varmod-subst.mk varname-makeflags.mk varparse-dynamic.mk
Removed Files:
        src/usr.bin/make/unit-tests: forsubst.exp forsubst.mk

Log Message:
tests/make: clean up comments, extend a few tests


To generate a diff of this commit:
cvs rdiff -u -r1.1265 -r1.1266 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.335 -r1.336 src/usr.bin/make/unit-tests/Makefile
cvs rdiff -u -r1.4 -r1.5 src/usr.bin/make/unit-tests/check-expect.lua \
    src/usr.bin/make/unit-tests/directive-endif.exp
cvs rdiff -u -r1.3 -r1.4 src/usr.bin/make/unit-tests/cond-eof.exp \
    src/usr.bin/make/unit-tests/cond-eof.mk \
    src/usr.bin/make/unit-tests/dep.mk
cvs rdiff -u -r1.18 -r1.19 src/usr.bin/make/unit-tests/cond-func-empty.mk
cvs rdiff -u -r1.6 -r1.7 src/usr.bin/make/unit-tests/cond-token-string.mk
cvs rdiff -u -r1.5 -r1.6 src/usr.bin/make/unit-tests/directive-endif.mk \
    src/usr.bin/make/unit-tests/varparse-dynamic.mk
cvs rdiff -u -r1.20 -r1.21 src/usr.bin/make/unit-tests/directive-for.mk
cvs rdiff -u -r1.1 -r0 src/usr.bin/make/unit-tests/forsubst.exp
cvs rdiff -u -r1.3 -r0 src/usr.bin/make/unit-tests/forsubst.mk
cvs rdiff -u -r1.9 -r1.10 src/usr.bin/make/unit-tests/varmod-subst.mk
cvs rdiff -u -r1.7 -r1.8 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/distrib/sets/lists/tests/mi
diff -u src/distrib/sets/lists/tests/mi:1.1265 src/distrib/sets/lists/tests/mi:1.1266
--- src/distrib/sets/lists/tests/mi:1.1265	Wed May 31 00:18:44 2023
+++ src/distrib/sets/lists/tests/mi	Thu Jun  1 07:27:30 2023
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1265 2023/05/31 00:18:44 riastradh Exp $
+# $NetBSD: mi,v 1.1266 2023/06/01 07:27:30 rillig Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -5821,8 +5821,8 @@
 ./usr/tests/usr.bin/make/unit-tests/export.mk					tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/forloop.exp					tests-obsolete		obsolete,atf
 ./usr/tests/usr.bin/make/unit-tests/forloop.mk					tests-obsolete		obsolete,atf
-./usr/tests/usr.bin/make/unit-tests/forsubst.exp				tests-usr.bin-tests	compattestfile,atf
-./usr/tests/usr.bin/make/unit-tests/forsubst.mk					tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/forsubst.exp				tests-obsolete		obsolete,atf
+./usr/tests/usr.bin/make/unit-tests/forsubst.mk					tests-obsolete		obsolete,atf
 ./usr/tests/usr.bin/make/unit-tests/gnode-submake.exp				tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/gnode-submake.mk				tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/hanoi-include.exp				tests-usr.bin-tests	compattestfile,atf

Index: src/usr.bin/make/unit-tests/Makefile
diff -u src/usr.bin/make/unit-tests/Makefile:1.335 src/usr.bin/make/unit-tests/Makefile:1.336
--- src/usr.bin/make/unit-tests/Makefile:1.335	Wed May 10 13:03:06 2023
+++ src/usr.bin/make/unit-tests/Makefile	Thu Jun  1 07:27:30 2023
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.335 2023/05/10 13:03:06 rillig Exp $
+# $NetBSD: Makefile,v 1.336 2023/06/01 07:27:30 rillig Exp $
 #
 # Unit tests for make(1)
 #
@@ -212,7 +212,6 @@ TESTS+=		export
 TESTS+=		export-all
 TESTS+=		export-env
 TESTS+=		export-variants
-TESTS+=		forsubst
 TESTS+=		gnode-submake
 TESTS+=		hanoi-include
 TESTS+=		impsrc

Index: src/usr.bin/make/unit-tests/check-expect.lua
diff -u src/usr.bin/make/unit-tests/check-expect.lua:1.4 src/usr.bin/make/unit-tests/check-expect.lua:1.5
--- src/usr.bin/make/unit-tests/check-expect.lua:1.4	Tue May  9 19:43:12 2023
+++ src/usr.bin/make/unit-tests/check-expect.lua	Thu Jun  1 07:27:30 2023
@@ -1,5 +1,5 @@
 #!  /usr/bin/lua
--- $NetBSD: check-expect.lua,v 1.4 2023/05/09 19:43:12 rillig Exp $
+-- $NetBSD: check-expect.lua,v 1.5 2023/06/01 07:27:30 rillig Exp $
 
 --[[
 
@@ -58,7 +58,7 @@ local function collect_lineno_diagnostic
   for _, line in ipairs(exp_lines) do
     ---@type string | nil, string, string
     local l_fname, l_lineno, l_msg =
-      line:match("^make: \"([^\"]+)\" line (%d+): (.*)")
+      line:match('^make: "([^"]+)" line (%d+): (.*)')
     if l_fname ~= nil then
       local location = ("%s:%d"):format(l_fname, l_lineno)
       if by_location[location] == nil then
Index: src/usr.bin/make/unit-tests/directive-endif.exp
diff -u src/usr.bin/make/unit-tests/directive-endif.exp:1.4 src/usr.bin/make/unit-tests/directive-endif.exp:1.5
--- src/usr.bin/make/unit-tests/directive-endif.exp:1.4	Thu Dec  9 20:13:10 2021
+++ src/usr.bin/make/unit-tests/directive-endif.exp	Thu Jun  1 07:27:30 2023
@@ -1,8 +1,8 @@
 make: "directive-endif.mk" line 18: The .endif directive does not take arguments
 make: "directive-endif.mk" line 23: The .endif directive does not take arguments
-make: "directive-endif.mk" line 33: The .endif directive does not take arguments
-make: "directive-endif.mk" line 39: The .endif directive does not take arguments
-make: "directive-endif.mk" line 45: Unknown directive "endifx"
+make: "directive-endif.mk" line 34: The .endif directive does not take arguments
+make: "directive-endif.mk" line 41: The .endif directive does not take arguments
+make: "directive-endif.mk" line 46: Unknown directive "endifx"
 make: Fatal errors encountered -- cannot continue
 make: stopped in unit-tests
 exit status 1

Index: src/usr.bin/make/unit-tests/cond-eof.exp
diff -u src/usr.bin/make/unit-tests/cond-eof.exp:1.3 src/usr.bin/make/unit-tests/cond-eof.exp:1.4
--- src/usr.bin/make/unit-tests/cond-eof.exp:1.3	Fri Dec 10 23:12:44 2021
+++ src/usr.bin/make/unit-tests/cond-eof.exp	Thu Jun  1 07:27:30 2023
@@ -1,6 +1,6 @@
-make: "cond-eof.mk" line 15: Malformed conditional (0 ${SIDE_EFFECT} ${SIDE_EFFECT2})
-make: "cond-eof.mk" line 17: Malformed conditional (1 ${SIDE_EFFECT} ${SIDE_EFFECT2})
-make: "cond-eof.mk" line 19: Malformed conditional ((0) ${SIDE_EFFECT} ${SIDE_EFFECT2})
+make: "cond-eof.mk" line 19: Malformed conditional (0 ${SIDE_EFFECT} ${SIDE_EFFECT2})
+make: "cond-eof.mk" line 22: Malformed conditional (1 ${SIDE_EFFECT} ${SIDE_EFFECT2})
+make: "cond-eof.mk" line 25: Malformed conditional ((0) ${SIDE_EFFECT} ${SIDE_EFFECT2})
 make: Fatal errors encountered -- cannot continue
 make: stopped in unit-tests
 exit status 1
Index: src/usr.bin/make/unit-tests/cond-eof.mk
diff -u src/usr.bin/make/unit-tests/cond-eof.mk:1.3 src/usr.bin/make/unit-tests/cond-eof.mk:1.4
--- src/usr.bin/make/unit-tests/cond-eof.mk:1.3	Fri Dec 10 23:12:44 2021
+++ src/usr.bin/make/unit-tests/cond-eof.mk	Thu Jun  1 07:27:30 2023
@@ -1,7 +1,10 @@
-# $NetBSD: cond-eof.mk,v 1.3 2021/12/10 23:12:44 rillig Exp $
+# $NetBSD: cond-eof.mk,v 1.4 2023/06/01 07:27:30 rillig Exp $
 #
-# Tests for parsing conditions, especially the end of such conditions, which
-# are represented as the token TOK_EOF.
+# Tests for parsing the end of '.if' conditions, which are represented as the
+# token TOK_EOF.
+
+# expect-all
+
 
 SIDE_EFFECT=	${:!echo 'side effect' 1>&2!}
 SIDE_EFFECT2=	${:!echo 'side effect 2' 1>&2!}
@@ -12,9 +15,12 @@ SIDE_EFFECT2=	${:!echo 'side effect 2' 1
 # These syntax errors are an edge case that does not occur during normal
 # operation.  Still, it is easy to avoid evaluating these expressions, just in
 # case they have side effects.
+# expect+1: Malformed conditional (0 ${SIDE_EFFECT} ${SIDE_EFFECT2})
 .if 0 ${SIDE_EFFECT} ${SIDE_EFFECT2}
 .endif
+# expect+1: Malformed conditional (1 ${SIDE_EFFECT} ${SIDE_EFFECT2})
 .if 1 ${SIDE_EFFECT} ${SIDE_EFFECT2}
 .endif
+# expect+1: Malformed conditional ((0) ${SIDE_EFFECT} ${SIDE_EFFECT2})
 .if (0) ${SIDE_EFFECT} ${SIDE_EFFECT2}
 .endif
Index: src/usr.bin/make/unit-tests/dep.mk
diff -u src/usr.bin/make/unit-tests/dep.mk:1.3 src/usr.bin/make/unit-tests/dep.mk:1.4
--- src/usr.bin/make/unit-tests/dep.mk:1.3	Mon Dec 13 23:38:54 2021
+++ src/usr.bin/make/unit-tests/dep.mk	Thu Jun  1 07:27:30 2023
@@ -1,4 +1,4 @@
-# $NetBSD: dep.mk,v 1.3 2021/12/13 23:38:54 rillig Exp $
+# $NetBSD: dep.mk,v 1.4 2023/06/01 07:27:30 rillig Exp $
 #
 # Tests for dependency declarations, such as "target: sources".
 
@@ -15,4 +15,16 @@ only-colon::
 # would be another error message.
 only-colon:
 
+
+# Before parse.c 1.158 from 2009-10-07, the parser broke dependency lines at
+# the first ';', without parsing expressions as such.  It interpreted the
+# first ';' as the separator between the dependency and its commands, and the
+# '^' as a shell command.
+all: for-subst
+.for file in ${.PARSEFILE}
+for-subst:	  ${file:S;^;./;g}
+	@echo ".for with :S;... OK"
+.endfor
+
+
 all:

Index: src/usr.bin/make/unit-tests/cond-func-empty.mk
diff -u src/usr.bin/make/unit-tests/cond-func-empty.mk:1.18 src/usr.bin/make/unit-tests/cond-func-empty.mk:1.19
--- src/usr.bin/make/unit-tests/cond-func-empty.mk:1.18	Sat Mar  4 21:15:30 2023
+++ src/usr.bin/make/unit-tests/cond-func-empty.mk	Thu Jun  1 07:27:30 2023
@@ -1,4 +1,4 @@
-# $NetBSD: cond-func-empty.mk,v 1.18 2023/03/04 21:15:30 rillig Exp $
+# $NetBSD: cond-func-empty.mk,v 1.19 2023/06/01 07:27:30 rillig Exp $
 #
 # Tests for the empty() function in .if conditions, which tests a variable
 # expression for emptiness.
@@ -25,7 +25,7 @@ WORD=	word
 .endif
 
 # The :S modifier replaces the empty value with an actual word.  After
-# applying the :S modifier to the expression, it value is 'empty', so it is
+# applying the :S modifier to the expression, its value is 'empty', so it is
 # no longer empty, but it is still based on an undefined variable.  There are
 # a few modifiers that turn an undefined expression into a defined expression,
 # among them :U and :D, but not :S.  Therefore, at the end of evaluating the

Index: src/usr.bin/make/unit-tests/cond-token-string.mk
diff -u src/usr.bin/make/unit-tests/cond-token-string.mk:1.6 src/usr.bin/make/unit-tests/cond-token-string.mk:1.7
--- src/usr.bin/make/unit-tests/cond-token-string.mk:1.6	Sun May  8 06:57:00 2022
+++ src/usr.bin/make/unit-tests/cond-token-string.mk	Thu Jun  1 07:27:30 2023
@@ -1,4 +1,4 @@
-# $NetBSD: cond-token-string.mk,v 1.6 2022/05/08 06:57:00 rillig Exp $
+# $NetBSD: cond-token-string.mk,v 1.7 2023/06/01 07:27:30 rillig Exp $
 #
 # Tests for quoted string literals in .if conditions.
 #
@@ -9,7 +9,7 @@
 # TODO: Implementation
 
 # Cover the code in CondParser_String that frees the memory after parsing
-# a variable expression based on an undefined variable.
+# an expression based on an undefined variable.
 .if "" != "${:Uvalue:Z}"
 .  error
 .else

Index: src/usr.bin/make/unit-tests/directive-endif.mk
diff -u src/usr.bin/make/unit-tests/directive-endif.mk:1.5 src/usr.bin/make/unit-tests/directive-endif.mk:1.6
--- src/usr.bin/make/unit-tests/directive-endif.mk:1.5	Mon Dec 14 21:56:17 2020
+++ src/usr.bin/make/unit-tests/directive-endif.mk	Thu Jun  1 07:27:30 2023
@@ -1,4 +1,4 @@
-# $NetBSD: directive-endif.mk,v 1.5 2020/12/14 21:56:17 rillig Exp $
+# $NetBSD: directive-endif.mk,v 1.6 2023/06/01 07:27:30 rillig Exp $
 #
 # Tests for the .endif directive.
 #
@@ -8,18 +8,18 @@
 # See also:
 #	Cond_EvalLine
 
-# TODO: Implementation
+# expect-all
 
 .MAKEFLAGS: -dL
 
-# Error: .endif does not take arguments
 .if 0
-# Since 2020-12-15, complain about the extra text after the 'endif'.
+# Since 2020-12-15:
+# expect+1: The .endif directive does not take arguments
 .endif 0
 
-# Error: .endif does not take arguments
 .if 1
-# Since 2020-12-15, complain about the extra text after the 'endif'.
+# Since 2020-12-15:
+# expect+1: The .endif directive does not take arguments
 .endif 1
 
 # Comments are allowed after an '.endif'.
@@ -29,21 +29,19 @@
 # Only whitespace and comments are allowed after an '.endif', but nothing
 # else.
 .if 1
-# Since 2020-12-15, complain about the extra text after the 'endif'.
+# Since 2020-12-15:
+# expect+1: The .endif directive does not take arguments
 .endif0
 
 # Only whitespace and comments are allowed after an '.endif', but nothing
 # else.
 .if 1
-# Since 2020-12-15, complain about the extra text after the 'endif'.
+# Since 2020-12-15:
+# expect+1: The .endif directive does not take arguments
 .endif/
 
-# After an '.endif', no other letter must occur.  This 'endifx' is not
-# parsed as an 'endif', therefore another '.endif' must follow to balance
-# the directives.
+# After an '.endif', no other letter must occur.
 .if 1
+# expect+1: Unknown directive "endifx"
 .endifx
-.endif # to close the preceding '.if'
-
-all:
-	@:;
+.endif				# to close the preceding '.if'
Index: src/usr.bin/make/unit-tests/varparse-dynamic.mk
diff -u src/usr.bin/make/unit-tests/varparse-dynamic.mk:1.5 src/usr.bin/make/unit-tests/varparse-dynamic.mk:1.6
--- src/usr.bin/make/unit-tests/varparse-dynamic.mk:1.5	Mon Feb 22 20:38:55 2021
+++ src/usr.bin/make/unit-tests/varparse-dynamic.mk	Thu Jun  1 07:27:30 2023
@@ -1,8 +1,8 @@
-# $NetBSD: varparse-dynamic.mk,v 1.5 2021/02/22 20:38:55 rillig Exp $
+# $NetBSD: varparse-dynamic.mk,v 1.6 2023/06/01 07:27:30 rillig Exp $
 
 # Before 2020-07-27, there was an off-by-one error in Var_Parse that skipped
 # the last character in the variable name.
-# To trigger the bug, the variable must not be defined.
+# To trigger the bug, the variable had to be undefined.
 .if ${.TARGET}			# exact match, may be undefined
 .endif
 .if ${.TARGEX}			# 1 character difference, must be defined

Index: src/usr.bin/make/unit-tests/directive-for.mk
diff -u src/usr.bin/make/unit-tests/directive-for.mk:1.20 src/usr.bin/make/unit-tests/directive-for.mk:1.21
--- src/usr.bin/make/unit-tests/directive-for.mk:1.20	Wed May 10 13:03:06 2023
+++ src/usr.bin/make/unit-tests/directive-for.mk	Thu Jun  1 07:27:30 2023
@@ -1,4 +1,4 @@
-# $NetBSD: directive-for.mk,v 1.20 2023/05/10 13:03:06 rillig Exp $
+# $NetBSD: directive-for.mk,v 1.21 2023/06/01 07:27:30 rillig Exp $
 #
 # Tests for the .for directive.
 #
@@ -87,9 +87,9 @@ var2=	value before
 .  warning After the .for loop, var2 must still have its original value.
 .endif
 
-# Until 2008-12-21, the values of the iteration variables were simply
-# inserted as plain text and then parsed as usual, which made it possible
-# to achieve all kinds of strange effects, such as generating '.if'
+# Before for.c 1.39 from 2008-12-21, the values of the iteration variables
+# were simply inserted as plain text and then parsed as usual, which made it
+# possible to achieve all kinds of strange effects, such as generating '.if'
 # directives or inserting '$' characters in random places, thereby changing
 # how following '$' are interpreted.
 #

Index: src/usr.bin/make/unit-tests/varmod-subst.mk
diff -u src/usr.bin/make/unit-tests/varmod-subst.mk:1.9 src/usr.bin/make/unit-tests/varmod-subst.mk:1.10
--- src/usr.bin/make/unit-tests/varmod-subst.mk:1.9	Mon Sep  6 21:18:55 2021
+++ src/usr.bin/make/unit-tests/varmod-subst.mk	Thu Jun  1 07:27:30 2023
@@ -1,7 +1,9 @@
-# $NetBSD: varmod-subst.mk,v 1.9 2021/09/06 21:18:55 rillig Exp $
+# $NetBSD: varmod-subst.mk,v 1.10 2023/06/01 07:27:30 rillig Exp $
 #
 # Tests for the :S,from,to, variable modifier.
 
+# expect-all
+
 all: mod-subst
 all: mod-subst-delimiter
 all: mod-subst-chain
@@ -99,6 +101,14 @@ WORDS=		sequences of letters
 .  error
 .endif
 
+
+# When a word is replaced with nothing, the remaining words are separated by a
+# single space, not two.
+.if ${1 2 3:L:S,2,,} != "1 3"
+.  error
+.endif
+
+
 mod-subst:
 	@echo $@:
 	@echo :${:Ua b b c:S,a b,,:Q}:

Index: src/usr.bin/make/unit-tests/varname-makeflags.mk
diff -u src/usr.bin/make/unit-tests/varname-makeflags.mk:1.7 src/usr.bin/make/unit-tests/varname-makeflags.mk:1.8
--- src/usr.bin/make/unit-tests/varname-makeflags.mk:1.7	Sat Feb 25 19:24:07 2023
+++ src/usr.bin/make/unit-tests/varname-makeflags.mk	Thu Jun  1 07:27:30 2023
@@ -1,4 +1,4 @@
-# $NetBSD: varname-makeflags.mk,v 1.7 2023/02/25 19:24:07 rillig Exp $
+# $NetBSD: varname-makeflags.mk,v 1.8 2023/06/01 07:27:30 rillig Exp $
 #
 # Tests for the environment variable 'MAKEFLAGS', from which additional
 # command line arguments are read before the actual command line arguments.
@@ -96,7 +96,7 @@ dollars_stage_1:
 	#	$\		the value of the variable named '\'
 	#	{varname\}	a literal string
 	#
-	# Since the variable name '\' is not defined, the resulting value is
+	# Since the variable named '\' is not defined, the resulting value is
 	# '\{varname\}'.  Make doesn't handle isolated '$' characters in
 	# strings well, instead each '$' has to be part of a '$$' or be part
 	# of a subexpression like '${VAR}'.
@@ -135,9 +135,9 @@ dollars_stage_3:
 	@echo '$@: MAKEFLAGS=<'${MAKEFLAGS:Q}'>'
 
 
-# Demonstrates in which exact order the MAKEFLAGS are built together from the
-# parent MAKEFLAGS and the flags from the command line, in particular that
-# variable assignments are passed at the end, after the options.
+# Demonstrates in which exact order the MAKEFLAGS are built from the parent
+# MAKEFLAGS and the flags from the command line, in particular that variable
+# assignments are passed at the end, after the options.
 append_stage_0:
 	@echo '$@: MAKEFLAGS=<'${MAKEFLAGS:Q}'>'
 	@${MAKE} -Dbefore-0 -f ${MAKEFILE} append_stage_1 VAR0=value -Dafter-0

Reply via email to