guix_mirror_bot pushed a commit to branch master
in repository guix.
commit 590eb9ef40dd2b902f966dba285262d1a0d9df29
Author: Martin Schitter <[email protected]>
AuthorDate: Sat Oct 4 17:38:11 2025 +0000
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 <[email protected]>
---
guix/tests.scm | 14 +++++++++++---
tests/guix-environment-container.sh | 2 +-
tests/guix-home.sh | 2 +-
tests/guix-pack-localstatedir.sh | 2 +-
tests/guix-pack-relocatable.sh | 2 +-
5 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/guix/tests.scm b/guix/tests.scm
index ba8fa2ff30..36d38c3ed5 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 411f07754e..5b89f8383b 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 76befed613..38cf46f9e5 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 c9e13bbc87..47e622dc2f 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 228954bd9d..bcec40c3a5 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)))'