diff --git a/tests/Tgstation.Server.Tests/Instance/WatchdogTest.cs b/tests/Tgstation.Server.Tests/Instance/WatchdogTest.cs index 5dafb4d567..e0aafb368e 100644 --- a/tests/Tgstation.Server.Tests/Instance/WatchdogTest.cs +++ b/tests/Tgstation.Server.Tests/Instance/WatchdogTest.cs @@ -84,19 +84,27 @@ namespace Tgstation.Server.Tests.Instance File.Delete(dumpFiles.Single()); KillDD(true); - Task dumpTask = null; + TaskCompletionSource jobTcs = new TaskCompletionSource(); TaskCompletionSource killTaskStarted = new TaskCompletionSource(); var killTask = Task.Run(() => { killTaskStarted.SetResult(null); - while (dumpTask?.IsCompleted != true) + while (jobTcs.Task?.IsCompleted != true) KillDD(false); }); - await killTaskStarted.Task; - dumpTask = instanceClient.DreamDaemon.CreateDump(cancellationToken); - await killTask; - var job = await WaitForJob(await dumpTask, 20, true, null, cancellationToken); + Job job; + try + { + await killTaskStarted.Task; + var dumpTask = instanceClient.DreamDaemon.CreateDump(cancellationToken); + await killTask; + job = await WaitForJob(await dumpTask, 20, true, null, cancellationToken); + } + finally + { + jobTcs.SetResult(null); + } Assert.IsTrue(job.ErrorCode == ErrorCode.DreamDaemonOffline || job.ErrorCode == ErrorCode.GCoreFailure, $"{job.ErrorCode}: {job.ExceptionDetails}"); await Task.Delay(TimeSpan.FromSeconds(20), cancellationToken);