mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-05-27 19:41:50 +02:00
inferior: Distinguish inferior exceptions.
This avoids ambiguities when looking at a backtrace where the exception
was actually thrown by an inferior in a very different context.
* guix/inferior.scm (&inferior-exception): New condition type.
(read-repl-response): Add optional 'inferior' parameter. Raise
'&inferior-exception' instead of rethrowing to KEY when receiving an
'exception' message.
(read-inferior-response): Pass INFERIOR to 'read-repl-response'.
* tests/inferior.scm ("&inferior-exception"): New test.
This commit is contained in:
+12
-1
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -61,6 +61,17 @@
|
||||
(close-inferior inferior)
|
||||
(list a (inferior-object? b))))))
|
||||
|
||||
(test-equal "&inferior-exception"
|
||||
'(a b c d)
|
||||
(let ((inferior (open-inferior %top-builddir
|
||||
#:command "scripts/guix")))
|
||||
(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)
|
||||
|
||||
Reference in New Issue
Block a user