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.
This commit is contained in:
parent
72b6692e9f
commit
0fbf3fce65
|
@ -1,7 +1,4 @@
|
||||||
make: "directive-for-empty.mk" line 22: 2
|
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: end for 1
|
||||||
For: loop body with i = value:
|
For: loop body with i = value:
|
||||||
# The identifier 'empty' can only be used in conditions such as .if, .ifdef or
|
# 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
|
# condition directives, they can also occur in the modifier ':?', see
|
||||||
# varmod-ifelse.mk.
|
# varmod-ifelse.mk.
|
||||||
CPPFLAGS+= -Dmacro="${empty(i):?empty:not-empty}"
|
CPPFLAGS+= -Dmacro="${empty(i):?empty:not-empty}"
|
||||||
make: Fatal errors encountered -- cannot continue
|
exit status 0
|
||||||
make: stopped in unit-tests
|
|
||||||
exit status 1
|
|
||||||
|
|
|
@ -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:...)'.
|
# 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
|
# In conditions, the function call to 'empty' does not look like an
|
||||||
# expression, therefore it is not replaced. Since there is no global variable
|
# 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.
|
# variables were real variables, calling 'empty' would work on them as well.
|
||||||
.for i in 11 12 13
|
.for i in 11 12 13
|
||||||
# Asking for an empty iteration variable does not make sense as the .for loop
|
# 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.
|
# splits the iteration items into words, and such a word cannot be empty.
|
||||||
. if empty(i)
|
. if !empty(i)
|
||||||
# expect+3: Missing argument for ".error"
|
. error # not reached, due to the leaky abstraction
|
||||||
# expect+2: Missing argument for ".error"
|
|
||||||
# expect+1: Missing argument for ".error"
|
|
||||||
. error # due to the leaky abstraction
|
|
||||||
. endif
|
. endif
|
||||||
# The typical way of using 'empty' with variables from .for loops is pattern
|
# The typical way of mistakenly using 'empty' with variables from .for loops
|
||||||
# matching using the modifiers ':M' or ':N'.
|
# is pattern matching using the modifiers ':M' or ':N'.
|
||||||
. if !empty(i:M*2*)
|
. if !empty(i:M*2*)
|
||||||
. if ${i} != "12"
|
. error
|
||||||
. error
|
. endif
|
||||||
. 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
|
. endif
|
||||||
.endfor
|
.endfor
|
||||||
|
|
||||||
|
@ -122,3 +122,5 @@ CPPFLAGS+= -Dmacro="${empty(i):?empty:not-empty}"
|
||||||
|
|
||||||
# TODO: Add code that demonstrates the current interaction between variables
|
# TODO: Add code that demonstrates the current interaction between variables
|
||||||
# from .for loops and the modifiers mentioned above.
|
# from .for loops and the modifiers mentioned above.
|
||||||
|
|
||||||
|
all:
|
||||||
|
|
|
@ -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
|
make: Fatal errors encountered -- cannot continue
|
||||||
HashTable targets: size=16 numEntries=0 maxchain=0
|
HashTable targets: size=16 numEntries=0 maxchain=0
|
||||||
HashTable Global variables: size=16 numEntries=<entries> maxchain=3
|
HashTable Global variables: size=16 numEntries=<entries> maxchain=3
|
||||||
|
|
|
@ -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
|
# Tests for the -dh command line option, which adds debug logging for
|
||||||
# hash tables. Even more detailed logging is available by compiling
|
# hash tables. Even more detailed logging is available by compiling
|
||||||
|
@ -6,7 +6,8 @@
|
||||||
|
|
||||||
.MAKEFLAGS: -dh
|
.MAKEFLAGS: -dh
|
||||||
|
|
||||||
# Force a parse error, to demonstrate the newline character in the diagnostic
|
# Force a parse error, to demonstrate the newline character in the "cannot
|
||||||
# that had been missing before parse.c 1.655 from 2022-01-22.
|
# continue" diagnostic that had been missing before parse.c 1.655 from
|
||||||
|
# 2022-01-22.
|
||||||
# expect+1: Missing argument for ".error"
|
# expect+1: Missing argument for ".error"
|
||||||
.error
|
.error
|
||||||
|
|
Loading…
Reference in New Issue