Module Name:    src
Committed By:   rillig
Date:           Mon Dec 18 11:13:51 UTC 2023

Modified Files:
        src/usr.bin/make/unit-tests: varmod-subst-regex.mk varmod-subst.mk

Log Message:
tests/make: fix typo in test for ':C' modifier

The expression ${U:...} was always undefined, as there was no variable
named 'U'; the intended form was ${:U:...}.  Due to this typo, the
comments in the tests for the ':S' and the ':C' modifier contradicted
each other.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/usr.bin/make/unit-tests/varmod-subst-regex.mk
cvs rdiff -u -r1.13 -r1.14 src/usr.bin/make/unit-tests/varmod-subst.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/varmod-subst-regex.mk
diff -u src/usr.bin/make/unit-tests/varmod-subst-regex.mk:1.10 src/usr.bin/make/unit-tests/varmod-subst-regex.mk:1.11
--- src/usr.bin/make/unit-tests/varmod-subst-regex.mk:1.10	Sun Dec 17 14:07:22 2023
+++ src/usr.bin/make/unit-tests/varmod-subst-regex.mk	Mon Dec 18 11:13:51 2023
@@ -1,4 +1,4 @@
-# $NetBSD: varmod-subst-regex.mk,v 1.10 2023/12/17 14:07:22 rillig Exp $
+# $NetBSD: varmod-subst-regex.mk,v 1.11 2023/12/18 11:13:51 rillig Exp $
 #
 # Tests for the :C,from,to, variable modifier.
 
@@ -88,23 +88,43 @@ all: unmatched-subexpression
 # Like the ':S' modifier, the ':C' modifier matches on an expression
 # that contains no words at all, but only if the regular expression matches an
 # empty string, for example, when the regular expression is anchored at the
-# beginning or the end of the word.
-.if "<${U:S,^,prefix,}> <${:U:C,^,prefix,}>" != "<> <prefix>"
+# beginning or the end of the word.  An unanchored regular expression that
+# matches the empty string is uncommon in practice, as it would match before
+# each character of the word.
+.if "<${:U:S,,unanchored,}> <${:U:C,.?,unanchored,}>" != "<> <unanchored>"
 .  error
 .endif
-.if "<${U:S,$,suffix,}> <${:U:C,$,suffix,}>" != "<> <suffix>"
+.if "<${:U:S,^,prefix,}> <${:U:C,^,prefix,}>" != "<prefix> <prefix>"
 .  error
 .endif
-.if "<${U:S,^$,whole,}> <${:U:C,^$,whole,}>" != "<> <whole>"
+.if "<${:U:S,$,suffix,}> <${:U:C,$,suffix,}>" != "<suffix> <suffix>"
 .  error
 .endif
-.if "<${U:S,^,prefix,g}> <${:U:C,^,prefix,g}>" != "<> <prefix>"
+.if "<${:U:S,^$,whole,}> <${:U:C,^$,whole,}>" != "<whole> <whole>"
 .  error
 .endif
-.if "<${U:S,$,suffix,g}> <${:U:C,$,suffix,g}>" != "<> <suffix>"
+.if "<${:U:S,,unanchored,g}> <${:U:C,.?,unanchored,g}>" != "<> <unanchored>"
 .  error
 .endif
-.if "<${U:S,^$,whole,g}> <${:U:C,^$,whole,g}>" != "<> <whole>"
+.if "<${:U:S,^,prefix,g}> <${:U:C,^,prefix,g}>" != "<prefix> <prefix>"
+.  error
+.endif
+.if "<${:U:S,$,suffix,g}> <${:U:C,$,suffix,g}>" != "<suffix> <suffix>"
+.  error
+.endif
+.if "<${:U:S,^$,whole,g}> <${:U:C,^$,whole,g}>" != "<whole> <whole>"
+.  error
+.endif
+.if "<${:U:S,,unanchored,W}> <${:U:C,.?,unanchored,W}>" != "<> <unanchored>"
+.  error
+.endif
+.if "<${:U:S,^,prefix,W}> <${:U:C,^,prefix,W}>" != "<prefix> <prefix>"
+.  error
+.endif
+.if "<${:U:S,$,suffix,W}> <${:U:C,$,suffix,W}>" != "<suffix> <suffix>"
+.  error
+.endif
+.if "<${:U:S,^$,whole,W}> <${:U:C,^$,whole,W}>" != "<whole> <whole>"
 .  error
 .endif
 

Index: src/usr.bin/make/unit-tests/varmod-subst.mk
diff -u src/usr.bin/make/unit-tests/varmod-subst.mk:1.13 src/usr.bin/make/unit-tests/varmod-subst.mk:1.14
--- src/usr.bin/make/unit-tests/varmod-subst.mk:1.13	Sun Dec 17 14:07:22 2023
+++ src/usr.bin/make/unit-tests/varmod-subst.mk	Mon Dec 18 11:13:51 2023
@@ -1,4 +1,4 @@
-# $NetBSD: varmod-subst.mk,v 1.13 2023/12/17 14:07:22 rillig Exp $
+# $NetBSD: varmod-subst.mk,v 1.14 2023/12/18 11:13:51 rillig Exp $
 #
 # Tests for the :S,from,to, variable modifier.
 
@@ -142,8 +142,9 @@ WORDS=		sequences of letters
 .endif
 
 
-# In an empty expression, the ':S' modifier matches a single time if the
-# search string is anchored at the beginning or at the end.
+# In an empty expression, the ':S' modifier matches a single time, but only if
+# the search string is empty and anchored at either the beginning or the end
+# of the word.
 .if ${:U:S,,out-of-nothing,} != ""
 .  error
 .endif
@@ -156,6 +157,30 @@ WORDS=		sequences of letters
 .if ${:U:S,^$,out-of-nothing,} != "out-of-nothing"
 .  error
 .endif
+.if ${:U:S,,out-of-nothing,g} != ""
+.  error
+.endif
+.if ${:U:S,^,out-of-nothing,g} != "out-of-nothing"
+.  error
+.endif
+.if ${:U:S,$,out-of-nothing,g} != "out-of-nothing"
+.  error
+.endif
+.if ${:U:S,^$,out-of-nothing,g} != "out-of-nothing"
+.  error
+.endif
+.if ${:U:S,,out-of-nothing,W} != ""
+.  error
+.endif
+.if ${:U:S,^,out-of-nothing,W} != "out-of-nothing"
+.  error
+.endif
+.if ${:U:S,$,out-of-nothing,W} != "out-of-nothing"
+.  error
+.endif
+.if ${:U:S,^$,out-of-nothing,W} != "out-of-nothing"
+.  error
+.endif
 
 
 mod-subst:

Reply via email to