diff --git a/Tests/CodexContinuousTests/Program.cs b/Tests/CodexContinuousTests/Program.cs index 3db3b15..339480d 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 b525a72..2ab5a33 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 749cab7..e0be06e 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 afa438b..7e44f73 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()