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): add test that demonstrates ...



details:   https://anonhg.NetBSD.org/src/rev/25b17b17d01c
branches:  trunk
changeset: 1012748:25b17b17d01c
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sun Aug 09 08:03:31 2020 +0000

description:
make(1): add test that demonstrates possible delimiters for :S

diffstat:

 usr.bin/make/unit-tests/modmisc.exp |  27 +++++++++++++++++++++++++++
 usr.bin/make/unit-tests/modmisc.mk  |  37 ++++++++++++++++++++++++++++++++++++-
 2 files changed, 63 insertions(+), 1 deletions(-)

diffs (95 lines):

diff -r 55cd0aca3e12 -r 25b17b17d01c usr.bin/make/unit-tests/modmisc.exp
--- a/usr.bin/make/unit-tests/modmisc.exp       Sun Aug 09 07:41:14 2020 +0000
+++ b/usr.bin/make/unit-tests/modmisc.exp       Sun Aug 09 08:03:31 2020 +0000
@@ -25,6 +25,33 @@
 :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'
diff -r 55cd0aca3e12 -r 25b17b17d01c usr.bin/make/unit-tests/modmisc.mk
--- a/usr.bin/make/unit-tests/modmisc.mk        Sun Aug 09 07:41:14 2020 +0000
+++ b/usr.bin/make/unit-tests/modmisc.mk        Sun Aug 09 08:03:31 2020 +0000
@@ -1,4 +1,4 @@
-# $Id: modmisc.mk,v 1.38 2020/08/09 07:41:14 rillig Exp $
+# $Id: modmisc.mk,v 1.39 2020/08/09 08:03:31 rillig Exp $
 #
 # miscellaneous modifier tests
 
@@ -17,6 +17,7 @@
 
 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
@@ -138,6 +139,40 @@
        @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



Home | Main Index | Thread Index | Old Index