summaryrefslogtreecommitdiff
path: root/unit-tests/varmod-gmtime.mk
diff options
context:
space:
mode:
Diffstat (limited to 'unit-tests/varmod-gmtime.mk')
-rw-r--r--unit-tests/varmod-gmtime.mk35
1 files changed, 35 insertions, 0 deletions
diff --git a/unit-tests/varmod-gmtime.mk b/unit-tests/varmod-gmtime.mk
new file mode 100644
index 0000000000000..0a05ad58d9828
--- /dev/null
+++ b/unit-tests/varmod-gmtime.mk
@@ -0,0 +1,35 @@
+# $NetBSD: varmod-gmtime.mk,v 1.2 2020/08/16 12:48:55 rillig Exp $
+#
+# Tests for the :gmtime variable modifier, which formats a timestamp
+# using strftime(3).
+
+all: mod-gmtime
+all: mod-gmtime-indirect
+
+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
+ @echo ${%Y:L:gm=gm:M*}
+
+mod-gmtime-indirect:
+ @echo $@:
+
+ # As of 2020-08-16, it is not possible to pass the seconds via a
+ # variable expression. This is because parsing of the :gmtime
+ # modifier stops at the '$' and returns to ApplyModifiers.
+ #
+ # There, a colon would be skipped but not a dollar.
+ # Parsing therefore continues at the '$' of the ${:U159...}, looking
+ # for an ordinary variable modifier.
+ #
+ # At this point, the ${:U} is expanded and interpreted as a variable
+ # modifier, which results in the error message "Unknown modifier '1'".
+ #
+ # If ApplyModifier_Gmtime were to pass its argument through
+ # ParseModifierPart, this would work.
+ @echo ${%Y:L:gmtime=${:U1593536400}}
+
+all:
+ @:;