Failing test: an exception in a stop script messes up cleanup

This commit is contained in:
Tony Garnock-Jones 2018-04-25 20:13:54 +01:00
parent ce6cd58930
commit 928e48113f
1 changed files with 26 additions and 0 deletions

View File

@ -612,6 +612,32 @@
)
(lambda ()
;; Goal: no matter the circumstances (e.g. exception in a
;; stop script), we will never retract an assertion more or
;; fewer than the correct number of times.
;; Test cleanup after exception in stop script
;;
;; Correct output:
;;
;; inner gone
;; outer gone
;; middle gone
;;
;; (or some permutation of these) plus an exception report for the division by zero.
(assertion-struct layer (name))
(spawn (define root-facet (current-facet))
(assert (layer 'outer))
(on-start (react (assert (layer 'middle))
(on-start (flush!) (flush!) (stop-facet root-facet))
(on-stop (/ 1 0))
(on-start (react (assert (layer 'inner)))))))
(spawn (on (retracted (layer $x)) (printf "~a gone\n" x))))
#;(lambda ()
(spawn #:name 'factory-1
(on (asserted (list 'X 1))
(spawn #:name 'service-1