public void RunTests(IEnumerable <TestCase> testCasesToRun, string baseDir, string workingDir, string userParameters, bool isBeingDebugged, IDebuggedProcessLauncher debuggedLauncher, IProcessExecutor executor) { DebugUtils.AssertIsNotNull(userParameters, nameof(userParameters)); DebugUtils.AssertIsNotNull(workingDir, nameof(workingDir)); IDictionary <string, List <TestCase> > groupedTestCases = testCasesToRun.GroupByExecutable(); foreach (string executable in groupedTestCases.Keys) { string finalParameters = SettingsWrapper.ReplacePlaceholders(userParameters, executable); string finalWorkingDir = SettingsWrapper.ReplacePlaceholders(workingDir, executable); if (_canceled) { break; } _settings.ExecuteWithSettingsForExecutable(executable, () => { RunTestsFromExecutable( executable, finalWorkingDir, groupedTestCases[executable], finalParameters, isBeingDebugged, debuggedLauncher, executor); }, _logger); } }
private IEnumerable <TestResult> TryRunTests(string executable, string workingDir, bool isBeingDebugged, IDebuggedProcessLauncher debuggedLauncher, CommandLineGenerator.Args arguments, string resultXmlFile, IProcessExecutor executor, StreamingStandardOutputTestResultParser streamingParser) { List <string> consoleOutput; if (_settings.UseNewTestExecutionFramework) { DebugUtils.AssertIsNotNull(executor, nameof(executor)); consoleOutput = RunTestExecutableWithNewFramework(executable, workingDir, arguments, executor, streamingParser); } else { _processLauncher = new TestProcessLauncher(_logger, _settings, isBeingDebugged); consoleOutput = _processLauncher.GetOutputOfCommand(workingDir, executable, arguments.CommandLine, _settings.PrintTestOutput && !_settings.ParallelTestExecution, false, debuggedLauncher); } var remainingTestCases = arguments.TestCases.Except(streamingParser.TestResults.Select(tr => tr.TestCase)); var testResults = new TestResultCollector(_logger, _threadName) .CollectTestResults(remainingTestCases, resultXmlFile, consoleOutput, streamingParser.CrashedTestCase); testResults = testResults.OrderBy(tr => tr.TestCase.FullyQualifiedName).ToList(); return(testResults); }
private IEnumerable <TestResult> TryRunTests(string executable, string workingDir, string baseDir, bool isBeingDebugged, IDebuggedProcessLauncher debuggedLauncher, CommandLineGenerator.Args arguments, string resultXmlFile, IProcessExecutor executor, TestResultSplitter splitter) { List <string> consoleOutput; if (_settings.UseNewTestExecutionFramework) { DebugUtils.AssertIsNotNull(executor, nameof(executor)); consoleOutput = RunTestExecutableWithNewFramework(executable, workingDir, arguments, executor, splitter); } else { consoleOutput = new TestProcessLauncher(_logger, _settings, isBeingDebugged) .GetOutputOfCommand(workingDir, executable, arguments.CommandLine, _settings.PrintTestOutput && !_settings.ParallelTestExecution, false, debuggedLauncher); } var remainingTestCases = arguments.TestCases.Except(splitter.TestResults.Select(tr => tr.TestCase)); return(CollectTestResults(remainingTestCases, resultXmlFile, consoleOutput, baseDir, splitter.CrashedTestCase)); }
public void RunTests(IEnumerable <TestCase> allTestCases, IEnumerable <TestCase> testCasesToRun, string baseDir, string workingDir, string userParameters, bool isBeingDebugged, IDebuggedProcessLauncher debuggedLauncher) { DebugUtils.AssertIsNotNull(userParameters, nameof(userParameters)); DebugUtils.AssertIsNotNull(workingDir, nameof(workingDir)); IDictionary <string, List <TestCase> > groupedTestCases = testCasesToRun.GroupByExecutable(); TestCase[] allTestCasesAsArray = allTestCases as TestCase[] ?? allTestCases.ToArray(); foreach (string executable in groupedTestCases.Keys) { string finalParameters = SettingsWrapper.ReplacePlaceholders(userParameters, executable); string finalWorkingDir = SettingsWrapper.ReplacePlaceholders(workingDir, executable); if (_canceled) { break; } RunTestsFromExecutable( executable, finalWorkingDir, allTestCasesAsArray.Where(tc => tc.Source == executable), groupedTestCases[executable], baseDir, finalParameters, isBeingDebugged, debuggedLauncher); } }
public void RunTests(IEnumerable <TestCase> allTestCases, IEnumerable <TestCase> testCasesToRun, string baseDir, string userParameters, bool isBeingDebugged, IDebuggedProcessLauncher debuggedLauncher) { DebugUtils.AssertIsNotNull(userParameters, nameof(userParameters)); IDictionary <string, List <TestCase> > groupedTestCases = testCasesToRun.GroupByExecutable(); _testEnvironment.DebugInfo($"Computed testcase groups for {groupedTestCases.Keys.Count} executables"); TestCase[] allTestCasesAsArray = allTestCases as TestCase[] ?? allTestCases.ToArray(); foreach (string executable in groupedTestCases.Keys) { string finalParameters = userParameters.Replace(SettingsWrapper.ExecutablePlaceholder, executable); if (_canceled) { break; } RunTestsFromExecutable( executable, allTestCasesAsArray.Where(tc => tc.Source == executable), groupedTestCases[executable], baseDir, finalParameters, isBeingDebugged, debuggedLauncher); } }
public void RunTests(IEnumerable <TestCase> testCasesToRun, string baseDir, string workingDir, string userParameters, bool isBeingDebugged, IDebuggedProcessLauncher debuggedLauncher, IProcessExecutor executor) { DebugUtils.AssertIsNotNull(userParameters, nameof(userParameters)); DebugUtils.AssertIsNotNull(workingDir, nameof(workingDir)); IDictionary <string, List <TestCase> > groupedTestCases = testCasesToRun.GroupByExecutable(); foreach (string executable in groupedTestCases.Keys) { string finalParameters = SettingsWrapper.ReplacePlaceholders(userParameters, executable); string finalWorkingDir = SettingsWrapper.ReplacePlaceholders(workingDir, executable); if (_canceled) { break; } _settings.ExecuteWithSettingsForExecutable(executable, () => { var testsWithNoTestPropertySettings = groupedTestCases[executable]; if (_settings.TestPropertySettingsContainer != null) { testsWithNoTestPropertySettings = new List <TestCase>(); foreach (var testCase in groupedTestCases[executable]) { ITestPropertySettings settings; if (_settings.TestPropertySettingsContainer.TryGetSettings(testCase.FullyQualifiedName, out settings)) { RunTestsFromExecutable( executable, settings.WorkingDirectory, settings.Environment, Enumerable.Repeat(testCase, 1), finalParameters, isBeingDebugged, debuggedLauncher, executor); } else { testsWithNoTestPropertySettings.Add(testCase); } } } if (testsWithNoTestPropertySettings.Count != 0) { RunTestsFromExecutable( executable, finalWorkingDir, null, testsWithNoTestPropertySettings, finalParameters, isBeingDebugged, debuggedLauncher, executor); } }, _logger); } }