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();
         }
     }
 }
Esempio n. 3
0
 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);
        }
Esempio n. 5
0
 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);
        }
Esempio n. 11
0
 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);
 }
Esempio n. 15
0
 public void StartOnDemandRun(OnDemandRun run)
 {
     StartOnDemandRun(new OnDemandRun[] { run });
 }
Esempio n. 16
0
 public void StartOnDemandRun(OnDemandRun run)
 {
     Analytics.SendEvent("StartOnDemandRun");
     _vm.StartOnDemandRun(run);
     SetLastRun(run);
 }