Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make/unit-tests make(1): move tests for :S, :C, :@ f...



details:   https://anonhg.NetBSD.org/src/rev/b1d417c9c315
branches:  trunk
changeset: 974907:b1d417c9c315
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sun Aug 16 12:30:45 2020 +0000

description:
make(1): move tests for :S, :C, :@ from modmisc to their separate tests

diffstat:

 usr.bin/make/unit-tests/Makefile               |    8 +-
 usr.bin/make/unit-tests/modmisc.exp            |   94 ----------
 usr.bin/make/unit-tests/modmisc.mk             |  229 +------------------------
 usr.bin/make/unit-tests/varmod-loop.exp        |   15 +
 usr.bin/make/unit-tests/varmod-loop.mk         |   65 ++++++-
 usr.bin/make/unit-tests/varmod-subst-regex.exp |   29 +++
 usr.bin/make/unit-tests/varmod-subst-regex.mk  |   32 ++-
 usr.bin/make/unit-tests/varmod-subst.exp       |   50 +++++
 usr.bin/make/unit-tests/varmod-subst.mk        |  151 +++++++++++++++-
 9 files changed, 332 insertions(+), 341 deletions(-)

diffs (truncated from 761 to 300 lines):

diff -r 892748cf5dc3 -r b1d417c9c315 usr.bin/make/unit-tests/Makefile
--- a/usr.bin/make/unit-tests/Makefile  Sun Aug 16 12:07:50 2020 +0000
+++ b/usr.bin/make/unit-tests/Makefile  Sun Aug 16 12:30:45 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.93 2020/08/16 12:07:51 rillig Exp $
+# $NetBSD: Makefile,v 1.94 2020/08/16 12:30:45 rillig Exp $
 #
 # Unit tests for make(1)
 #
@@ -320,8 +320,8 @@
 FLAGS.vardebug=                -k -dv FROM_CMDLINE=
 
 # Some tests need extra post-processing.
-SED_CMDS.moderrs+=     -e 's,\(Regex compilation error:\).*,\1 (details omitted),'
-SED_CMDS.modmisc+=     -e 's,\(Regex compilation error:\).*,\1 (details omitted),'
+SED_CMDS.varmod-subst-regex+= \
+                       -e 's,\(Regex compilation error:\).*,\1 (details omitted),'
 SED_CMDS.varmod-edge+= -e 's, line [0-9]*:, line omitted:,'
 SED_CMDS.varshell+=    -e 's,^[a-z]*sh: ,,'
 SED_CMDS.varshell+=    -e '/command/s,No such.*,not found,'
@@ -440,7 +440,7 @@
        cvs diff "$$mi" || true
 
 .if exists(${TEST_MAKE})
-${TESTS:=.rawout}: ${TEST_MAKE}
+${TESTS:=.rawout}: ${TEST_MAKE} ${.PARSEDIR}/Makefile
 .endif
 
 .-include <bsd.obj.mk>
diff -r 892748cf5dc3 -r b1d417c9c315 usr.bin/make/unit-tests/modmisc.exp
--- a/usr.bin/make/unit-tests/modmisc.exp       Sun Aug 16 12:07:50 2020 +0000
+++ b/usr.bin/make/unit-tests/modmisc.exp       Sun Aug 16 12:30:45 2020 +0000
@@ -18,100 +18,6 @@
 S:empty
 C:empty
 @:
