public UnitTestResult RunTest(TestContext testContext, IDnxTestProvider testProvider) { if (!projectHasTestRunner) { string message = GettextCatalog.GetString("Project has no testRunner defined."); DnxOutputPad.WriteError(message); throw new ApplicationException(message); } using (var runner = new DnxTestRunner(testContext, testProvider)) { runner.WorkingDirectory = project.BaseDirectory; runner.Run(); while (!runner.IsCompleted) { if (testContext.Monitor.CancellationToken.IsCancellationRequested) { break; } Thread.Sleep(100); } Status = TestStatus.Ready; return(runner.TestResult); } }
void OnMessageReceived(Message m) { try { if (m.MessageType == TestMessageTypes.TestSessionConnected) { testServer.StartTestDiscovery(); } else if (m.MessageType == TestMessageTypes.TestDiscoveryTestFound) { var val = m.Payload.ToObject <TestDiscovered> (); tests.Add(val); testFound = true; shutdownTimer.Stop(); } else if (m.MessageType == TestMessageTypes.TestDiscoveryCompleted) { discoveryCompleted = true; testServer.TerminateTestSession(); DnxOutputPad.WriteText(GettextCatalog.GetString("Test discovery completed.")); OnDiscoveryCompleted(); Stop(); } else if (m.MessageType == "Error") { var val = m.Payload.ToObject <Microsoft.DotNet.Tools.Test.ErrorMessage> (); DnxOutputPad.WriteError(val.Message); OnDiscoveryFailed(); } } catch (Exception ex) { LoggingService.LogError("Test loader error", ex); DnxOutputPad.WriteError(ex.Message); OnDiscoveryFailed(); } }
void ShutdownTimerElapsed(object sender, ElapsedEventArgs e) { if (!discoveryCompleted && !testFound) { DnxOutputPad.WriteError("Timed out waiting for dotnet test to discover any tests."); OnDiscoveryFailed(); } }
void RunDotNetCoreTest(string projectDirectory) { string arguments = String.Format(@"test --port {0} --parentProcessId {1} --no-build", testServer.Port, Process.GetCurrentProcess().Id); DnxOutputPad.WriteText(GettextCatalog.GetString("Starting test discovery...")); DnxOutputPad.WriteText(String.Format("{0} {1}", DnxServices.ProjectService.CurrentDotNetRuntimePath, arguments)); dotNetTestOperation = Runtime.ProcessService.StartConsoleProcess( DnxServices.ProjectService.CurrentDotNetRuntimePath, arguments, projectDirectory, new DotNetCoreOutputOperationConsole(), null, DotNetTestProcessExited); }
void OnDotNetTestProcessExitedBeforeCompleted() { DnxOutputPad.WriteError("dotnet test exited before discovery completed."); OnDiscoveryFailed(); }
void OnError(Exception ex) { LoggingService.LogError("Test loader error", ex); DnxOutputPad.WriteError(ex.Message); OnDiscoveryFailed(); }