diff --git a/Tests/Cosmos.TestRunner.Core/Engine.Run.cs b/Tests/Cosmos.TestRunner.Core/Engine.Run.cs index 4b6cdb19b..0102cdd27 100644 --- a/Tests/Cosmos.TestRunner.Core/Engine.Run.cs +++ b/Tests/Cosmos.TestRunner.Core/Engine.Run.cs @@ -17,8 +17,9 @@ namespace Cosmos.TestRunner.Core public int AllowedSecondsInKernel = 30; public List RunTargets = new List(); - private void ExecuteKernel(string assemblyFileName, RunConfiguration configuration) + private bool ExecuteKernel(string assemblyFileName, RunConfiguration configuration) { + var xResult = true; OutputHandler.ExecuteKernelStart(assemblyFileName); try { @@ -58,17 +59,21 @@ namespace Cosmos.TestRunner.Core if (!mKernelResultSet) { OutputHandler.SetKernelTestResult(false, e.ToString()); + mKernelResult = false; } if (e is TaskFailedException) { - return; + return mKernelResult; } OutputHandler.UnhandledException(e); } finally { OutputHandler.ExecuteKernelEnd(assemblyFileName); + } + xResult = mKernelResult; + return xResult; } diff --git a/Tests/Cosmos.TestRunner.Core/Engine.Running.cs b/Tests/Cosmos.TestRunner.Core/Engine.Running.cs index 61c97bf63..e9e313b53 100644 --- a/Tests/Cosmos.TestRunner.Core/Engine.Running.cs +++ b/Tests/Cosmos.TestRunner.Core/Engine.Running.cs @@ -101,6 +101,7 @@ namespace Cosmos.TestRunner.Core } private volatile bool mKernelResultSet; + private volatile bool mKernelResult; private int mSucceededAssertions; private void ChannelPacketReceived(byte arg1, byte arg2, byte[] arg3) diff --git a/Tests/Cosmos.TestRunner.Core/Engine.cs b/Tests/Cosmos.TestRunner.Core/Engine.cs index 890c02b27..9b74dff49 100644 --- a/Tests/Cosmos.TestRunner.Core/Engine.cs +++ b/Tests/Cosmos.TestRunner.Core/Engine.cs @@ -42,7 +42,7 @@ namespace Cosmos.TestRunner.Core public OutputHandlerBasic OutputHandler; - public void Execute() + public bool Execute() { if (OutputHandler == null) { @@ -62,6 +62,7 @@ namespace Cosmos.TestRunner.Core OutputHandler.RunConfigurationStart(xConfig); try { + var xResult = true; foreach (var xAssemblyFile in mKernelsToRun) { mBaseWorkingDirectory = Path.Combine(Path.GetDirectoryName(typeof(Engine).Assembly.Location), "WorkingDirectory"); @@ -71,8 +72,9 @@ namespace Cosmos.TestRunner.Core } Directory.CreateDirectory(mBaseWorkingDirectory); - ExecuteKernel(xAssemblyFile, xConfig); + xResult &= ExecuteKernel(xAssemblyFile, xConfig); } + return xResult; } catch (Exception e) { diff --git a/Users/Matthijs/DebugCompiler/MyEngine.cs b/Users/Matthijs/DebugCompiler/MyEngine.cs index da4641649..69eeb808b 100644 --- a/Users/Matthijs/DebugCompiler/MyEngine.cs +++ b/Users/Matthijs/DebugCompiler/MyEngine.cs @@ -17,9 +17,8 @@ namespace DebugCompiler xEngine.KernelsToRun.Add(kernelToRun.Assembly.Location); xEngine.OutputHandler = new TestOutputHandler(); + Assert.IsTrue(xEngine.Execute()); - Assert.IsNotNull(kernelToRun); - Assert.Fail("Cannot run kernel '" + kernelToRun.FullName + "'!"); } private class TestOutputHandler: OutputHandlerFullTextBase