# GNU Guix --- Functional package management for GNU # Copyright © 2021 Andrew Tropin # # 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 . # # 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"< "$errorfile" then # This must not succeed. exit 1 else grep "$tmpfile:3:4: error: (packages): invalid field specifier" "$errorfile" fi cat > "$tmpfile"< "$errorfile" then # This must not succeed. exit 1 else # Guile 3.0.6 gets line/column numbers for 'read-error' wrong # (zero-indexed): . 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" < "$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"