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);
            }
        }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
        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);
            }
        }