Module Name: src
Committed By: rillig
Date: Sat Aug 19 10:33:32 UTC 2023
Modified Files:
src/usr.bin/make/unit-tests: directive-export-gmake.exp
directive-export-gmake.mk varmod-gmtime.mk
Log Message:
tests/make: provide instructions for reproducing bug in gmtime
The test is not enabled because its results differ too much between the
platforms.
To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 \
src/usr.bin/make/unit-tests/directive-export-gmake.exp
cvs rdiff -u -r1.3 -r1.4 \
src/usr.bin/make/unit-tests/directive-export-gmake.mk
cvs rdiff -u -r1.16 -r1.17 src/usr.bin/make/unit-tests/varmod-gmtime.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/directive-export-gmake.exp
diff -u src/usr.bin/make/unit-tests/directive-export-gmake.exp:1.1 src/usr.bin/make/unit-tests/directive-export-gmake.exp:1.2
--- src/usr.bin/make/unit-tests/directive-export-gmake.exp:1.1 Fri Oct 2 20:34:59 2020
+++ src/usr.bin/make/unit-tests/directive-export-gmake.exp Sat Aug 19 10:33:32 2023
@@ -1 +1,4 @@
-exit status 0
+make: "directive-export-gmake.mk" line 74: Invalid line type
+make: Fatal errors encountered -- cannot continue
+make: stopped in unit-tests
+exit status 1
Index: src/usr.bin/make/unit-tests/directive-export-gmake.mk
diff -u src/usr.bin/make/unit-tests/directive-export-gmake.mk:1.3 src/usr.bin/make/unit-tests/directive-export-gmake.mk:1.4
--- src/usr.bin/make/unit-tests/directive-export-gmake.mk:1.3 Tue Nov 17 20:16:44 2020
+++ src/usr.bin/make/unit-tests/directive-export-gmake.mk Sat Aug 19 10:33:32 2023
@@ -1,4 +1,4 @@
-# $NetBSD: directive-export-gmake.mk,v 1.3 2020/11/17 20:16:44 rillig Exp $
+# $NetBSD: directive-export-gmake.mk,v 1.4 2023/08/19 10:33:32 rillig Exp $
#
# Tests for the export directive (without leading dot), as in GNU make.
@@ -60,5 +60,16 @@ export VAR=an ${UNDEF} variable
. error
.endif
-all:
- @:;
+
+# The body of the .for loop expands to 'export VAR=${:U1}', and the 'export'
+# directive is only recognized if the line does not contain a ':', to allow
+# 'export' to be a regular target.
+.for value in 1
+# FIXME: The below error message is missing all details. But even if it
+# contained the text of the line, it would be confusing because at the point
+# where that error message is printed, all expressions from the line have
+# already been expanded as part of the dependency line parsing, which in this
+# case hides the ':' from the error message.
+# expect+1: Invalid line type
+export VAR=${value}
+.endfor
Index: src/usr.bin/make/unit-tests/varmod-gmtime.mk
diff -u src/usr.bin/make/unit-tests/varmod-gmtime.mk:1.16 src/usr.bin/make/unit-tests/varmod-gmtime.mk:1.17
--- src/usr.bin/make/unit-tests/varmod-gmtime.mk:1.16 Sat Aug 19 08:19:25 2023
+++ src/usr.bin/make/unit-tests/varmod-gmtime.mk Sat Aug 19 10:33:32 2023
@@ -1,4 +1,4 @@
-# $NetBSD: varmod-gmtime.mk,v 1.16 2023/08/19 08:19:25 rillig Exp $
+# $NetBSD: varmod-gmtime.mk,v 1.17 2023/08/19 10:33:32 rillig Exp $
#
# Tests for the :gmtime variable modifier, which formats a timestamp
# using strftime(3) in UTC.
@@ -194,5 +194,33 @@
# * ':gmtime' reports the correct timezone offset '+0000'.
# * ':gmtime' reports different seconds since the Epoch, and the '%s'
# value cannot be derived from the '%F %T %z' values.
+.if 0 # only for reference, due to platform differences
+export TZ=UTC
+. for t in ${%s:L:gmtime} ${%s:L:localtime}
+TIMESTAMPS+= $t
+. endfor
+export TZ=Europe/Berlin
+. for t in ${%s:L:gmtime} ${%s:L:localtime}
+TIMESTAMPS+= $t
+. endfor
+export TZ=UTC
+. for t in ${%s:L:gmtime} ${%s:L:localtime}
+TIMESTAMPS+= $t
+. endfor
+export TZ=America/Los_Angeles
+. for t in ${%s:L:gmtime} ${%s:L:localtime}
+TIMESTAMPS+= $t
+. endfor
+export TZ=UTC
+. for t in ${%s:L:gmtime} ${%s:L:localtime}
+TIMESTAMPS+= $t
+. endfor
+. info ${TIMESTAMPS:u}
+. for a b in ${TIMESTAMPS:[1]} ${TIMESTAMPS:@t@$t $t@} ${TIMESTAMPS:[-1]}
+. if $a > $b
+. warning timestamp $a > $b
+. endif
+. endfor
+.endif
all: