summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schitter <ms@mur.at>2025-10-04 17:38:11 +0000
committerLudovic Courtès <ludo@gnu.org>2025-10-17 12:23:54 +0200
commit590eb9ef40dd2b902f966dba285262d1a0d9df29 (patch)
tree96dcd1b08e81132ccc4dba3e0e3e6581ba9446a4
parentf3b0398cf2c1616de90117243e381c04d944bf47 (diff)
tests: Increase test timeout and honor ‘GUIX_TESTS_BUILD_TIMEOUT’.
Rigid build time limits let some unit tests fail on slow hardware. Set default timeout to 5 minutes and make it configurable via `GUIX_TESTS_BUILD_TIMEOUT` environment variable. * guix/tests.scm (%tests-build-timeout): New variable. (open-connection-for-tests, call-with-external-store): Use it. * tests/guix-environment-container.sh, tests/guix-home.sh, tests/guix-pack-localstatedir.sh, tests/guix-pack-relocatable.sh: Use it to define ‘GUIX_BUILD_OPTIONS’. Change-Id: Iab63c2dcf4a3ad311a0cf2f39d7ea2ec158ddbb4 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r--guix/tests.scm14
-rw-r--r--tests/guix-environment-container.sh2
-rw-r--r--tests/guix-home.sh2
-rw-r--r--tests/guix-pack-localstatedir.sh2
-rw-r--r--tests/guix-pack-relocatable.sh2
5 files changed, 15 insertions, 7 deletions
diff --git a/guix/tests.scm b/guix/tests.scm
index ba8fa2ff304..36d38c3ed57 100644
--- a/guix/tests.scm
+++ b/guix/tests.scm
@@ -52,6 +52,7 @@
search-bootstrap-binary
mock
+ %tests-build-timeout
%test-substitute-urls
test-assertm
test-equalm
@@ -72,6 +73,13 @@
;;;
;;; Code:
+(define %tests-build-timeout
+ ;; Timeout limit for guix unit tests (default: 5 minutes)
+ (let ((default (* 5 60)))
+ (match (getenv "GUIX_TESTS_BUILD_TIMEOUT")
+ (#f default)
+ (str (or (string->number str) default)))))
+
(define %test-substitute-urls
;; URLs where to look for substitutes during tests.
(make-parameter
@@ -86,11 +94,11 @@
#f))
(let ((store (open-connection uri)))
;; Make sure we build everything by ourselves. When we build something,
- ;; it should take at most 3 minutes.
+ ;; it should take at most a few minutes.
(set-build-options store
#:use-substitutes? #f
#:substitute-urls (%test-substitute-urls)
- #:timeout (* 3 60))
+ #:timeout %tests-build-timeout)
;; Use the bootstrap Guile when running tests, so we don't end up
;; building everything in the temporary test store.
@@ -151,7 +159,7 @@ no external store to talk to."
(lambda ()
(when store
;; Make sure we don't end up rebuilding the world for those tests.
- (set-build-options store #:timeout (* 3 60)))
+ (set-build-options store #:timeout %tests-build-timeout))
(proc store))
(lambda ()
(when store-variable
diff --git a/tests/guix-environment-container.sh b/tests/guix-environment-container.sh
index 411f07754eb..5b89f8383b6 100644
--- a/tests/guix-environment-container.sh
+++ b/tests/guix-environment-container.sh
@@ -230,7 +230,7 @@ storedir="`guile -c '(use-modules (guix config))(display %storedir)'`"
localstatedir="`guile -c '(use-modules (guix config))(display %localstatedir)'`"
NIX_STORE_DIR="$storedir"
GUIX_DAEMON_SOCKET="$localstatedir/guix/daemon-socket/socket"
-GUIX_BUILD_OPTIONS="--timeout=180" # set an upper limit
+GUIX_BUILD_OPTIONS="--timeout=`guile -c '(use-modules (guix tests))(display %tests-build-timeout)'`"
export NIX_STORE_DIR GUIX_DAEMON_SOCKET GUIX_BUILD_OPTIONS
if ! guile -c '(use-modules (guix)) (exit (false-if-exception (open-connection)))'
diff --git a/tests/guix-home.sh b/tests/guix-home.sh
index 76befed6135..38cf46f9e5c 100644
--- a/tests/guix-home.sh
+++ b/tests/guix-home.sh
@@ -39,7 +39,7 @@ container_supported ()
localstatedir="$(guile -c '(use-modules (guix config))(display %localstatedir)')"
NIX_STORE_DIR="$(guile -c '(use-modules (guix config))(display %storedir)')"
GUIX_DAEMON_SOCKET="$localstatedir/guix/daemon-socket/socket"
-GUIX_BUILD_OPTIONS="--timeout=180" # set an upper limit
+GUIX_BUILD_OPTIONS="--timeout=`guile -c '(use-modules (guix tests))(display %tests-build-timeout)'`"
export NIX_STORE_DIR GUIX_DAEMON_SOCKET GUIX_BUILD_OPTIONS
# Run tests only when a "real" daemon is available.
diff --git a/tests/guix-pack-localstatedir.sh b/tests/guix-pack-localstatedir.sh
index c9e13bbc879..47e622dc2f5 100644
--- a/tests/guix-pack-localstatedir.sh
+++ b/tests/guix-pack-localstatedir.sh
@@ -31,7 +31,7 @@ storedir="`guile -c '(use-modules (guix config))(display %storedir)'`"
localstatedir="`guile -c '(use-modules (guix config))(display %localstatedir)'`"
NIX_STORE_DIR="$storedir"
GUIX_DAEMON_SOCKET="$localstatedir/guix/daemon-socket/socket"
-GUIX_BUILD_OPTIONS="--timeout=180" # set an upper limit
+GUIX_BUILD_OPTIONS="--timeout=`guile -c '(use-modules (guix tests))(display %tests-build-timeout)'`"
export NIX_STORE_DIR GUIX_DAEMON_SOCKET GUIX_BUILD_OPTIONS
if ! guile -c '(use-modules (guix)) (exit (false-if-exception (open-connection)))'
diff --git a/tests/guix-pack-relocatable.sh b/tests/guix-pack-relocatable.sh
index 228954bd9d7..bcec40c3a5b 100644
--- a/tests/guix-pack-relocatable.sh
+++ b/tests/guix-pack-relocatable.sh
@@ -32,7 +32,7 @@ storedir="`guile -c '(use-modules (guix config))(display %storedir)'`"
localstatedir="`guile -c '(use-modules (guix config))(display %localstatedir)'`"
NIX_STORE_DIR="$storedir"
GUIX_DAEMON_SOCKET="$localstatedir/guix/daemon-socket/socket"
-GUIX_BUILD_OPTIONS="--timeout=180"
+GUIX_BUILD_OPTIONS="--timeout=`guile -c '(use-modules (guix tests))(display %tests-build-timeout)'`"
export NIX_STORE_DIR GUIX_DAEMON_SOCKET GUIX_BUILD_OPTIONS
if ! guile -c '(use-modules (guix)) (exit (false-if-exception (open-connection)))'