aboutsummaryrefslogtreecommitdiffstats
path: root/tests/gpgscm/repl.scm
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2016-11-18 12:36:23 +0000
committerJustus Winter <[email protected]>2016-12-08 16:22:50 +0000
commite7429b1ced0c69fa7901f888f8dc25f00fc346a4 (patch)
treead455250ea1a3d6ff28436301e3c21f9a7eb0857 /tests/gpgscm/repl.scm
parentgpgscm: Keep a history of calls for error messages. (diff)
downloadgnupg-e7429b1ced0c69fa7901f888f8dc25f00fc346a4.tar.gz
gnupg-e7429b1ced0c69fa7901f888f8dc25f00fc346a4.zip
gpgscm: Better error reporting.
* tests/gpgscm/ffi.scm: Move the customized exception handling and atexit logic... * tests/gpgscm/init.scm: ... here. (throw): Record the current history. (throw'): New function that is history-aware. (rethrow): New function. (*error-hook*): Use the new throw'. * tests/gpgscm/main.c (load): Fix error handling. (main): Save and use the 'sc->retcode' as exit code. * tests/gpgscm/repl.scm (repl): Print call history. * tests/gpgscm/scheme.c (_Error_1): Make a snapshot of the history, use it to provide a accurate location of the expression causing the error at runtime, and hand the history trace to the '*error-hook*'. (opexe_5): Tag all lists at parse time with the current location. * tests/gpgscm/tests.scm: Update calls to 'throw', use 'rethrow'. Signed-off-by: Justus Winter <[email protected]>
Diffstat (limited to 'tests/gpgscm/repl.scm')
-rw-r--r--tests/gpgscm/repl.scm9
1 files changed, 8 insertions, 1 deletions
diff --git a/tests/gpgscm/repl.scm b/tests/gpgscm/repl.scm
index 78b8151a0..84454dc7c 100644
--- a/tests/gpgscm/repl.scm
+++ b/tests/gpgscm/repl.scm
@@ -34,7 +34,14 @@
(read (open-input-string next)))))
(if (not (eof-object? c))
(begin
- (catch (echo "Error:" *error*)
+ (catch (begin
+ (display (car *error*))
+ (when (and (cadr *error*)
+ (not (null? (cadr *error*))))
+ (display ": ")
+ (write (cadr *error*)))
+ (newline)
+ (vm-history-print (caddr *error*)))
(echo " ===>" (eval c environment)))
(exit (loop ""))))
(exit (loop next)))))))))