in resharper/src/UnitTesting/GodotTestRunnerHost.cs [64:97]
private Task PrepareDebuggerServer(IUnitTestRun run)
{
var tcs = new TaskCompletionSource<bool>();
var taskLifetimeDef = Lifetime.Define(run.Lifetime);
taskLifetimeDef.SynchronizeWith(tcs);
var taskLifetime = taskLifetimeDef.Lifetime;
var solution = run.Launch.Solution;
var model = solution.GetProtocolSolution().GetGodotFrontendBackendModel();
solution.Locks.ExecuteOrQueueEx(taskLifetime, "AttachDebuggerToGodotEditor", () =>
{
if (!taskLifetime.IsAlive || model == null)
{
tcs.TrySetCanceled();
return;
}
var task = model.StartDebuggerServer.Start(taskLifetime, Unit.Instance);
task.Result.Advise(taskLifetime, result =>
{
if (!run.Lifetime.IsAlive)
tcs.TrySetCanceled();
else if (result.Result <= 0)
tcs.SetException(new Exception("Unable to start debugger."));
else
{
myDebugPort = result.Result;
tcs.SetResult(true);
}
});
});
return tcs.Task;
}