[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#60807] [PATCH v2] tests: reuse am_cv_filesystem_timestamp_resolutio

From: Jacob Bachmeyer
Subject: [bug#60807] [PATCH v2] tests: reuse am_cv_filesystem_timestamp_resolution
Date: Sat, 14 Jan 2023 21:43:13 -0600
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv: Gecko/20090807 SeaMonkey/1.1.17 Mnenhy/

Mike Frysinger wrote:
Rather than assume such coarse delays, re-use existing logic for
probing the current filesystem resolution.  This speeds up the
testsuite significantly.  On my system, it speeds -j1 up quite a
lot -- by ~30%.  While I didn't gather many samples to produce a
statistically significant distribution, my runs seem to be fairly
consistent with the values below with deviations of <1 minute.

diff --git a/t/ b/t/
index 3e0c04d12f18..2e139d75cf74 100644
--- a/t/
+++ b/t/
@@ -19,6 +19,18 @@
. +# Automake relies on high resolution timestamps in perl. If support isn't
+# available (see lib/Automake/, then fallback to coarse sleeps.
+# The creative quoting is to avoid spuriously triggering a failure in
+# the maintainer checks.
+case ${sleep_delay} in
+  if ! $PERL -e 'use Time::HiRes' 2>/dev/null; then
+    sleep='sleep ''2'
+  fi
+  ;;
 cat >> << 'END'

I seem to remember being told that "if !" is non-portable. Is there some other mechanism that ensures this is always run with Bash or might "if $PERL ... ; then :; else" be a better option for that line?

Also, you could write that Perl command as "$PERL -MTime::HiRes -e 1 2>/dev/null" and avoid needing any quotes there, although I suspect this is simply a matter of style and the comment refers to the quotes when setting $sleep.

You could also exploit that || short-circuits in the shell and replace the "if" block with " $PERL ... || sleep='sleep ''2' ". This allows you to directly execute a command on a false result and (I think) it is portable, too. (I half-expect someone to correct me on that along the lines of "the shell on Obscurix has a bug where || implicitly uses a subshell".)

-- Jacob

reply via email to

[Prev in Thread] Current Thread [Next in Thread]