[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#50912] [PATCH] tests: Add tests for guix home cli.
From: |
Andrew Tropin |
Subject: |
[bug#50912] [PATCH] tests: Add tests for guix home cli. |
Date: |
Tue, 05 Oct 2021 12:47:19 +0300 |
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@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
Description: PGP signature