private void RunBoostTests()

in BoostTestAdapter/BoostTestExecutor.cs [338:399]


        private void RunBoostTests(IEnumerable<TestRun> testBatches, IRunContext runContext, IFrameworkHandle frameworkHandle)
        {
            BoostTestAdapterSettings settings = BoostTestAdapterSettingsProvider.GetSettings(runContext);

            foreach (TestRun batch in testBatches)
            {
                if (_cancelled)
                {
                    break;
                }

                DateTimeOffset start = new DateTimeOffset(DateTime.Now);

                try
                {
                    Logger.Info(((runContext.IsBeingDebugged) ? Resources.Debugging : Resources.Executing), string.Join(", ", batch.Tests));

                    using (TemporaryFile report = new TemporaryFile(batch.Arguments.ReportFile))
                    using (TemporaryFile log    = new TemporaryFile(batch.Arguments.LogFile))
                    using (TemporaryFile stdout = new TemporaryFile(batch.Arguments.StandardOutFile))
                    using (TemporaryFile stderr = new TemporaryFile(batch.Arguments.StandardErrorFile))
                    {
                        Logger.Debug(Resources.WorkingDirectory, batch.Arguments.WorkingDirectory ?? "(null)");
                        Logger.Debug(Resources.ReportFile, batch.Arguments.ReportFile);
                        Logger.Debug(Resources.LogFile, batch.Arguments.LogFile);
                        Logger.Debug(Resources.StdOutFile, batch.Arguments.StandardOutFile ?? "(null)");
                        Logger.Debug(Resources.StdErrFile, batch.Arguments.StandardErrorFile ?? "(null)");

                        Logger.Debug(Resources.CmdLineArguments, batch.Arguments.ToString() ?? "(null)");

                        // Execute the tests
                        if (ExecuteTests(batch, runContext, frameworkHandle))
                        {
                            if (settings.PostTestDelay > 0)
                            {
                                Thread.Sleep(settings.PostTestDelay);
                            }

                            foreach (VSTestResult result in GenerateTestResults(batch, start, settings))
                            {
                                // Identify test result to Visual Studio Test framework
                                frameworkHandle.RecordResult(result);
                            }
                        }
                    }
                }
                catch (Boost.Runner.TimeoutException ex)
                {
                    foreach (VSTestCase testCase in batch.Tests)
                    {
                        VSTestResult testResult = GenerateTimeoutResult(testCase, ex);
                        testResult.StartTime = start;

                        frameworkHandle.RecordResult(testResult);
                    }
                }
                catch (Exception ex)
                {
                    Logger.Exception(ex, Resources.BatchException, batch.Source, string.Join(", ", batch.Tests), ex.Message);
                }
            }
        }