private RunnerOptions getRunnerOptions(IEnumerable <TestRunInfo> unitInfos, IAutoTestNetTestRunner instance) { DebugLog.Debug.WriteDetail("Getting runner options for {0}", instance.Identifier); var runner = new RunnerOptions(instance.Identifier); var testRunner = TestRunnerConverter.FromString(instance.Identifier); foreach (var info in unitInfos) { DebugLog.Debug.WriteDetail("Handling {0}", info.Assembly); DebugLog.Debug.WriteDetail("About to add assembly"); var assembly = new AssemblyOptions(info.Assembly); assembly.AddTests(info.GetTestsFor(testRunner)); assembly.AddTests(info.GetTestsFor(TestRunner.Any)); DebugLog.Debug.WriteDetail("Found {0} tests for assembly", assembly.Tests.Count()); assembly.AddMembers(info.GetMembersFor(testRunner)); assembly.AddMembers(info.GetMembersFor(TestRunner.Any)); DebugLog.Debug.WriteDetail("Found {0} members for assembly", assembly.Members.Count()); assembly.AddNamespaces(info.GetNamespacesFor(testRunner)); assembly.AddNamespaces(info.GetNamespacesFor(TestRunner.Any)); DebugLog.Debug.WriteDetail("Found {0} namespaces for assembly", assembly.Namespaces.Count()); DebugLog.Debug.WriteDetail("Run only specified tests for runner {0} is {1}", testRunner, info.OnlyRunSpcifiedTestsFor(testRunner)); if (info.OnlyRunSpcifiedTestsFor(testRunner) && assembly.Tests.Count() == 0 && assembly.Members.Count() == 0 && assembly.Namespaces.Count() == 0) { continue; } DebugLog.Debug.WriteDetail("Adding assembly"); runner.AddAssembly(assembly); } return(runner); }
public static Messages.TestResult ConvertResult(AutoTest.TestRunners.Shared.Results.TestResult x) { return(new Messages.TestResult(TestRunnerConverter.FromString(x.Runner), getTestState(x.State), x.TestName, x.Message, x.StackLines.Select(y => (IStackLine) new StackLineMessage(y.Method, y.File, y.Line)).ToArray <IStackLine>(), x.DurationInMilliseconds )); }
private OnDemandRunInternal add(OnDemandRun run, IAutoTestNetTestRunner runner, IEnumerable <string> tests, IEnumerable <string> members, IEnumerable <string> namespaces) { if (alreadySetToTestAll(run)) { return(null); } var existing = _list.Where(x => x.Project.Equals(run.Project) && x.Runner.Equals(TestRunnerConverter.FromString(runner.Identifier))).FirstOrDefault(); if (existing != null) { Logger.WriteDebug("Joining with existing run " + existing.Project + " with runner " + runner.Identifier); existing.JoinWith(tests, members, namespaces); return(existing); } Logger.WriteDebug("Adding new run " + run.Project + " with runner " + runner.Identifier); var internalRun = new OnDemandRunInternal(TestRunnerConverter.FromString(runner.Identifier), run.Project, tests.ToArray(), members.ToArray(), namespaces.ToArray()); _list.Add(internalRun); return(_list[_list.Count - 1]); }
private TestRunResults[] getResults(IEnumerable <AutoTest.TestRunners.Shared.Results.TestResult> tests, TestRunInfo[] runInfos) { var results = new List <TestRunResults>(); foreach (var byRunner in tests.GroupBy(x => x.Runner)) { var runner = TestRunnerConverter.FromString(byRunner.Key); foreach (var byAssembly in byRunner.GroupBy(x => x.Assembly)) { var info = runInfos.Where(x => x.Assembly.Equals(byAssembly.Key)).FirstOrDefault(); var project = ""; var partial = false; if (info != null) { if (info.Project != null) { project = info.Project.Key; } partial = info.OnlyRunSpcifiedTestsFor(runner) || info.GetTestsFor(runner).Count() > 0 || info.GetMembersFor(runner).Count() > 0 || info.GetNamespacesFor(runner).Count() > 0; } DebugLog.Debug.WriteDetail(string.Format("Partial run is {0} for runner {1}", partial, runner)); var result = new TestRunResults( project, byAssembly.Key, partial, runner, byAssembly.Select(x => ConvertResult(x)).ToArray()); result.SetTimeSpent(TimeSpan.FromMilliseconds(byAssembly.Sum(x => x.DurationInMilliseconds))); results.Add(result); } } return(results.ToArray()); }
public void Debug(CacheTestMessage test) { try { AutoTest.Core.DebugLog.Debug.WriteDebug("Starting debug session"); var found = false; var targetFramework = ""; found = setBreakpointFromMethod(test, ref targetFramework); if (!found) { found = setBreakpointFromStacktrace(test, ref targetFramework); } if (!found) { return; } var process = new AutoTestRunnerDebugProcess(); var assembly = test.Assembly; AutoTest.Core.DebugLog.Debug.WriteDebug("Starting process suspended"); var command = ""; var options = new RunOptions(); var runner = new RunnerOptions(getTestRunner(TestRunnerConverter.ToString(test.Test.Runner), test.Assembly, test.Test.Name)); var asm = new AssemblyOptions(test.Assembly); asm.AddTest(test.Test.Name); runner.AddAssembly(asm); options.AddTestRun(runner); AutoTest.Core.DebugLog.Debug.WriteDebug(string.Format("Starting {0}", command)); var processID = process.StartPaused(options, test.Test.Runner); try { AutoTest.Core.DebugLog.Debug.WriteDebug("Locating debugger for Visual Studio " + _application.Version); var dbg2 = (EnvDTE80.Debugger2)_application.Debugger; var trans = (EnvDTE80.Transport)dbg2.Transports.Item("Default"); EnvDTE80.Engine[] dbgeng; if (_application.Version == "9.0") { dbgeng = new EnvDTE80.Engine[] { trans.Engines.Item("Managed") }; } else { if (process.Framework >= new Version(4, 0)) { dbgeng = new EnvDTE80.Engine[] { trans.Engines.Item(string.Format("Managed (v{0}.{1})", process.Framework.Major, process.Framework.Minor)) } } ; else { dbgeng = new EnvDTE80.Engine[] { trans.Engines.Item("Managed (v2.0, v1.1, v1.0)") } }; } EnvDTE80.Process2 proc2 = null; foreach (EnvDTE80.Process2 proc in dbg2.GetProcesses(trans, null)) { if (proc.ProcessID == processID) { proc2 = proc; break; } } if (proc2 != null) { proc2.Attach2(dbgeng); } } catch (Exception ex) { AutoTest.Core.DebugLog.Debug.WriteException(ex); throw; } finally { AutoTest.Core.DebugLog.Debug.WriteDebug("Resuming process"); process.Resume(); } } catch (Exception ex) { AutoTest.Core.DebugLog.Debug.WriteException(ex); } }
private void addEmtpyRun(OnDemandRun run, IAutoTestNetTestRunner runner) { _list.Add(new OnDemandRunInternal(TestRunnerConverter.FromString(runner.Identifier), run.Project, new string[] {}, new string[] {}, new string[] {})); }