private void addItemFor(List <OnDemandRun> runs, Project project) { var run = new OnDemandRun(project.FullName); run.ShouldRunAllTestsInProject(); runs.Add(run); }
public void Append(OnDemandRun run) { foreach (var runner in _identifiers) { var members = new List <string>(); var namespaces = new List <string>(); var tests = getTests(run, runner); if (tests.Count() == 0) { members.AddRange(getMemebers(run, runner)); } if (tests.Count() == 0 && members.Count == 0) { namespaces.AddRange(run.Namespaces); } if (nothingToTest(run, tests, members, namespaces)) { Logger.WriteDebug("Nothing to test for on demand run. Skipping " + run.Project + " for runner " + runner.Identifier); addEmtpyRun(run, runner); continue; } var newRun = add(run, runner, tests, members, namespaces); if (newRun == null) { continue; } if (run.RunAllTestsInProject) { newRun.ShouldRunAllTestsInProject(); } } }
public void SetLastRun(OnDemandRun run) { _lastOnDemandRun = new List <OnDemandRun> { run }; _lastRelatedTestRun = null; }
public Dictionary <string, Action <dynamic> > GetClientHandlers() { var handlers = new Dictionary <string, Action <dynamic> >(); handlers.Add("build-test-all", (msg) => { var message = new ProjectChangeMessage(); var projects = _cache.GetAll <Project>(); foreach (var project in projects) { if (project.Value == null) { continue; } project.Value.RebuildOnNextRun(); message.AddFile(new ChangedFile(project.Key)); } _bus.Publish(message); }); handlers.Add("build-test-projects", (msg) => { var message = new ProjectChangeMessage(); var projects = ((IEnumerable <object>)msg.projects).Select(x => x.ToString()); projects.ToList().ForEach(x => message.AddFile(new ChangedFile(x))); _bus.Publish(message); }); handlers.Add("on-demand-test-run", (msg) => { var runs = ((IEnumerable <dynamic>)msg.runs) .Select(x => { var run = new OnDemandRun( x.project.ToString(), ((IEnumerable <dynamic>)x.tests).Select(y => y.ToString()).ToArray(), ((IEnumerable <dynamic>)x.members).Select(y => y.ToString()).ToArray(), ((IEnumerable <dynamic>)x.namespaces).Select(y => y.ToString()).ToArray() ); if ((bool)x.project_runall_tests == true) { run.ShouldRunAllTestsInProject(); } return(run); }); var message = new ProjectChangeMessage(); var projects = _cache.GetAll <Project>(); Debug.WriteDebug(string.Format("Recieved {0} runs", runs.Count())); addProjects(runs, message, projects); var onDemandPreProcessor = getOnDemandPreProcessor(); foreach (var run in runs) { Debug.WriteDebug("Adding test run to preprocessor " + run.Project); onDemandPreProcessor.AddRuns(run); } onDemandPreProcessor.Activate(); _disableOnDemandRunnerOnNextRunCompleted = true; _bus.Publish(message); }); return(handlers); }
private static void add(List <OnDemandRun> runs, Project project) { try { var run = new OnDemandRun(project.FullName); run.ShouldRunAllTestsInProject(); runs.Add(run); } catch { } }
public void AddRuns(OnDemandRun run) { Logger.WriteDebug("About to add add run for " + run.Project); var assembly = getAssembly(run); if (assembly == null) { return; } var appender = new OnDemandRunAppender(_addToNextRun, getIdentifiers(), assembly); appender.Append(run); }
private IEnumerable <string> getTests(OnDemandRun run, IAutoTestNetTestRunner runner) { var tests = new List <string>(); foreach (var test in run.Tests) { Logger.WriteDebug(string.Format("Checking {0} using {1} for test {2}", _assembly, runner.Identifier, test)); if (runner.IsTest(_assembly, test)) { Logger.WriteDebug(string.Format("{0} is a {1} test", test, runner.Identifier)); tests.Add(test); } } return(tests); }
private IEnumerable <string> getMemebers(OnDemandRun run, IAutoTestNetTestRunner runner) { var members = new List <string>(); foreach (var member in run.Members) { Logger.WriteDebug(string.Format("Checking {0} using {1} for memeber {2}", _assembly, runner.Identifier, member)); if (runner.ContainsTestsFor(_assembly, member)) { Logger.WriteDebug(string.Format("{0} contains {1} tests", member, runner.Identifier)); members.Add(member); } } return(members); }
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 string getAssembly(OnDemandRun run) { var projects = _cache.GetAll <Project>(); var project = projects.Where(x => x.Key.Equals(run.Project)).FirstOrDefault(); if (project == null) { Logger.WriteDebug("Could not match project for on demand run " + run.Project); return(null); } var assembly = project.GetAssembly(_configuration.CustomOutputPath); if (!File.Exists(assembly)) { Logger.WriteError(string.Format("Assembly {0} does not exist and cannot be tested", assembly)); return(null); } else { Logger.WriteDebug(string.Format("Bound test run to assembly {0}", assembly)); } return(assembly); }
public void RunTests(OnDemandRun run, Action runOnTaskCompleted) { RunTests(new List <OnDemandRun>(new OnDemandRun[] { run }), runOnTaskCompleted); }
private void addEmtpyRun(OnDemandRun run, IAutoTestNetTestRunner runner) { _list.Add(new OnDemandRunInternal(TestRunnerConverter.FromString(runner.Identifier), run.Project, new string[] {}, new string[] {}, new string[] {})); }
private bool nothingToTest(OnDemandRun run, IEnumerable <string> tests, IEnumerable <string> members, IEnumerable <string> namespaces) { return(namespaces.Count() == 0 && members.Count() == 0 && tests.Count() == 0 && !run.RunAllTestsInProject); }
private bool alreadySetToTestAll(OnDemandRun run) { return(run.RunAllTestsInProject && _list.Where(x => x.Project.Equals(run.Project)).Count() > 0); }
public void StartOnDemandRun(OnDemandRun run) { StartOnDemandRun(new OnDemandRun[] { run }); }
public void StartOnDemandRun(OnDemandRun run) { Analytics.SendEvent("StartOnDemandRun"); _vm.StartOnDemandRun(run); SetLastRun(run); }