summaryrefslogtreecommitdiff
path: root/tests/inferior.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-01-21 00:05:29 +0100
committerLudovic Courtès <ludo@gnu.org>2021-01-21 00:14:38 +0100
commit98d3abe7440717724263cacca8c36e9f43d53fcc (patch)
treee6c17869b7014cfd8ddf83570d772958b2d10abd /tests/inferior.scm
parent074a201c33f822a7ab59512e7ee8b301204ff732 (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/inferior.scm')
-rw-r--r--tests/inferior.scm12
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)