-mod-subst:
-:a b b c:
-:a b b c:
-: b c:
-:a c:
-:x__ 3 x__ 3:
-12345
-mod-subst-delimiter:
-1 two 3 horizontal tabulator
-1 two 3 space
-1 two 3 exclamation mark
-1 two 3 double quotes
-1 two 3 hash
-1 two 3 dollar
-1 two 3 percent
-1 two 3 apostrophe
-1 two 3 opening parenthesis
-1 two 3 closing parenthesis
-1 two 3 digit
-1 two 3 colon
-1 two 3 less than sign
-1 two 3 equal sign
-1 two 3 greater than sign
-1 two 3 question mark
-1 two 3 at
-1 two 3 letter
-1 two 3 opening bracket
-1 two 3 backslash
-1 two 3 closing bracket
-1 two 3 caret
-1 two 3 opening brace
-1 two 3 vertical line
-1 two 3 closing brace
-1 two 3 tilde
-mod-subst-chain:
-A B c.
-make: Unknown modifier 'i'
-.
-mod-regex:
-:a b b c:
-:a b b c:
-: b c:
-make: Regex compilation error: (details omitted)
-:C,word,____,:Q}:
-:a c:
-:x__ 3 x__ 3:
-:+one+ +two+ +three+:
-:x1y x2y x3y:
-:x1y x2y x3y:
-:mod-loop-varname: :x1y x2y x3y: ::
-:x1y x2y x3y:
-mod-loop-resolve:w1d2d3w w2i3w w1i2d3 2i${RES3}w w1d2d3 2i${RES3} 1i${RES2}w:
-mod-loop-varname-dollar:(1) (2) (3).
-mod-loop-varname-dollar:() () ().
-mod-loop-varname-dollar:() () ().
-mod-subst-dollar:$1:
-mod-subst-dollar:$2:
-mod-subst-dollar:$3:
-mod-subst-dollar:$4:
-mod-subst-dollar:$5:
-mod-subst-dollar:$6:
-mod-subst-dollar:$7:
-mod-subst-dollar:$8:
-mod-subst-dollar:$40:
-mod-subst-dollar:U8:
-mod-subst-dollar:$$$$:
-mod-subst-dollar:$$$good3
-mod-loop-dollar:1:
-mod-loop-dollar:${word}$:
-mod-loop-dollar:$3$:
-mod-loop-dollar:$${word}$$:
-mod-loop-dollar:$$5$$:
-mod-loop-dollar:$$${word}$$$:
-mod-regex-limits:00-ok:1 2323 45456
-make: No subexpression \1
-make: No subexpression \1
-make: No subexpression \1
-make: No subexpression \1
-mod-regex-limits:11-missing:1 6
-mod-regex-limits:11-ok:1 22 446
-make: No subexpression \2
-make: No subexpression \2
-make: No subexpression \2
-make: No subexpression \2
-mod-regex-limits:22-missing:1 6
-make: No subexpression \2
-make: No subexpression \2
-make: No subexpression \2
-make: No subexpression \2
-mod-regex-limits:22-missing:1 6
-mod-regex-limits:22-ok:1 33 556
-mod-regex-limits:capture:ihgfedcbaabcdefghijABCDEFGHIJa0a1a2rest
-make: Regex compilation error: (details omitted)
-mod-regex-errors:
 mod-assign: first=1.
 mod-assign: last=3.
 mod-assign: appended=1 2 3.
diff -r 892748cf5dc3 -r b1d417c9c315 usr.bin/make/unit-tests/modmisc.mk
--- a/usr.bin/make/unit-tests/modmisc.mk        Sun Aug 16 12:07:50 2020 +0000
+++ b/usr.bin/make/unit-tests/modmisc.mk        Sun Aug 16 12:30:45 2020 +0000
@@ -1,4 +1,4 @@
-# $Id: modmisc.mk,v 1.41 2020/08/09 09:32:04 rillig Exp $
+# $Id: modmisc.mk,v 1.42 2020/08/16 12:30:45 rillig Exp $
 #
 # miscellaneous modifier tests
 
@@ -16,14 +16,6 @@
 MOD_SEP=S,:, ,g
 
 all:   modvar modvarloop modsysv mod-HTE emptyvar undefvar
-all:   mod-subst
-all:   mod-subst-delimiter
-all:   mod-subst-chain
-all:   mod-regex
-all:   mod-loop-varname mod-loop-resolve mod-loop-varname-dollar
-all:   mod-subst-dollar mod-loop-dollar
-all:   mod-regex-limits
-all:   mod-regex-errors
 all:   mod-assign
 all:   mod-assign-nested
 all:   mod-tu-space
