chiark / gitweb /
test/example/check: Reset times for regen tests
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 29 Dec 2019 12:27:00 +0000 (12:27 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 29 Dec 2019 16:04:44 +0000 (16:04 +0000)
In principle, on a filesystem with poor time resolution, the updates
to the input files might have the same timestamp as the output files.
Things would then not be regenerated.

Work around this by resetting all timestamps in the build tree to
1s ago.  This should ensure that exactly the one file whose edit we
are simulating seems, to make, to have been changed.

There is a remaining possible problem: if our last actual change to
the subdirmk source tree is less than 1s ago, this might rebuild too
much.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
tests/example/check

index b7cf6df..143fe05 100755 (executable)
@@ -26,12 +26,20 @@ make -j4 all check
 
 : ----- testing rebuild on input change -----
 
+reset_times () {
+       find -type f -print0 \
+       | xargs -0 \
+       touch -hmd 'now -1 seconds' --
+}
+
 : ----- for-check-1 -----
+reset_times
 echo 'for-check-1:' >>../src/for-test.sd.mk
 make -j4 for-check-1
 grep '^for-check-1:' src/Subdir.mk || false
 
 : ----- for-check-2 -----
+reset_times
 echo 'for-check-2:' >>../lib/for-test.mk.in
 make -j4 for-check-2
 grep '^for-check-2:' lib/for-test.mk || false