]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: Add TEST_REGRESS_CACHE_DIR.
authordtucker@openbsd.org <dtucker@openbsd.org>
Mon, 4 Jul 2022 09:10:31 +0000 (09:10 +0000)
committerDarren Tucker <dtucker@dtucker.net>
Mon, 4 Jul 2022 09:41:06 +0000 (19:41 +1000)
If set, it is used to cache regress test names that have succeeded and
skip those on a re-run.

OpenBSD-Regress-ID: a7570dd29a58df59f2cca647c3c2ec989b49f247

regress/test-exec.sh

index 9fb02d1cbc8c1cf06c4452b1dc3d6fca55880118..45b11734e508e3667f9cbb4ca7dbb67f419ace40 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: test-exec.sh,v 1.89 2022/01/06 22:14:25 dtucker Exp $
+#      $OpenBSD: test-exec.sh,v 1.90 2022/07/04 09:10:31 dtucker Exp $
 #      Placed in the Public Domain.
 
 #SUDO=sudo
@@ -250,6 +250,30 @@ if [ "x$TEST_REGRESS_LOGFILE" = "x" ]; then
        TEST_REGRESS_LOGFILE=$OBJ/regress.log
 fi
 
+# If set, keep track of successful tests and skip them them if we've
+# previously completed that test.
+if [ "x$TEST_REGRESS_CACHE_DIR" != "x" ]; then
+       if [ ! -d "$TEST_REGRESS_CACHE_DIR" ]; then
+               mkdir -p "$TEST_REGRESS_CACHE_DIR"
+       fi
+       TEST="`basename $SCRIPT .sh`"
+       CACHE="${TEST_REGRESS_CACHE_DIR}/${TEST}.cache"
+       for i in ${SSH} ${SSHD} ${SSHAGENT} ${SSHADD} ${SSHKEYGEN} ${SCP} \
+           ${SFTP} ${SFTPSERVER} ${SSHKEYSCAN}; do
+               case $i in
+               /*)     bin="$i" ;;
+               *)      bin="`which $i`" ;;
+               esac
+               if [ "$bin" -nt "$CACHE" ]; then
+                       rm -f "$CACHE"
+               fi
+       done
+       if [ -f "$CACHE" ]; then
+               echo ok cached $CACHE
+               exit 0
+       fi
+fi
+
 # truncate logfiles
 >$TEST_SSH_LOGFILE
 >$TEST_SSHD_LOGFILE
@@ -763,6 +787,9 @@ fi
 
 if [ $RESULT -eq 0 ]; then
        verbose ok $tid
+       if [ "x$CACHE" != "x" ]; then
+               touch "$CACHE"
+       fi
 else
        echo failed $tid
 fi