diff --git a/test/test_dev.ml b/test/test_dev.ml index 996001e..162e992 100644 --- a/test/test_dev.ml +++ b/test/test_dev.ml @@ -2839,6 +2839,20 @@ let () = ignore (ask "(:op \"describe\")"); contains_sub (Buffer.contents seen) "42")) then fail "--two-process: the reload was never installed"; + (* And the one verb this shape cannot have. Running [main] again means + waking a thread that parked inside this process, and here the program + is a child: when it finishes it is gone, and there is nothing to wake. + Refused by naming what this daemon is rather than with the message a + merged one gives, because "the program is already running" would send + somebody back to try again after it had exited — and [--x86] arrives + here too, since it refuses the merged daemon for the -rdynamic reason + given below. *) + let r = ask "(:op \"rerun\")" in + let why = Option.value ~default:(status r) (Wire.string_field r "message") in + if status r <> "error" then + fail "--two-process answered a rerun it cannot perform" + else if not (contains_sub why "two-process") then + fail "--two-process refuses a rerun as: %s" why; ignore (ask "(:op \"close\")"); Unix.close tc end;