Ejemplo n.º 1
0
        private IEnumerable <TestCase> GetAllTestCasesInExecutables(IEnumerable <string> executables)
        {
            var allTestCasesInExecutables = new List <TestCase>();

            var discoveryActions = executables
                                   .OrderBy(e => e)
                                   .Select(executable => (Action)(() =>
            {
                var testCases = GetTestCasesOfExecutable(executable, _settings.Clone(), _logger, () => _canceled);
                lock (allTestCasesInExecutables)
                {
                    allTestCasesInExecutables.AddRange(testCases);
                }
            }))
                                   .ToArray();

            Utils.SpawnAndWait(discoveryActions);

            if (_canceled)
            {
                allTestCasesInExecutables.Clear();
            }

            return(allTestCasesInExecutables);
        }
        private void RunTests(IEnumerable <TestCase> testCasesToRun, List <Thread> threads, bool isBeingDebugged, IDebuggedProcessLauncher debuggedLauncher, IProcessExecutor executor)
        {
            TestCase[] testCasesToRunAsArray = testCasesToRun as TestCase[] ?? testCasesToRun.ToArray();

            ITestsSplitter          splitter = GetTestsSplitter(testCasesToRunAsArray);
            List <List <TestCase> > splittedTestCasesToRun = splitter.SplitTestcases();

            _logger.LogInfo("Executing tests on " + splittedTestCasesToRun.Count + " threads");
            _logger.DebugInfo("Note that no test output will be shown on the test console when executing tests concurrently!");

            int threadId = 0;

            foreach (List <TestCase> testcases in splittedTestCasesToRun)
            {
                var runner = new PreparingTestRunner(threadId++, _frameworkReporter, _logger, _settings.Clone(), _schedulingAnalyzer);
                _testRunners.Add(runner);

                var thread = new Thread(
                    () => runner.RunTests(testcases, isBeingDebugged, debuggedLauncher, executor))
                {
                    Name = $"GTA Testrunner {threadId}"
                };
                threads.Add(thread);

                thread.Start();
            }
        }
Ejemplo n.º 3
0
        public void DiscoverTests(IEnumerable <string> executables, ITestFrameworkReporter reporter)
        {
            var discoveryActions = executables
                                   .Select(e => (Action)(() => DiscoverTests(e, reporter, _settings.Clone(), _logger, _diaResolverFactory, _processExecutorFactory)))
                                   .ToArray();

            Utils.SpawnAndWait(discoveryActions);
        }
Ejemplo n.º 4
0
        private void RunTests(IEnumerable <TestCase> testCasesToRun, List <Thread> threads, bool isBeingDebugged, IDebuggedProcessExecutorFactory processExecutorFactory)
        {
            TestCase[] testCasesToRunAsArray = testCasesToRun as TestCase[] ?? testCasesToRun.ToArray();

            ITestsSplitter          splitter = GetTestsSplitter(testCasesToRunAsArray);
            List <List <TestCase> > splittedTestCasesToRun = splitter.SplitTestcases();

            _logger.LogInfo(string.Format(Resources.ThreadExecutionMessage, splittedTestCasesToRun.Count));
            _logger.DebugInfo(Resources.NoTestOutputShown);

            int threadId = 0;

            foreach (List <TestCase> testcases in splittedTestCasesToRun)
            {
                var runner = new PreparingTestRunner(threadId++, _frameworkReporter, _logger, _settings.Clone(), _schedulingAnalyzer);
                _testRunners.Add(runner);

                var thread = new Thread(
                    () => runner.RunTests(testcases, isBeingDebugged, processExecutorFactory))
                {
                    Name = $"GTA Testrunner {threadId}"
                };
                threads.Add(thread);

                thread.Start();
            }
        }
Ejemplo n.º 5
0
 public void DiscoverTests(IEnumerable <string> executables, ITestFrameworkReporter reporter)
 {
     if (_settings.UseNewTestExecutionFramework)
     {
         var discoveryActions = executables
                                .Select(e => (Action)(() => DiscoverTests(e, reporter, _settings.Clone(), _logger, _diaResolverFactory)))
                                .ToArray();
         Utils.SpawnAndWait(discoveryActions);
     }
     else
     {
         foreach (string executable in executables)
         {
             _settings.ExecuteWithSettingsForExecutable(executable, () =>
             {
                 if (VerifyExecutableTrust(executable, _logger) &&
                     IsGoogleTestExecutable(executable, _settings.TestDiscoveryRegex, _logger))
                 {
                     IList <TestCase> testCases = GetTestsFromExecutable(executable);
                     reporter.ReportTestsFound(testCases);
                 }
             }, _logger);
         }
     }
 }