diff options
author | Ludovic Courtès <ludo@gnu.org> | 2021-01-21 00:05:29 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2021-01-21 00:14:38 +0100 |
commit | 98d3abe7440717724263cacca8c36e9f43d53fcc (patch) | |
tree | e6c17869b7014cfd8ddf83570d772958b2d10abd /tests | |
parent | 074a201c33f822a7ab59512e7ee8b301204ff732 (diff) |
repl: Fix exception handling for interpreted code.
The 'stack' variable could be #f when code is interpreted, which in
practice happens when running in "legacy" mode--i.e., when
'open-inferior' invokes "guile" instead of "guix repl".
* guix/repl.scm (send-repl-response)[handle-exception]: Check whether
STACK is true before passing it to 'stack->frames'.
* tests/inferior.scm ("&inferior-exception, legacy mode"): New test.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/inferior.scm | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/inferior.scm b/tests/inferior.scm index fb12111343..7c3d730d0c 100644 --- a/tests/inferior.scm +++ b/tests/inferior.scm @@ -75,6 +75,18 @@ (inferior-eval '(throw 'a 'b 'c 'd) inferior) 'badness))) +(test-equal "&inferior-exception, legacy mode" + '(a b c d) + ;; Omit #:command to open an inferior in "legacy" mode, where Guile runs + ;; directly. + (let ((inferior (open-inferior %top-builddir))) + (guard (c ((inferior-exception? c) + (close-inferior inferior) + (and (eq? inferior (inferior-exception-inferior c)) + (inferior-exception-arguments c)))) + (inferior-eval '(throw 'a 'b 'c 'd) inferior) + 'badness))) + (test-equal "inferior-packages" (take (sort (fold-packages (lambda (package lst) (cons (list (package-name package) |