diff --git a/Makefile.am b/Makefile.am index f454ae98e4..1e5aa8bc20 100644 --- a/Makefile.am +++ b/Makefile.am @@ -154,6 +154,7 @@ SH_TESTS = \ tests/guix-gc.sh \ tests/guix-hash.sh \ tests/guix-package.sh \ + tests/guix-system.sh \ tests/guix-archive.sh \ tests/guix-authenticate.sh diff --git a/guix/scripts/offload.scm b/guix/scripts/offload.scm index d87cad3f23..18af511ed8 100644 --- a/guix/scripts/offload.scm +++ b/guix/scripts/offload.scm @@ -121,6 +121,10 @@ determined." '() (leave (_ "failed to open machine file '~a': ~a~%") file (strerror err))))) + (('syntax-error proc message properties form . rest) + (let ((loc (source-properties->location properties))) + (leave (_ "~a: ~a~%") + (location->string loc) message))) (_ (leave (_ "failed to load machine file '~a': ~s~%") file args)))))) diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index c71ad4cbe9..1bedc2c68a 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -66,8 +66,12 @@ (let ((err (system-error-errno args))) (leave (_ "failed to open operating system file '~a': ~a~%") file (strerror err)))) + (('syntax-error proc message properties form . rest) + (let ((loc (source-properties->location properties))) + (leave (_ "~a: ~a~%") + (location->string loc) message))) (_ - (leave (_ "failed to load machine file '~a': ~s~%") + (leave (_ "failed to load operating system file '~a': ~s~%") file args)))))) (define* (copy-closure store item target diff --git a/tests/guix-system.sh b/tests/guix-system.sh new file mode 100644 index 0000000000..b5476476e1 --- /dev/null +++ b/tests/guix-system.sh @@ -0,0 +1,43 @@ +# GNU Guix --- Functional package management for GNU +# Copyright © 2014 Ludovic Courtès +# +# 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 the daemon and its interaction with 'guix substitute-binary'. +# + +set -e + +guix system --version + +tmpfile="t-guix-system-$$" +errorfile="t-guix-system-error-$$" +trap 'rm -f "$tmpfile" "$errorfile"' EXIT + +cat > "$tmpfile"< "$errorfile" +then + # This must not succeed. + exit 1 +else + grep "$tmpfile:2:3:.*missing.* initializers" "$errorfile" +fi