vibe-core/tests/issue-161-multiple-joiners.d
Sönke Ludwig a6bd4a0b1d Fix regression test w.r.t. slightly changed semantics of schedule().
A single call to yield() (which calls schedule() once) is not sufficient anymore to guarantee that both tasks have run far enough.
2020-03-14 22:30:41 +01:00

35 lines
575 B
D

/+ dub.sdl:
name "tests"
dependency "vibe-core" path=".."
debugVersions "VibeTaskLog" "VibeAsyncLog"
+/
module tests;
import vibe.core.core;
import vibe.core.log;
import vibe.core.sync;
import core.time;
import core.stdc.stdlib : exit;
void main()
{
setTimer(5.seconds, { logError("Test has hung."); exit(1); });
Task t;
runTask({
t = runTask({ sleep(100.msecs); });
t.join();
});
// let the outer task run and start the inner task
yield();
// let the outer task get another execution slice to write to t
yield();
assert(t && t.running);
t.join();
}