|
|
|
|
@ -399,6 +399,36 @@
|
|
|
|
|
what-i-got |
|
|
|
|
"*Vroom vroom!* You drive your blue Fork Explorist!")) |
|
|
|
|
|
|
|
|
|
;; this is for testing for broken promise contagion across vats |
|
|
|
|
(define (^lessgood-car-factory bcom company-name) |
|
|
|
|
(define (^car bcom model color) |
|
|
|
|
(lambda () |
|
|
|
|
(format #f "*Vroom vroom!* You drive your ~a ~a ~a!" |
|
|
|
|
color company-name model))) |
|
|
|
|
(define (make-car model color) |
|
|
|
|
(error "Your car exploded on the factory floor! Ooops! (Expected for test)") |
|
|
|
|
(spawn ^car model color)) |
|
|
|
|
make-car) |
|
|
|
|
|
|
|
|
|
(let ((what-i-got #f) |
|
|
|
|
(borked-factory |
|
|
|
|
(a-vat 'spawn ^lessgood-car-factory "Forked"))) |
|
|
|
|
(b-vat 'run |
|
|
|
|
(lambda () |
|
|
|
|
(on (<- (<- borked-factory "Exploder" "red")) |
|
|
|
|
(lambda (val) |
|
|
|
|
(set! what-i-got `(ok ,val))) |
|
|
|
|
#:catch |
|
|
|
|
(lambda (err) |
|
|
|
|
(set! what-i-got `(err ,err)))))) |
|
|
|
|
(sleep 0.05) |
|
|
|
|
(test-true |
|
|
|
|
"Broken promise contagion works across vats" |
|
|
|
|
(match what-i-got |
|
|
|
|
((list 'err _err) |
|
|
|
|
#t)))) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(define (try-remote-on-promise . resolve-args) |
|
|
|
|
(define fulfilled-val #f) |
|
|
|
|
(define broken-val #f) |
|
|
|
|
|