/// <summary> /// Encapsulates logic for executing. /// </summary> public override void Execute() { DirectoryInfo distributedExecutionDirectory = TestRecords.GetDistributedDirectory(DistributionKey, RunDirectory); TestRecords tests = TestRecords.Load(distributedExecutionDirectory); ExecutionSettings settings = new ExecutionSettings(); settings.Tests = tests; settings.TestBinariesDirectory = TestBinariesDirectory; settings.DebugTests = DebugTests; settings.DebugSti = DebugSti; settings.WaitForDebugger = WaitForDebugger; settings.LogFilesPath = distributedExecutionDirectory; settings.JitDebuggerCommand = JitDebuggerCommand; settings.TimeoutMultiplier = TimeoutMultiplier; settings.ContinueExecution = ContinueExecution; settings.CodeCoverageEnabled = CodeCoverage; settings.CodeCoverageImport = CodeCoverageImport; settings.RerunFailures = RerunFailures; settings.SkipDxDiag = SkipDxDiag; CodeCoverageUtilities.ValidateForCodeCoverage(CodeCoverage, CodeCoverageImport); tests.Execute(settings); tests.Save(distributedExecutionDirectory); ExecutionBackupStore.ClearAllIntermediateTestResults(settings.LogFilesPath); tests.DisplayConsoleSummary(); }
/// <summary> /// Encapsulates logic for running tests. /// </summary> public override void Execute() { if (!ContinueExecution) { // If the run directory already exists, we need to get rid of it for // now. In the future we may add a directory versioning scheme so // that the results of multiple runs can be retained. if (RunDirectory.Exists) { RunDirectory.Delete(true); } RunDirectory.Create(); } else { if (!RunDirectory.Exists) { throw new InvalidOperationException("No run directory exists - the ContinueExecution mode is only intended for finishing an incomplete run."); } } // TestRecords.RegisterKey(Environment.MachineName, RunDirectory); FilteringSettings filteringSettings = FilteringSettings; TestRecords tests = TestRecords.Discover(DiscoveryInfoPath, filteringSettings); tests.Filter(filteringSettings, DiscoveryInfoPath.Directory); tests.Distribute(RunDirectory, null, DiscoveryInfoPath.Directory); DirectoryInfo distributedExecutionDirectory = TestRecords.GetDistributedDirectory(Environment.MachineName, RunDirectory); tests = TestRecords.Load(distributedExecutionDirectory); ExecutionSettings settings = new ExecutionSettings(); settings.Tests = tests; settings.TestBinariesDirectory = DiscoveryInfoPath.Directory; settings.DebugTests = DebugTests; settings.DebugSti = DebugSti; settings.WaitForDebugger = WaitForDebugger; settings.LogFilesPath = distributedExecutionDirectory; settings.FixedTestExecutionDirectory = FixedTestExecutionDirectory; settings.JitDebuggerCommand = JitDebuggerCommand; settings.TimeoutMultiplier = TimeoutMultiplier; settings.ContinueExecution = ContinueExecution; settings.CodeCoverageEnabled = CodeCoverage; settings.CodeCoverageImport = CodeCoverageImport; settings.RerunFailures = RerunFailures; settings.SkipDxDiag = SkipDxDiag; CodeCoverageUtilities.ValidateForCodeCoverage(CodeCoverage, CodeCoverageImport); tests.Execute(settings); tests.Save(distributedExecutionDirectory); ExecutionBackupStore.ClearAllIntermediateTestResults(settings.LogFilesPath); TestRecords.Merge(RunDirectory, CodeCoverage, CodeCoverageImport); // RunCommand's report policy will be to publish reports to a // Report subdirectory of the RunDirectory. tests = TestRecords.Load(RunDirectory); string reportDirectoryPath = Path.Combine(RunDirectory.FullName, "Report"); RunInfo runInfo = RunInfo.FromOS(); runInfo.Save(RunDirectory); Console.WriteLine("Saving Report to: {0}\\LabReport.xml", reportDirectoryPath); tests.GenerateXmlReport(tests, runInfo, new DirectoryInfo(reportDirectoryPath), DiscoveryInfoPath.Directory); tests.DisplayConsoleSummary(); }