Example #1
0
        /// <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();
        }
Example #2
0
 public void Cleanup()
 {
     ExecutionBackupStore.SaveIntermediateTestRecords(Tests, LogDirectory);
 }
Example #3
0
        /// <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();
        }