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