GNU bug report logs -
#50912
[PATCH] tests: Add tests for guix home cli.
Previous Next
Reported by: Andrew Tropin <andrew <at> trop.in>
Date: Thu, 30 Sep 2021 06:48:01 UTC
Severity: normal
Tags: patch
Done: Oleg Pykhalov <go.wigust <at> gmail.com>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 50912 in the body.
You can then email your comments to 50912 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
guix-patches <at> gnu.org
:
bug#50912
; Package
guix-patches
.
(Thu, 30 Sep 2021 06:48:01 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Andrew Tropin <andrew <at> trop.in>
:
New bug report received and forwarded. Copy sent to
guix-patches <at> gnu.org
.
(Thu, 30 Sep 2021 06:48:01 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
* tests/guix-home.sh: New file.
* Makefile.am (SH_TESTS): Add tests/guix-home.sh.
---
Makefile.am | 1 +
tests/guix-home.sh | 99 ++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 100 insertions(+)
create mode 100644 tests/guix-home.sh
diff --git a/Makefile.am b/Makefile.am
index b66789fa0b..5bf2567dc8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -546,6 +546,7 @@ SH_TESTS = \
tests/guix-package-aliases.sh \
tests/guix-package-net.sh \
tests/guix-system.sh \
+ tests/guix-home.sh \
tests/guix-archive.sh \
tests/guix-authenticate.sh \
tests/guix-environment.sh \
diff --git a/tests/guix-home.sh b/tests/guix-home.sh
new file mode 100644
index 0000000000..cb015c907f
--- /dev/null
+++ b/tests/guix-home.sh
@@ -0,0 +1,99 @@
+# GNU Guix --- Functional package management for GNU
+# Copyright © 2021 Andrew Tropin <andrew <at> trop.in>
+#
+# This file is part of GNU Guix.
+#
+# GNU Guix is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or (at
+# your option) any later version.
+#
+# GNU Guix is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+#
+# Test 'guix home' cli.
+#
+
+set -e
+
+guix home --version
+
+tmpfile="t-guix-home-$$"
+errorfile="t-guix-home-error-$$"
+
+# Note: This directory is chosen outside $builddir so that relative file name
+# canonicalization doesn't mess up with 'current-source-directory', used by
+# 'local-file' ('load' forces 'relative' for
+# %FILE-PORT-NAME-CANONICALIZATION.)
+tmpdir="${TMPDIR:-/tmp}/t-guix-home-$$"
+mkdir "$tmpdir"
+
+trap 'rm -f "$tmpfile" "$errorfile" "$tmpdir"/*; rmdir "$tmpdir"' EXIT
+
+# Reporting of syntax errors.
+
+cat > "$tmpfile"<<EOF
+;; This is line 1, and the next one is line 2.
+ (home-environment
+ (packages))
+;; The 'T' is at column 3.
+EOF
+
+if guix home build "$tmpfile" 2> "$errorfile"
+then
+ # This must not succeed.
+ exit 1
+else
+ grep "$tmpfile:3:4: error: (packages): invalid field specifier" "$errorfile"
+fi
+
+
+cat > "$tmpfile"<<EOF
+;; This is line 1, and the next one is line 2.
+ (home-environment
+;; This is line 3, and there is no closing paren!
+EOF
+
+if guix home build "$tmpfile" 2> "$errorfile"
+then
+ # This must not succeed.
+ exit 1
+else
+ # Guile 3.0.6 gets line/column numbers for 'read-error' wrong
+ # (zero-indexed): <https://bugs.gnu.org/48089>.
+ grep "$tmpfile:4:1: missing closing paren" "$errorfile" || \
+ grep "$tmpfile:3:0: missing closing paren" "$errorfile"
+fi
+
+# Reporting of duplicate system service declaration.
+
+cat > "$tmpfile" <<EOF
+(use-modules (gnu))
+(use-modules (gnu home-services shepherd))
+
+(home-environment
+ (services (list (service home-shepherd-service-type)
+ (simple-service 'test-shepherd-extension
+ home-shepherd-service-type '())
+ (service home-shepherd-service-type)
+ (service home-shepherd-service-type))))
+EOF
+
+if guix home build "$tmpfile" 2> "$errorfile"
+then
+ # This must not succeed.
+ exit 1
+else
+ grep "guix home: error: more than one target service of type 'home-shepherd'" "$errorfile"
+fi
+
+# Searching.
+
+guix home search mcron | grep "^name: home-mcron"
+guix home search job manager | grep "^name: home-mcron"
--
2.33.0
[signature.asc (application/pgp-signature, inline)]
Information forwarded
to
guix-patches <at> gnu.org
:
bug#50912
; Package
guix-patches
.
(Thu, 30 Sep 2021 06:58:02 GMT)
Full text and
rfc822 format available.
Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Added a few checks very similar to what I found in tests/guix-system.sh,
just to be sure that cli at least works somehow. I think it will be
enough for beginnig and propose to add new test cases, when we face any
issues to prevent regressions or when new functionality is added.
[signature.asc (application/pgp-signature, inline)]
Information forwarded
to
guix-patches <at> gnu.org
:
bug#50912
; Package
guix-patches
.
(Fri, 01 Oct 2021 13:57:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 50912 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
On Thu, Sep 30 2021, Andrew Tropin wrote:
> * tests/guix-home.sh: New file.
> * Makefile.am (SH_TESTS): Add tests/guix-home.sh.
> ---
>
>
> Makefile.am | 1 +
> tests/guix-home.sh | 99 ++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 100 insertions(+)
> create mode 100644 tests/guix-home.sh
>
> diff --git a/Makefile.am b/Makefile.am
> index b66789fa0b..5bf2567dc8 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -546,6 +546,7 @@ SH_TESTS = \
> tests/guix-package-aliases.sh \
> tests/guix-package-net.sh \
> tests/guix-system.sh \
> + tests/guix-home.sh \
> tests/guix-archive.sh \
> tests/guix-authenticate.sh \
> tests/guix-environment.sh \
> diff --git a/tests/guix-home.sh b/tests/guix-home.sh
> new file mode 100644
> index 0000000000..cb015c907f
> --- /dev/null
> +++ b/tests/guix-home.sh
> @@ -0,0 +1,99 @@
> +# GNU Guix --- Functional package management for GNU
> +# Copyright © 2021 Andrew Tropin <andrew <at> trop.in>
> +#
> +# This file is part of GNU Guix.
> +#
> +# GNU Guix is free software; you can redistribute it and/or modify it
> +# under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 3 of the License, or (at
> +# your option) any later version.
> +#
> +# GNU Guix is distributed in the hope that it will be useful, but
> +# WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
> +
> +#
> +# Test 'guix home' cli.
> +#
> +
> +set -e
> +
> +guix home --version
> +
> +tmpfile="t-guix-home-$$"
> +errorfile="t-guix-home-error-$$"
> +
> +# Note: This directory is chosen outside $builddir so that relative file name
> +# canonicalization doesn't mess up with 'current-source-directory', used by
> +# 'local-file' ('load' forces 'relative' for
> +# %FILE-PORT-NAME-CANONICALIZATION.)
> +tmpdir="${TMPDIR:-/tmp}/t-guix-home-$$"
> +mkdir "$tmpdir"
> +
> +trap 'rm -f "$tmpfile" "$errorfile" "$tmpdir"/*; rmdir "$tmpdir"' EXIT
> +
> +# Reporting of syntax errors.
> +
> +cat > "$tmpfile"<<EOF
> +;; This is line 1, and the next one is line 2.
> + (home-environment
> + (packages))
> +;; The 'T' is at column 3.
> +EOF
> +
> +if guix home build "$tmpfile" 2> "$errorfile"
> +then
> + # This must not succeed.
> + exit 1
> +else
> + grep "$tmpfile:3:4: error: (packages): invalid field specifier" "$errorfile"
> +fi
> +
> +
> +cat > "$tmpfile"<<EOF
> +;; This is line 1, and the next one is line 2.
> + (home-environment
> +;; This is line 3, and there is no closing paren!
> +EOF
> +
> +if guix home build "$tmpfile" 2> "$errorfile"
> +then
> + # This must not succeed.
> + exit 1
> +else
> + # Guile 3.0.6 gets line/column numbers for 'read-error' wrong
> + # (zero-indexed): <https://bugs.gnu.org/48089>.
> + grep "$tmpfile:4:1: missing closing paren" "$errorfile" || \
> + grep "$tmpfile:3:0: missing closing paren" "$errorfile"
> +fi
> +
> +# Reporting of duplicate system service declaration.
> +
> +cat > "$tmpfile" <<EOF
> +(use-modules (gnu))
> +(use-modules (gnu home-services shepherd))
> +
> +(home-environment
> + (services (list (service home-shepherd-service-type)
> + (simple-service 'test-shepherd-extension
> + home-shepherd-service-type '())
> + (service home-shepherd-service-type)
> + (service home-shepherd-service-type))))
> +EOF
> +
> +if guix home build "$tmpfile" 2> "$errorfile"
> +then
> + # This must not succeed.
> + exit 1
> +else
> + grep "guix home: error: more than one target service of type 'home-shepherd'" "$errorfile"
> +fi
> +
> +# Searching.
> +
> +guix home search mcron | grep "^name: home-mcron"
> +guix home search job manager | grep "^name: home-mcron"
> --
> 2.33.0
The tests themselves LGTM, but some additional things should probably be
tested
* The provided file doesn’t return a <home-environment>
guix home build /tmp/test.scm
guix home: error: '/tmp/test.scm' does not return a home environment
* Maybe something like ‘Reporting unmet shepherd requirements’ in
‘guix-system.sh’
‘guix home import’ should also be tested, but we will have to wait for
the fixes[1] to get merged first.
[1]: <https://issues.guix.gnu.org/50873>
[signature.asc (application/pgp-signature, inline)]
Information forwarded
to
guix-patches <at> gnu.org
:
bug#50912
; Package
guix-patches
.
(Tue, 05 Oct 2021 09:48:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 50912 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
On 2021-10-01 15:56, Xinglu Chen wrote:
> On Thu, Sep 30 2021, Andrew Tropin wrote:
>
>> * tests/guix-home.sh: New file.
>> * Makefile.am (SH_TESTS): Add tests/guix-home.sh.
>> ---
>>
>>
>> Makefile.am | 1 +
>> tests/guix-home.sh | 99 ++++++++++++++++++++++++++++++++++++++++++++++
>> 2 files changed, 100 insertions(+)
>> create mode 100644 tests/guix-home.sh
>>
>> diff --git a/Makefile.am b/Makefile.am
>> index b66789fa0b..5bf2567dc8 100644
>> --- a/Makefile.am
>> +++ b/Makefile.am
>> @@ -546,6 +546,7 @@ SH_TESTS = \
>> tests/guix-package-aliases.sh \
>> tests/guix-package-net.sh \
>> tests/guix-system.sh \
>> + tests/guix-home.sh \
>> tests/guix-archive.sh \
>> tests/guix-authenticate.sh \
>> tests/guix-environment.sh \
>> diff --git a/tests/guix-home.sh b/tests/guix-home.sh
>> new file mode 100644
>> index 0000000000..cb015c907f
>> --- /dev/null
>> +++ b/tests/guix-home.sh
>> @@ -0,0 +1,99 @@
>> +# GNU Guix --- Functional package management for GNU
>> +# Copyright © 2021 Andrew Tropin <andrew <at> trop.in>
>> +#
>> +# This file is part of GNU Guix.
>> +#
>> +# GNU Guix is free software; you can redistribute it and/or modify it
>> +# under the terms of the GNU General Public License as published by
>> +# the Free Software Foundation; either version 3 of the License, or (at
>> +# your option) any later version.
>> +#
>> +# GNU Guix is distributed in the hope that it will be useful, but
>> +# WITHOUT ANY WARRANTY; without even the implied warranty of
>> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>> +# GNU General Public License for more details.
>> +#
>> +# You should have received a copy of the GNU General Public License
>> +# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
>> +
>> +#
>> +# Test 'guix home' cli.
>> +#
>> +
>> +set -e
>> +
>> +guix home --version
>> +
>> +tmpfile="t-guix-home-$$"
>> +errorfile="t-guix-home-error-$$"
>> +
>> +# Note: This directory is chosen outside $builddir so that relative file name
>> +# canonicalization doesn't mess up with 'current-source-directory', used by
>> +# 'local-file' ('load' forces 'relative' for
>> +# %FILE-PORT-NAME-CANONICALIZATION.)
>> +tmpdir="${TMPDIR:-/tmp}/t-guix-home-$$"
>> +mkdir "$tmpdir"
>> +
>> +trap 'rm -f "$tmpfile" "$errorfile" "$tmpdir"/*; rmdir "$tmpdir"' EXIT
>> +
>> +# Reporting of syntax errors.
>> +
>> +cat > "$tmpfile"<<EOF
>> +;; This is line 1, and the next one is line 2.
>> + (home-environment
>> + (packages))
>> +;; The 'T' is at column 3.
>> +EOF
>> +
>> +if guix home build "$tmpfile" 2> "$errorfile"
>> +then
>> + # This must not succeed.
>> + exit 1
>> +else
>> + grep "$tmpfile:3:4: error: (packages): invalid field specifier" "$errorfile"
>> +fi
>> +
>> +
>> +cat > "$tmpfile"<<EOF
>> +;; This is line 1, and the next one is line 2.
>> + (home-environment
>> +;; This is line 3, and there is no closing paren!
>> +EOF
>> +
>> +if guix home build "$tmpfile" 2> "$errorfile"
>> +then
>> + # This must not succeed.
>> + exit 1
>> +else
>> + # Guile 3.0.6 gets line/column numbers for 'read-error' wrong
>> + # (zero-indexed): <https://bugs.gnu.org/48089>.
>> + grep "$tmpfile:4:1: missing closing paren" "$errorfile" || \
>> + grep "$tmpfile:3:0: missing closing paren" "$errorfile"
>> +fi
>> +
>> +# Reporting of duplicate system service declaration.
>> +
>> +cat > "$tmpfile" <<EOF
>> +(use-modules (gnu))
>> +(use-modules (gnu home-services shepherd))
>> +
>> +(home-environment
>> + (services (list (service home-shepherd-service-type)
>> + (simple-service 'test-shepherd-extension
>> + home-shepherd-service-type '())
>> + (service home-shepherd-service-type)
>> + (service home-shepherd-service-type))))
>> +EOF
>> +
>> +if guix home build "$tmpfile" 2> "$errorfile"
>> +then
>> + # This must not succeed.
>> + exit 1
>> +else
>> + grep "guix home: error: more than one target service of type 'home-shepherd'" "$errorfile"
>> +fi
>> +
>> +# Searching.
>> +
>> +guix home search mcron | grep "^name: home-mcron"
>> +guix home search job manager | grep "^name: home-mcron"
>> --
>> 2.33.0
>
> The tests themselves LGTM, but some additional things should probably be
> tested
>
> * The provided file doesn’t return a <home-environment>
>
> guix home build /tmp/test.scm
> guix home: error: '/tmp/test.scm' does not return a home environment
Good idea, probably I'll provide a few more test, like successful
building of a simple home environment, when migration to new namespace
will be finished.
>
> * Maybe something like ‘Reporting unmet shepherd requirements’ in
> ‘guix-system.sh’
>
> ‘guix home import’ should also be tested, but we will have to wait for
> the fixes[1] to get merged first.
>
> [1]: <https://issues.guix.gnu.org/50873>
Perhaps it can be done in the patch series with fixes for guix home
import, just after this test script is merged. BTW, thank you for
cleaning it up.
[signature.asc (application/pgp-signature, inline)]
Reply sent
to
Oleg Pykhalov <go.wigust <at> gmail.com>
:
You have taken responsibility.
(Tue, 19 Oct 2021 14:13:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Andrew Tropin <andrew <at> trop.in>
:
bug acknowledged by developer.
(Tue, 19 Oct 2021 14:13:02 GMT)
Full text and
rfc822 format available.
Message #19 received at 50912-done <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Hi,
Andrew Tropin <andrew <at> trop.in> writes:
> * tests/guix-home.sh: New file.
> * Makefile.am (SH_TESTS): Add tests/guix-home.sh.
> ---
>
>
> Makefile.am | 1 +
> tests/guix-home.sh | 99 ++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 100 insertions(+)
> create mode 100644 tests/guix-home.sh
>
> diff --git a/Makefile.am b/Makefile.am
> index b66789fa0b..5bf2567dc8 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -546,6 +546,7 @@ SH_TESTS = \
> tests/guix-package-aliases.sh \
> tests/guix-package-net.sh \
> tests/guix-system.sh \
> + tests/guix-home.sh \
> tests/guix-archive.sh \
> tests/guix-authenticate.sh \
> tests/guix-environment.sh \
[…]
I copied 'guix home search' tests and replaced everything else with
another test suite as discussed at https://issues.guix.gnu.org/50967#35
Closing the current issue.
Oleg.
[signature.asc (application/pgp-signature, inline)]
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Wed, 17 Nov 2021 12:24:04 GMT)
Full text and
rfc822 format available.
This bug report was last modified 3 years and 229 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.