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 unit tests for parse er...
details: https://anonhg.NetBSD.org/src/rev/9103c5d87c70
branches: trunk
changeset: 974374:9103c5d87c70
user: rillig <rillig%NetBSD.org@localhost>
date: Wed Jul 29 18:48:47 2020 +0000
description:
make(1): add unit tests for parse errors in modifiers
diffstat:
usr.bin/make/unit-tests/moderrs.exp | 27 +++++++++++++++++++++++++++
usr.bin/make/unit-tests/moderrs.mk | 22 +++++++++++++++++++++-
usr.bin/make/unit-tests/modmisc.exp | 25 +++++++++++++++++++++++++
usr.bin/make/unit-tests/modmisc.mk | 33 ++++++++++++++++++++++++++++++++-
4 files changed, 105 insertions(+), 2 deletions(-)
diffs (159 lines):
diff -r 18dc63745187 -r 9103c5d87c70 usr.bin/make/unit-tests/moderrs.exp
--- a/usr.bin/make/unit-tests/moderrs.exp Wed Jul 29 14:23:59 2020 +0000
+++ b/usr.bin/make/unit-tests/moderrs.exp Wed Jul 29 18:48:47 2020 +0000
@@ -35,4 +35,31 @@
make: Unclosed substitution for ! (! missing)
+mod-subst-delimiter:
+make: Unclosed substitution for VAR (@ missing)
+
+make: Unclosed substitution for VAR (, missing)
+
+make: Unclosed substitution for VAR (, missing)
+
+make: Unclosed substitution for VAR (, missing)
+
+make: Unclosed substitution for VAR (, missing)
+
+make: Unclosed variable specification (expecting '}') for "VAR" (value "TheVariable") modifier S
+TheVariable
+TheVariable
+make: Unclosed variable specification (expecting '}') for "VAR" (value "TheVariable") modifier S
+1: TheVariable
+make: Unclosed substitution for VAR (, missing)
+2:
+make: Unclosed substitution for VAR (, missing)
+3:
+make: Unclosed substitution for VAR (, missing)
+
+make: Unclosed substitution for VAR (, missing)
+
+make: Unclosed variable specification (expecting '}') for "VAR" (value "TheVariable") modifier S
+TheVariable
+TheVariable
exit status 0
diff -r 18dc63745187 -r 9103c5d87c70 usr.bin/make/unit-tests/moderrs.mk
--- a/usr.bin/make/unit-tests/moderrs.mk Wed Jul 29 14:23:59 2020 +0000
+++ b/usr.bin/make/unit-tests/moderrs.mk Wed Jul 29 18:48:47 2020 +0000
@@ -1,4 +1,4 @@
-# $Id: moderrs.mk,v 1.5 2020/07/28 00:13:29 rillig Exp $
+# $Id: moderrs.mk,v 1.6 2020/07/29 18:48:47 rillig Exp $
#
# various modifier error tests
@@ -12,6 +12,7 @@
all: modloop-close
all: modwords
all: modexclam
+all: mod-subst-delimiter
modunkn:
@echo "Expect: Unknown modifier 'Z'"
@@ -79,3 +80,22 @@
# If there were a fallback, the output would be "exclam",
# and the above would have produced an "Unknown modifier '!'".
@echo ${!:L:!=exclam}
+
+# XXX: For "${VAR:S", I wonder where the "(@ missing)" comes from.
+# This could be undefined behavior, but it's reproducible.
+mod-subst-delimiter:
+ @echo $@:
+ @echo ${VAR:S
+ @echo ${VAR:S,
+ @echo ${VAR:S,from
+ @echo ${VAR:S,from,
+ @echo ${VAR:S,from,to
+ @echo ${VAR:S,from,to,
+ @echo ${VAR:S,from,to,}
+ @echo 1: ${VAR:S
+ @echo 2: ${VAR:S,
+ @echo 3: ${VAR:S,from
+ @echo ${VAR:S,from,
+ @echo ${VAR:S,from,to
+ @echo ${VAR:S,from,to,
+ @echo ${VAR:S,from,to,}
diff -r 18dc63745187 -r 9103c5d87c70 usr.bin/make/unit-tests/modmisc.exp
--- a/usr.bin/make/unit-tests/modmisc.exp Wed Jul 29 14:23:59 2020 +0000
+++ b/usr.bin/make/unit-tests/modmisc.exp Wed Jul 29 18:48:47 2020 +0000
@@ -93,4 +93,29 @@
mod-break-many-words: 500
mod-remember: 1 2 3 1 2 3 1 2 3
mod-remember: 1 2 3, SAVED=3
+mod-gmtime:
+%Y
+2020
+%Y
+mod-localtime:
+%Y
+2020
+%Y
+mod-hash:
+make: Unknown modifier 'h'
+
+26bb0f5f
+12345
+make: Unknown modifier 'h'
+
+make: Unknown modifier 'h'
+
+mod-range:
+make: Unknown modifier 'r'
+
+1 2 3
+make: Unknown modifier 'r'
+
+make: Unknown modifier 'r'
+
exit status 0
diff -r 18dc63745187 -r 9103c5d87c70 usr.bin/make/unit-tests/modmisc.mk
--- a/usr.bin/make/unit-tests/modmisc.mk Wed Jul 29 14:23:59 2020 +0000
+++ b/usr.bin/make/unit-tests/modmisc.mk Wed Jul 29 18:48:47 2020 +0000
@@ -1,4 +1,4 @@
-# $Id: modmisc.mk,v 1.27 2020/07/27 21:54:25 rillig Exp $
+# $Id: modmisc.mk,v 1.28 2020/07/29 18:48:47 rillig Exp $
#
# miscellaneous modifier tests
@@ -28,6 +28,10 @@
all: mod-quote
all: mod-break-many-words
all: mod-remember
+all: mod-gmtime
+all: mod-localtime
+all: mod-hash
+all: mod-range
# See also sysv.mk.
modsysv:
@@ -251,3 +255,30 @@
mod-remember:
@echo $@: ${1 2 3:L:_:@var@${_}@}
@echo $@: ${1 2 3:L:@var@${var:_=SAVED:}@}, SAVED=${SAVED}
+
+mod-gmtime:
+ @echo $@:
+ @echo ${%Y:L:gmtim=1593536400} # modifier name too short
+ @echo ${%Y:L:gmtime=1593536400} # 2020-07-01T00:00:00Z
+ @echo ${%Y:L:gmtimer=1593536400} # modifier name too long
+
+mod-localtime:
+ @echo $@:
+ @echo ${%Y:L:localtim=1593536400} # modifier name too short
+ @echo ${%Y:L:localtime=1593536400} # 2020-07-01T00:00:00Z
+ @echo ${%Y:L:localtimer=1593536400} # modifier name too long
+
+mod-hash:
+ @echo $@:
+ @echo ${12345:L:has} # modifier name too short
+ @echo ${12345:L:hash} # ok
+ @echo ${12345:L:hash=SHA-256} # :hash does not accept '='
+ @echo ${12345:L:hasX} # misspelled
+ @echo ${12345:L:hashed} # modifier name too long
+
+mod-range:
+ @echo $@:
+ @echo ${a b c:L:rang} # modifier name too short
+ @echo ${a b c:L:range} # ok
+ @echo ${a b c:L:rango} # misspelled
+ @echo ${a b c:L:ranger} # modifier name too long
Home |
Main Index |
Thread Index |
Old Index