/** * @param \Symfony\Component\Console\Input\InputInterface $input * @param \Symfony\Component\Console\Output\OutputInterface $output * @param \Stagehand\TestRunner\DependencyInjection\Transformation\Transformation $transformation */ protected function transformToConfiguration(InputInterface $input, OutputInterface $output, Transformation $transformation) { if (!is_null($input->getOption('config'))) { $transformation->setConfigurationFile($this->fileSystem->getAbsolutePath($input->getOption('config'), ApplicationContext::getInstance()->getEnvironment()->getWorkingDirectoryAtStartup())); } if (count($input->getArgument('test_directory_or_file')) > 0) { $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('test_targets' => array('resources' => $input->getArgument('test_directory_or_file')))); } if ($input->getOption('recursive')) { $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('test_targets' => array('recursive' => true))); } if ($this->getPlugin()->hasFeature('test_methods')) { if (count($input->getOption('test-method')) > 0) { $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('test_targets' => array('methods' => $input->getOption('test-method')))); } } if ($this->getPlugin()->hasFeature('test_classes')) { if (count($input->getOption('test-class')) > 0) { $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('test_targets' => array('classes' => $input->getOption('test-class')))); } } if (!is_null($input->getOption('test-file-pattern'))) { $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('test_targets' => array('file_pattern' => $input->getOption('test-file-pattern')))); } if ($this->getPlugin()->hasFeature('autotest')) { if ($input->getOption('autotest')) { $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('autotest' => array('enabled' => true))); } if (count($input->getOption('watch-dir')) > 0) { $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('autotest' => array('watch_dirs' => $input->getOption('watch-dir')))); } } if ($this->getPlugin()->hasFeature('notify')) { if ($input->getOption('notify')) { $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('notify' => true)); } } if ($this->getPlugin()->hasFeature('junit_xml')) { if (!is_null($input->getOption('log-junit'))) { $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('junit_xml' => array('file' => $input->getOption('log-junit')))); } if ($input->getOption('log-junit-realtime')) { $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('junit_xml' => array('realtime' => true))); } } if ($this->getPlugin()->hasFeature('stop_on_failure')) { if ($input->getOption('stop-on-failure')) { $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('stop_on_failure' => true)); } } if ($this->getPlugin()->hasFeature('detailed_progress')) { if ($input->getOption('detailed-progress')) { $transformation->setConfigurationPart(GeneralConfiguration::getConfigurationID(), array('detailed_progress' => true)); } } $this->doTransformToConfiguration($input, $output, $transformation); }
/** * Collects tests. * * @return mixed * @throws \UnexpectedValueException */ public function collect() { $self = $this; $fileSystem = new FileSystem(); $environment = $this->environment; $this->testTargetRepository->walkOnResources(function ($resource, $index, TestTargetRepository $testTargetRepository) use($self, $fileSystem, $environment) { $absoluteTargetPath = $fileSystem->getAbsolutePath($resource, $environment->getWorkingDirectoryAtStartup()); if (!file_exists($absoluteTargetPath)) { throw new \UnexpectedValueException(sprintf('The directory or file [ %s ] is not found', $absoluteTargetPath)); } if (is_dir($absoluteTargetPath)) { $finder = Finder::create()->files()->in($absoluteTargetPath)->depth($self->isRecursive() ? '>= 0' : '== 0')->sortByName(); foreach ($finder as $file) { call_user_func(array($self, 'collectTestCasesFromFile'), $file->getPathname()); } } else { call_user_func(array($self, 'collectTestCasesFromFile'), $absoluteTargetPath); } }); return $this->suite; }