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)))'

Reply via email to