Module Name: src Committed By: rillig Date: Fri May 31 07:13:12 UTC 2024
Modified Files: src/usr.bin/make/unit-tests: directive-for-empty.exp directive-for-empty.mk opt-debug-hash.exp opt-debug-hash.mk Log Message: tests/make: replace or document .error in tests The text 'Missing argument for ".error"' in an .exp file may be a hint for an accidentally broken test, so eliminate them as far as possible. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/usr.bin/make/unit-tests/directive-for-empty.exp \ src/usr.bin/make/unit-tests/directive-for-empty.mk cvs rdiff -u -r1.5 -r1.6 src/usr.bin/make/unit-tests/opt-debug-hash.exp cvs rdiff -u -r1.4 -r1.5 src/usr.bin/make/unit-tests/opt-debug-hash.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-for-empty.exp diff -u src/usr.bin/make/unit-tests/directive-for-empty.exp:1.3 src/usr.bin/make/unit-tests/directive-for-empty.exp:1.4 --- src/usr.bin/make/unit-tests/directive-for-empty.exp:1.3 Thu Jun 1 20:56:35 2023 +++ src/usr.bin/make/unit-tests/directive-for-empty.exp Fri May 31 07:13:12 2024 @@ -1,7 +1,4 @@ make: "directive-for-empty.mk" line 22: 2 -make: "directive-for-empty.mk" line 38: Missing argument for ".error" -make: "directive-for-empty.mk" line 38: Missing argument for ".error" -make: "directive-for-empty.mk" line 38: Missing argument for ".error" For: end for 1 For: loop body with i = value: # The identifier 'empty' can only be used in conditions such as .if, .ifdef or @@ -22,6 +19,4 @@ CPPFLAGS+= -Dmessage="empty(i)" # condition directives, they can also occur in the modifier ':?', see # varmod-ifelse.mk. CPPFLAGS+= -Dmacro="${empty(i):?empty:not-empty}" -make: Fatal errors encountered -- cannot continue -make: stopped in unit-tests -exit status 1 +exit status 0 Index: src/usr.bin/make/unit-tests/directive-for-empty.mk diff -u src/usr.bin/make/unit-tests/directive-for-empty.mk:1.3 src/usr.bin/make/unit-tests/directive-for-empty.mk:1.4 --- src/usr.bin/make/unit-tests/directive-for-empty.mk:1.3 Sun Nov 19 21:47:52 2023 +++ src/usr.bin/make/unit-tests/directive-for-empty.mk Fri May 31 07:13:12 2024 @@ -1,4 +1,4 @@ -# $NetBSD: directive-for-empty.mk,v 1.3 2023/11/19 21:47:52 rillig Exp $ +# $NetBSD: directive-for-empty.mk,v 1.4 2024/05/31 07:13:12 rillig Exp $ # # Tests for .for loops containing conditions of the form 'empty(var:...)'. # @@ -26,23 +26,23 @@ # In conditions, the function call to 'empty' does not look like an # expression, therefore it is not replaced. Since there is no global variable -# named 'i', this expression makes for a leaky abstraction. If the .for +# named 'i', this condition makes for a leaky abstraction. If the .for # variables were real variables, calling 'empty' would work on them as well. .for i in 11 12 13 # Asking for an empty iteration variable does not make sense as the .for loop # splits the iteration items into words, and such a word cannot be empty. -. if empty(i) -# expect+3: Missing argument for ".error" -# expect+2: Missing argument for ".error" -# expect+1: Missing argument for ".error" -. error # due to the leaky abstraction +. if !empty(i) +. error # not reached, due to the leaky abstraction . endif -# The typical way of using 'empty' with variables from .for loops is pattern -# matching using the modifiers ':M' or ':N'. +# The typical way of mistakenly using 'empty' with variables from .for loops +# is pattern matching using the modifiers ':M' or ':N'. . if !empty(i:M*2*) -. if ${i} != "12" -. error -. endif +. error +. endif +# Instead of the 'empty' function, the variables from .for loops can be +# queried using conditions of the form '${var:...} != ""'. +. if $i == "12" && ${i:M*2*} != "12" +. error . endif .endfor @@ -122,3 +122,5 @@ CPPFLAGS+= -Dmacro="${empty(i):?empty:no # TODO: Add code that demonstrates the current interaction between variables # from .for loops and the modifiers mentioned above. + +all: Index: src/usr.bin/make/unit-tests/opt-debug-hash.exp diff -u src/usr.bin/make/unit-tests/opt-debug-hash.exp:1.5 src/usr.bin/make/unit-tests/opt-debug-hash.exp:1.6 --- src/usr.bin/make/unit-tests/opt-debug-hash.exp:1.5 Thu Jun 1 20:56:35 2023 +++ src/usr.bin/make/unit-tests/opt-debug-hash.exp Fri May 31 07:13:12 2024 @@ -1,4 +1,4 @@ -make: "opt-debug-hash.mk" line 12: Missing argument for ".error" +make: "opt-debug-hash.mk" line 13: Missing argument for ".error" make: Fatal errors encountered -- cannot continue HashTable targets: size=16 numEntries=0 maxchain=0 HashTable Global variables: size=16 numEntries=<entries> maxchain=3 Index: src/usr.bin/make/unit-tests/opt-debug-hash.mk diff -u src/usr.bin/make/unit-tests/opt-debug-hash.mk:1.4 src/usr.bin/make/unit-tests/opt-debug-hash.mk:1.5 --- src/usr.bin/make/unit-tests/opt-debug-hash.mk:1.4 Thu Jun 1 20:56:35 2023 +++ src/usr.bin/make/unit-tests/opt-debug-hash.mk Fri May 31 07:13:12 2024 @@ -1,4 +1,4 @@ -# $NetBSD: opt-debug-hash.mk,v 1.4 2023/06/01 20:56:35 rillig Exp $ +# $NetBSD: opt-debug-hash.mk,v 1.5 2024/05/31 07:13:12 rillig Exp $ # # Tests for the -dh command line option, which adds debug logging for # hash tables. Even more detailed logging is available by compiling @@ -6,7 +6,8 @@ .MAKEFLAGS: -dh -# Force a parse error, to demonstrate the newline character in the diagnostic -# that had been missing before parse.c 1.655 from 2022-01-22. +# Force a parse error, to demonstrate the newline character in the "cannot +# continue" diagnostic that had been missing before parse.c 1.655 from +# 2022-01-22. # expect+1: Missing argument for ".error" .error