vst3-host: the late-exit test expects Windows' exit order

module_exit_shutdown asserts that the exit handler alone runs the module
exit too late. That holds where exit handlers share one list. Windows
runs the executable's handlers before a DLL's own, so the fixture's late
state is still alive and the child exits cleanly; the test failed there.
The Windows case now asserts the clean exit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Ian Martin 2026-10-12 10:34:41 -06:00
parent f55010d244
commit ced57be723
1 changed files with 8 additions and 2 deletions

View File

@ -38,7 +38,13 @@ fn main() {
assert!(up_front.status.success(), "shutdown before exit: {:?}\n{}", up_front.status, String::from_utf8_lossy(&up_front.stderr));
let too_late = run("exit-handler");
let err = String::from_utf8_lossy(&too_late.stderr);
assert_eq!(too_late.status.code(), Some(3), "the exit handler alone comes too late: {err}");
assert!(err.contains("module exit after the process exit tore down state"), "{err}");
if cfg!(windows) {
// Windows runs the executable's exit handlers before a DLL's own, so the fixture's late
// state is still there when the host's exit handler runs its module exit.
assert!(too_late.status.success(), "the exit handler alone: {:?}\n{err}", too_late.status);
} else {
assert_eq!(too_late.status.code(), Some(3), "the exit handler alone comes too late: {err}");
assert!(err.contains("module exit after the process exit tore down state"), "{err}");
}
println!("module_exit_shutdown: ok");
}