@@ -80,225 +72,6 @@
        @echo C:${:U:C,^$,empty,}
        @echo @:${:U:@var@empty@}
 
-WORDS=         sequences of letters
-.if ${WORDS:S,,,} != ${WORDS}
-.warning The empty pattern matches something.
-.endif
-.if ${WORDS:S,e,*,1} != "s*quences of letters"
-.warning The :S modifier flag '1' is not applied exactly once.
-.endif
-.if ${WORDS:S,e,*,} != "s*quences of l*tters"
-.warning The :S modifier does not replace every first match per word.
-.endif
-.if ${WORDS:S,e,*,g} != "s*qu*nc*s of l*tt*rs"
-.warning The :S modifier flag 'g' does not replace every occurrence.
-.endif
-.if ${WORDS:S,^sequ,occurr,} != "occurrences of letters"
-.warning The :S modifier fails for a short match anchored at the start.
-.endif
-.if ${WORDS:S,^of,with,} != "sequences with letters"
-.warning The :S modifier fails for an exact match anchored at the start.
-.endif
-.if ${WORDS:S,^office,does not match,} != ${WORDS}
-.warning The :S modifier matches a too long pattern anchored at the start.
-.endif
-.if ${WORDS:S,f$,r,} != "sequences or letters"
-.warning The :S modifier fails for a short match anchored at the end.
-.endif
-.if ${WORDS:S,s$,,} != "sequence of letter"
-.warning The :S modifier fails to replace one occurrence per word.
-.endif
-.if ${WORDS:S,of$,,} != "sequences letters"
-.warning The :S modifier fails for an exact match anchored at the end.
-.endif
-.if ${WORDS:S,eof$,,} != ${WORDS}
-.warning The :S modifier matches a too long pattern anchored at the end.
-.endif
-.if ${WORDS:S,^of$,,} != "sequences letters"
-.warning The :S modifier does not match a word anchored at both ends.
-.endif
-.if ${WORDS:S,^o$,,} != ${WORDS}
-.warning The :S modifier matches a prefix anchored at both ends.
-.endif
-.if ${WORDS:S,^f$,,} != ${WORDS}
-.warning The :S modifier matches a suffix anchored at both ends.
-.endif
-.if ${WORDS:S,^eof$,,} != ${WORDS}
-.warning The :S modifier matches a too long prefix anchored at both ends.
-.endif
-.if ${WORDS:S,^office$,,} != ${WORDS}
-.warning The :S modifier matches a too long suffix anchored at both ends.
-.endif
-
-mod-subst:
-       @echo $@:
-       @echo :${:Ua b b c:S,a b,,:Q}:
-       @echo :${:Ua b b c:S,a b,,1:Q}:
-       @echo :${:Ua b b c:S,a b,,W:Q}:
-       @echo :${:Ua b b c:S,b,,g:Q}:
-       @echo :${:U1 2 3 1 2 3:S,1 2,___,Wg:S,_,x,:Q}:
-       @echo ${:U12345:S,,sep,g:Q}
-
-# The :S and :C modifiers accept an arbitrary character as the delimiter,
-# including characters that are otherwise used as escape characters or
-# interpreted in a special way.  This can be used to confuse humans.
-mod-subst-delimiter:
-       @echo $@:
-       @echo ${:U1 2 3:S       2       two     :Q} horizontal tabulator
-       @echo ${:U1 2 3:S 2 two :Q} space
-       @echo ${:U1 2 3:S!2!two!:Q} exclamation mark
-       @echo ${:U1 2 3:S"2"two":Q} double quotes
-       # In shell command lines, the hash does not need to be escaped.
-       # It needs to be escaped in variable assignment lines though.
-       @echo ${:U1 2 3:S#2#two#:Q} hash
-       @echo ${:U1 2 3:S$2$two$:Q} dollar
-       @echo ${:U1 2 3:S%2%two%:Q} percent
-       @echo ${:U1 2 3:S'2'two':Q} apostrophe
-       @echo ${:U1 2 3:S(2(two(:Q} opening parenthesis
-       @echo ${:U1 2 3:S)2)two):Q} closing parenthesis
-       @echo ${:U1 2 3:S121two1:Q} digit
-       @echo ${:U1 2 3:S:2:two::Q} colon
-       @echo ${:U1 2 3:S<2<two<:Q} less than sign
-       @echo ${:U1 2 3:S=2=two=:Q} equal sign
-       @echo ${:U1 2 3:S>2>two>:Q} greater than sign
-       @echo ${:U1 2 3:S?2?two?:Q} question mark
-       @echo ${:U1 2 3:S@2@two@:Q} at
-       @echo ${:U1 2 3:Sa2atwoa:Q} letter
-       @echo ${:U1 2 3:S[2[two[:Q} opening bracket
-       @echo ${:U1 2 3:S\2\two\:Q} backslash
-       @echo ${:U1 2 3:S]2]two]:Q} closing bracket
-       @echo ${:U1 2 3:S^2^two^:Q} caret
-       @echo ${:U1 2 3:S{2{two{:Q} opening brace
-       @echo ${:U1 2 3:S|2|two|:Q} vertical line
-       @echo ${:U1 2 3:S}2}two}:Q} closing brace
-       @echo ${:U1 2 3:S~2~two~:Q} tilde
-
-# The :S and :C modifiers can be chained without a separating ':'.
-# This is not documented in the manual page.
-# It works because ApplyModifier_Subst scans for the known modifiers g1W
-# and then just returns to ApplyModifiers.  There, the colon is optionally
-# skipped (see the *st.next == ':' at the end of the loop).
-#
-# Most other modifiers cannot be chained since their parsers skip until
-# the next ':' or '}' or ')'.
-mod-subst-chain:
-       @echo $@:
-       @echo ${:Ua b c:S,a,A,S,b,B,}.
-       # There is no 'i' modifier for the :S or :C modifiers.
-       # The error message is "make: Unknown modifier 'i'", which is
-       # kind of correct, although it is mixing the terms for variable
-       # modifiers with the matching modifiers.
-       @echo ${:Uvalue:S,a,x,i}.
-
-mod-regex:
-       @echo $@:
-       @echo :${:Ua b b c:C,a b,,:Q}:
-       @echo :${:Ua b b c:C,a b,,1:Q}:
-       @echo :${:Ua b b c:C,a b,,W:Q}:
-       @echo :${:Uword1 word2:C,****,____,g:C,word,____,:Q}:
-       @echo :${:Ua b b c:C,b,,g:Q}:
-       @echo :${:U1 2 3 1 2 3:C,1 2,___,Wg:C,_,x,:Q}:
-
-# In the :@ modifier, the name of the loop variable can even be generated
-# dynamically.  There's no practical use-case for this, and hopefully nobody
-# will ever depend on this, but technically it's possible.
-# Therefore, in -dL mode, this is forbidden, see lint.mk.
-mod-loop-varname:
-       @echo :${:Uone two three:@${:Ubar:S,b,v,}@+${var}+@:Q}:
-       # ":::" is a very creative variable name, unlikely in practice
-       # The expression ${\:\:\:} would not work since backslashes can only
-       # be escaped in the modifiers, but not in the variable name.
-       @echo :${:U1 2 3:@:::@x${${:U\:\:\:}}y@}:
-       # "@@" is another creative variable name.
-       @echo :${:U1 2 3:@\@\@@x${@@}y@}:
-       # Even "@" works as a variable name since the variable is installed
-       # in the "current" scope, which in this case is the one from the
-       # target.
-       @echo :$@: :${:U1 2 3:@\@@x${@}y@}: :$@:
-       # In extreme cases, even the backslash can be used as variable name.
-       # It needs to be doubled though.
-       @echo :${:U1 2 3:@\\@x${${:Ux:S,x,\\,}}y@}:
-



Home | Main Index | Thread Index | Old Index