diff mbox series

[bug#66793,1/3] tests: Make ‘guix time-machine’ test effective.

Message ID d55f09b93e2f727d841cd4fba075a1049738712f.1698501649.git.ludo@gnu.org
State New
Headers show
Series Make time-machine commit check cheaper; make test effective | expand

Commit Message

Ludovic Courtès Oct. 28, 2023, 2:08 p.m. UTC
The test as added in 79ec651a286c71a3d4c72be33a1f80e76a560031 had no
effect: first because ‘guix time-machine --commit=X’, not followed by a
command, does nothing, and second because the “! COMMAND” shell stanza
does not have the desired effect (see <https://issues.guix.gnu.org/62406>).

This change rewrites the test to make it effective.

* tests/guix-time-machine.sh: Rewrite.

Change-Id: Ib44a11331c8625e346139a236cffa699cdbd02f2
---
 tests/guix-time-machine.sh | 24 ++++++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)

Comments

Maxim Cournoyer Oct. 31, 2023, 3:06 p.m. UTC | #1
Hi,

Ludovic Courtès <ludo@gnu.org> writes:

> The test as added in 79ec651a286c71a3d4c72be33a1f80e76a560031 had no
> effect: first because ‘guix time-machine --commit=X’, not followed by a
> command, does nothing, and second because the “! COMMAND” shell stanza
> does not have the desired effect (see <https://issues.guix.gnu.org/62406>).

Interesting.  I had tested it, but I guess not with that script :-).

[...]

> -guix time-machine --version
> +if [ -d "$abs_top_srcdir/.git" ] \
> +   || guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null
> +then
> +    guix time-machine --version
> +else
> +    echo "This test requires networking or a local Git checkout; skipping." >&2
> +    exit 77
> +fi
>  
> -# Visiting a commit older than v1.0.0 fails.
> -! guix time-machine --commit=v0.15.0
> +if [ -d "$abs_top_srcdir/.git" ]
> +then
> +    EXTRA_OPTIONS="--url=$abs_top_srcdir"

Should the --url valE here be prefixed with "file://", just to make it
extra clear we are cloning from a local file?

> +else
> +    EXTRA_OPTIONS=""
> +fi
>  
> -exit 0
> +# Visiting a commit older than v1.0.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
> +
> +true

Otherwise LGTM.
Ludovic Courtès Nov. 5, 2023, 8:49 p.m. UTC | #2
Hi,

Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:

>> +if [ -d "$abs_top_srcdir/.git" ] \
>> +   || guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null
>> +then
>> +    guix time-machine --version
>> +else
>> +    echo "This test requires networking or a local Git checkout; skipping." >&2
>> +    exit 77
>> +fi
>>  
>> -# Visiting a commit older than v1.0.0 fails.
>> -! guix time-machine --commit=v0.15.0
>> +if [ -d "$abs_top_srcdir/.git" ]
>> +then
>> +    EXTRA_OPTIONS="--url=$abs_top_srcdir"
>
> Should the --url valE here be prefixed with "file://", just to make it
> extra clear we are cloning from a local file?

To my surprise, the test (which does little more than cloning the repo)
runs in 5s without file:// and in 30mn otherwise!  So I left the file://
prefix out and added a comment.

Ludo’.
diff mbox series

Patch

diff --git a/tests/guix-time-machine.sh b/tests/guix-time-machine.sh
index 8b62ef75ea..a78c1533fb 100644
--- a/tests/guix-time-machine.sh
+++ b/tests/guix-time-machine.sh
@@ -1,5 +1,6 @@ 
 # GNU Guix --- Functional package management for GNU
 # Copyright © 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+# Copyright © 2023 Ludovic Courtès <ludo@gnu.org>
 #
 # This file is part of GNU Guix.
 #
@@ -20,9 +21,24 @@ 
 # Test the 'guix time-machine' command-line utility.
 #
 
-guix time-machine --version
+if [ -d "$abs_top_srcdir/.git" ] \
+   || guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null
+then
+    guix time-machine --version
+else
+    echo "This test requires networking or a local Git checkout; skipping." >&2
+    exit 77
+fi
 
-# Visiting a commit older than v1.0.0 fails.
-! guix time-machine --commit=v0.15.0
+if [ -d "$abs_top_srcdir/.git" ]
+then
+    EXTRA_OPTIONS="--url=$abs_top_srcdir"
+else
+    EXTRA_OPTIONS=""
+fi
 
-exit 0
+# Visiting a commit older than v1.0.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
+
+true