diff options
author | Ludovic Courtès <ludo@gnu.org> | 2014-06-26 22:23:36 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2014-06-27 00:12:40 +0200 |
commit | c1202fb1f9b805e7c7151e3d34bd4f86c86acd75 (patch) | |
tree | 29253c66940610c655738e083fb47fdf2bbec655 | |
parent | 80b77646a4af6073bb4a4e92f5d416716da20704 (diff) | |
download | guix-c1202fb1f9b805e7c7151e3d34bd4f86c86acd75.tar guix-c1202fb1f9b805e7c7151e3d34bd4f86c86acd75.tar.gz |
guix {system,offload}: Improve reporting of syntax errors.
* guix/scripts/system.scm (read-operating-system) <catch handler>: Add
case for 'syntax-error'. Correct message for default case.
* guix/scripts/offload.scm (build-machines) <catch handler>: Add case
for 'syntax-error'.
* tests/guix-system.sh: New file.
* Makefile.am (SH_TESTS): Add it.
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | guix/scripts/offload.scm | 4 | ||||
-rw-r--r-- | guix/scripts/system.scm | 6 | ||||
-rw-r--r-- | tests/guix-system.sh | 43 |
4 files changed, 53 insertions, 1 deletions
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 <ludo@gnu.org> +# +# 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 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"<<EOF +;; This is line 1, and the next one is line 2. + (operating-system) +;; The 'T' is at column 3. +EOF + +if guix system vm "$tmpfile" 2> "$errorfile" +then + # This must not succeed. + exit 1 +else + grep "$tmpfile:2:3:.*missing.* initializers" "$errorfile" +fi |