From 4d59596a1c5f6b20870e619cbf67068ac7dd64ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 7 Nov 2021 15:56:19 +0100 Subject: [PATCH] ui: 'load*' correctly reports 'read-error' in all cases. Previously, 'read-error' exceptions other than "missing closing paren" would not be reported; instead, we'd directly call (exit 1) without printing anything. Fixes . Reported by Alice BRENON . * guix/ui.scm (report-load-error): Report the error without re-throwing upon 'read-error'. * tests/guix-build.sh: Add test. --- guix/ui.scm | 3 ++- tests/guix-build.sh | 12 +++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/guix/ui.scm b/guix/ui.scm index b01bb3d587..bd999103ff 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -377,7 +377,8 @@ ARGS is the list of arguments received by the 'throw' handler." (+ 2 (string-contains message ": "))))) (format (current-error-port) (G_ "~amissing closing parenthesis~%") location)) - (apply throw args))) + (report-error (G_ "read error while loading '~a': ~a~%") + file (apply format #f message args)))) (('syntax-error proc message properties form subform . rest) (let ((loc (source-properties->location properties))) (report-error loc (G_ "~s: ~a~%") diff --git a/tests/guix-build.sh b/tests/guix-build.sh index e20702c521..46c8afc901 100644 --- a/tests/guix-build.sh +++ b/tests/guix-build.sh @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright © 2012, 2013, 2014, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès +# Copyright © 2012, 2013, 2014, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès # Copyright © 2020 Marius Bakke # Copyright © 2021 Chris Marusich # @@ -77,6 +77,16 @@ module_dir="t-guix-build-$$" mkdir "$module_dir" trap "rm -rf $module_dir" EXIT +# Check error reporting for '-f'. +cat > "$module_dir/foo.scm" < "$module_dir/stderr" +grep "read error" "$module_dir/stderr" +rm "$module_dir/stderr" "$module_dir/foo.scm" + +# Check 'GUIX_PACKAGE_PATH' & co. cat > "$module_dir/foo.scm"<