* [bug#74394] [PATCH 0/2] Skip slow tests by default and run 'check' in Git pre-push hook.
@ 2024-11-17 12:03 Maxim Cournoyer
2024-11-17 12:21 ` [bug#74394] [PATCH 1/2] build: Exclude expensive tests in check target by default Maxim Cournoyer
2024-11-17 12:21 ` [bug#74394] [PATCH 2/2] etc: Ensure test suite passes in pre-push git hook Maxim Cournoyer
0 siblings, 2 replies; 3+ messages in thread
From: Maxim Cournoyer @ 2024-11-17 12:03 UTC (permalink / raw)
To: 74394; +Cc: Maxim Cournoyer
Hello,
This is a simple change that should ensure test suite breakages are detected
as early as possible and avoid tests breaking changes to be pushed. This is
made possible by skipping a few expensive tests suite, bringing down the total
test time to about 1 minute on a fast machine.
We could call it a "distributed CI" approach ;-).
Note: I initially pursued an Automake or Make-based approach, but it ended up
far from trivial, hitting old issues such as [0] along the way. This solution
simply puts the skip logic in the tests that must be skipped (a one liner).
To run the complete test suite including the slow tests (as is the case prior
this change):
make check WITH_SLOW_TESTS=1
[0] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=74387
Maxim Cournoyer (2):
build: Exclude expensive tests in check target by default.
etc: Ensure test suite passes in pre-push git hook.
Makefile.am | 9 ++++++++-
etc/git/pre-push | 1 +
tests/guix-home.sh | 5 +++++
tests/guix-package.sh | 5 +++++
tests/guix-system.sh | 4 ++++
tests/guix-time-machine.sh | 4 +++-
6 files changed, 26 insertions(+), 2 deletions(-)
base-commit: 94133452aa49de672d69950b2e1a99432111074c
--
2.46.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* [bug#74394] [PATCH 1/2] build: Exclude expensive tests in check target by default.
2024-11-17 12:03 [bug#74394] [PATCH 0/2] Skip slow tests by default and run 'check' in Git pre-push hook Maxim Cournoyer
@ 2024-11-17 12:21 ` Maxim Cournoyer
2024-11-17 12:21 ` [bug#74394] [PATCH 2/2] etc: Ensure test suite passes in pre-push git hook Maxim Cournoyer
1 sibling, 0 replies; 3+ messages in thread
From: Maxim Cournoyer @ 2024-11-17 12:21 UTC (permalink / raw)
To: 74394; +Cc: Maxim Cournoyer, Maxim Cournoyer
This reduces the test time of 'make -j check' from ~22 minutes to a bit more than one
minute on a fast machine.
* Makefile.am [CAN_RUN_TESTS] (check-local): New target.
* tests/guix-home.sh: Skip unless WITH_SLOW_TESTS is 1.
* tests/guix-package.sh: Likewise.
* tests/guix-system.sh: Likewise.
* tests/guix-time-machine.sh: Exclude one command.
Change-Id: Ieb61bf5d54aedd4bd32f93da792a4ac7dd8b9e7d
---
Makefile.am | 9 ++++++++-
tests/guix-home.sh | 5 +++++
tests/guix-package.sh | 5 +++++
tests/guix-system.sh | 4 ++++
tests/guix-time-machine.sh | 4 +++-
5 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index e94ba87797..4bec4d4a06 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -14,7 +14,7 @@
# Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
# Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
# Copyright © 2019, 2023 Efraim Flashner <efraim@flashner.co.il>
-# Copyright © 2020, 2021, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+# Copyright © 2020, 2021, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
# Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
# Copyright © 2021 Andrew Tropin <andrew@trop.in>
# Copyright © 2023 Clément Lassieur <clement@lassieur.org>
@@ -668,6 +668,13 @@ tests/guix-gc.log: \
$(patsubst %.sh,%.log,$(filter-out tests/guix-gc.sh,$(SH_TESTS))) \
$(SCM_TESTS:%.scm=%.log)
+check-local:
+ @echo
+ @if [ "$$WITH_SLOW_TESTS" != 1 ]; then \
+ echo "Skipping slow tests; set WITH_SLOW_TESTS to 1 to run them"; \
+ fi
+ @echo
+
else !CAN_RUN_TESTS
TESTS =
diff --git a/tests/guix-home.sh b/tests/guix-home.sh
index 649d811a0c..1c7b6da1cd 100644
--- a/tests/guix-home.sh
+++ b/tests/guix-home.sh
@@ -22,6 +22,11 @@
# Test the 'guix home' using the external store, if any.
#
+# This test is very expensive as guix-home appears to refer to the
+# current-guix package, which must be built the first time it runs (~20
+# minutes on a fast machine).
+test "$WITH_SLOW_TESTS" != 1 && exit 77
+
set -e
guix home --version
diff --git a/tests/guix-package.sh b/tests/guix-package.sh
index 945d59cdfb..5b9af19153 100644
--- a/tests/guix-package.sh
+++ b/tests/guix-package.sh
@@ -22,6 +22,11 @@
# Test the `guix package' command-line utility.
#
+# This test contains expensive operations such as 'guix package -A', which
+# cumulate into a total test time of multiple minutes (about 2 minutes on a
+# fast machine).
+test "$WITH_SLOW_TESTS" != 1 && exit 77
+
guix package --version
readlink_base ()
diff --git a/tests/guix-system.sh b/tests/guix-system.sh
index 99147cf332..bd343ec4bc 100644
--- a/tests/guix-system.sh
+++ b/tests/guix-system.sh
@@ -22,6 +22,10 @@
# Test 'guix system', mostly error reporting.
#
+# This test is expensive as it builds the images of multiple operating
+# systems; it takes more than a minute to run on a fast machine.
+test "$WITH_SLOW_TESTS" != 1 && exit 77
+
set -e
guix system --version
diff --git a/tests/guix-time-machine.sh b/tests/guix-time-machine.sh
index df75c681da..70a2443376 100644
--- a/tests/guix-time-machine.sh
+++ b/tests/guix-time-machine.sh
@@ -41,6 +41,8 @@ fi
# Visiting a commit older than v0.16.0 must fail (this test is expensive
# because it clones the whole repository).
-guix time-machine -q --commit=v0.15.0 $EXTRA_OPTIONS -- describe && false
+if [ "$WITH_SLOW_TESTS" = 1 ]; then
+ guix time-machine -q --commit=v0.15.0 $EXTRA_OPTIONS -- describe && false
+fi
true
--
2.46.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [bug#74394] [PATCH 2/2] etc: Ensure test suite passes in pre-push git hook.
2024-11-17 12:03 [bug#74394] [PATCH 0/2] Skip slow tests by default and run 'check' in Git pre-push hook Maxim Cournoyer
2024-11-17 12:21 ` [bug#74394] [PATCH 1/2] build: Exclude expensive tests in check target by default Maxim Cournoyer
@ 2024-11-17 12:21 ` Maxim Cournoyer
1 sibling, 0 replies; 3+ messages in thread
From: Maxim Cournoyer @ 2024-11-17 12:21 UTC (permalink / raw)
To: 74394; +Cc: Maxim Cournoyer, Maxim Cournoyer
* etc/git/pre-push: Run 'make check' on as many cores as available, which
takes about 1 minute on a fast machine.
Change-Id: I60e77d18bc885e8013daae70580126465169b1c6
---
etc/git/pre-push | 1 +
1 file changed, 1 insertion(+)
diff --git a/etc/git/pre-push b/etc/git/pre-push
index 325b23854b..74273ee180 100755
--- a/etc/git/pre-push
+++ b/etc/git/pre-push
@@ -33,6 +33,7 @@ do
case "$2" in
*.gnu.org*)
set -e
+ make check -j$(nproc)
make check-channel-news
exec guix git authenticate
exit 127
--
2.46.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-11-17 12:24 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-17 12:03 [bug#74394] [PATCH 0/2] Skip slow tests by default and run 'check' in Git pre-push hook Maxim Cournoyer
2024-11-17 12:21 ` [bug#74394] [PATCH 1/2] build: Exclude expensive tests in check target by default Maxim Cournoyer
2024-11-17 12:21 ` [bug#74394] [PATCH 2/2] etc: Ensure test suite passes in pre-push git hook Maxim Cournoyer
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).