diff --git a/Tests/CodexContinuousTests/Program.cs b/Tests/CodexContinuousTests/Program.cs index 3db3b15e..339480d2 100644 --- a/Tests/CodexContinuousTests/Program.cs +++ b/Tests/CodexContinuousTests/Program.cs @@ -15,8 +15,15 @@ public class Program Cancellation.Cts.Cancel(); }; - - runner.Run(); + + try + { + runner.Run(); + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + } Console.WriteLine("Done."); } } diff --git a/Tests/CodexContinuousTests/SingleTestRun.cs b/Tests/CodexContinuousTests/SingleTestRun.cs index b525a722..2ab5a338 100644 --- a/Tests/CodexContinuousTests/SingleTestRun.cs +++ b/Tests/CodexContinuousTests/SingleTestRun.cs @@ -59,7 +59,7 @@ namespace ContinuousTests overviewLog.Error("Test infra failure: SingleTestRun failed with " + ex); Environment.Exit(-1); } - }); + }, nameof(SingleTestRun)); } private void RunTest(Action resultHandler) diff --git a/Tests/CodexContinuousTests/TaskFactory.cs b/Tests/CodexContinuousTests/TaskFactory.cs index 749cab70..e0be06e2 100644 --- a/Tests/CodexContinuousTests/TaskFactory.cs +++ b/Tests/CodexContinuousTests/TaskFactory.cs @@ -5,11 +5,23 @@ private readonly object taskLock = new(); private readonly List activeTasks = new List(); - public void Run(Action action) + public void Run(Action action, string name) { lock (taskLock) { - activeTasks.Add(Task.Run(action).ContinueWith(CleanupTask, null)); + activeTasks.Add(Task.Run(() => CatchException(action, name)).ContinueWith(CleanupTask, null)); + } + } + + private void CatchException(Action action, string name) + { + try + { + action(); + } + catch (Exception ex) + { + Console.WriteLine($"Exception in task '{name}': " + ex); } } diff --git a/Tests/CodexContinuousTests/TestLoop.cs b/Tests/CodexContinuousTests/TestLoop.cs index afa438b5..7e44f73f 100644 --- a/Tests/CodexContinuousTests/TestLoop.cs +++ b/Tests/CodexContinuousTests/TestLoop.cs @@ -69,7 +69,7 @@ namespace ContinuousTests overviewLog.Error("Test infra failure: TestLoop failed with " + ex); Environment.Exit(-1); } - }); + }, nameof(TestLoop)); } private void StartTest()