Beispiel #1
0
        private IEnumerable <TestResult> RunAllTests(IEnumerable <TestCase> testCases, Dictionary <string, string> envVars,
                                                     string runSettings, bool forCoverage)
        {
            using (var runCompleteSignal = new AutoResetEvent(false))
            {
                var eventHandler = new RunEventHandler(runCompleteSignal, _logger);
                var strykerVsTestHostLauncher1 = new StrykerVsTestHostLauncher(null, envVars, _id);
                if (_flags.HasFlag(OptimizationFlags.AbortTestOnKill) && !forCoverage)
                {
                    eventHandler.TestsFailed += Handler_TestsFailed;
                }

                if (testCases != null)
                {
                    var finalTestCases1 =
                        _discoveredTests.Where(discoveredTest => testCases.Any(test => test.Id == discoveredTest.Id));
                    _vsTestConsole.RunTestsWithCustomTestHost(finalTestCases1, runSettings, eventHandler, strykerVsTestHostLauncher1);
                }
                else
                {
                    _vsTestConsole.RunTestsWithCustomTestHost(_sources, runSettings, eventHandler, strykerVsTestHostLauncher1);
                }

                // Test host exited signal comes after the run complete
                strykerVsTestHostLauncher1.WaitProcessExit();

                // At this point, run must have complete. Check signal for true
                runCompleteSignal.WaitOne();

                eventHandler.TestsFailed -= Handler_TestsFailed;

                return(eventHandler.TestResults);
            }
        }