Ejemplo n.º 1
0
 public function compile()
 {
     foreach (PluginRepository::findAll() as $plugin) {
         $containerBuilder = new UnfreezableContainerBuilder();
         $containerBuilder->registerExtension(new GeneralExtension());
         $extensionClass = new \ReflectionClass('Stagehand\\TestRunner\\DependencyInjection\\Extension\\' . $plugin->getPluginID() . 'Extension');
         if (!$extensionClass->isInterface() && !$extensionClass->isAbstract() && $extensionClass->isSubclassOf('Symfony\\Component\\DependencyInjection\\Extension\\ExtensionInterface')) {
             $containerBuilder->registerExtension($extensionClass->newInstance());
         }
         foreach ($containerBuilder->getExtensions() as $extension) {
             /* @var $extension \Symfony\Component\DependencyInjection\Extension\ExtensionInterface */
             $containerBuilder->loadFromExtension($extension->getAlias(), array());
         }
         $containerBuilder->addCompilerPass(new ReplaceDefinitionByPluginDefinitionPass($plugin));
         $containerBuilder->getCompilerPassConfig()->setOptimizationPasses(array_filter($containerBuilder->getCompilerPassConfig()->getOptimizationPasses(), function (CompilerPassInterface $compilerPass) {
             return !$compilerPass instanceof ResolveParameterPlaceHoldersPass;
         }));
         ErrorReporting::invokeWith(error_reporting() & ~E_USER_DEPRECATED, function () use($containerBuilder) {
             $containerBuilder->compile();
         });
         $phpDumper = new PhpDumper($containerBuilder);
         $containerClass = $plugin->getPluginID() . 'Container';
         $containerClassSource = $phpDumper->dump(array('class' => $containerClass));
         $containerClassSource = preg_replace('/^<\\?php/', '<?php' . PHP_EOL . 'namespace ' . self::COMPILED_CONTAINER_NAMESPACE . ';' . PHP_EOL, $containerClassSource);
         file_put_contents(__DIR__ . '/../' . $containerClass . '.php', $containerClassSource);
     }
 }
Ejemplo n.º 2
0
 public static function earlyInitialize()
 {
     $classLoader = new UniversalClassLoader();
     $classLoader->registerNamespace('Stagehand\\TestRunner', array(__DIR__ . '/../../..', __DIR__ . '/../../../../examples'));
     $classLoader->registerPrefix('Stagehand_TestRunner_', __DIR__ . '/../../../../examples');
     $classLoader->register();
     self::$applicationContext = new TestApplicationContext();
     self::$applicationContext->setComponentFactory(new TestComponentFactory());
     self::$applicationContext->setEnvironment(new self());
     self::$applicationContext->setPlugin(PluginRepository::findByPluginID(PHPUnitPlugin::getPluginID()));
     ApplicationContext::setInstance(self::$applicationContext);
     $container = new Container();
     $transformation = new Transformation($container);
     $transformation->transformToContainerParameters();
     ApplicationContext::getInstance()->getComponentFactory()->setContainer($container);
 }
 /**
  * @return array
  * @throws \Stagehand\TestRunner\DependencyInjection\Extension\FrameworkUnavailableException
  */
 public static function findAll()
 {
     $plugins = PluginRepository::findAll();
     if (count($plugins) == 0) {
         throw new FrameworkUnavailableException('Stagehand_TestRunner is unavailable since no plugins are found in this installation.');
     }
     $extensions = array(new GeneralExtension());
     foreach ($plugins as $plugin) {
         /* @var $plugin \Stagehand\TestRunner\Core\Plugin\IPlugin */
         $extensionClass = new \ReflectionClass(__NAMESPACE__ . '\\' . $plugin->getPluginID() . 'Extension');
         if (!$extensionClass->isInterface() && !$extensionClass->isAbstract() && $extensionClass->isSubclassOf('Symfony\\Component\\DependencyInjection\\Extension\\ExtensionInterface')) {
             $extensions[] = $extensionClass->newInstance();
         }
     }
     return $extensions;
 }
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     if (!class_exists(Compiler::COMPILED_CONTAINER_NAMESPACE . '\\PHPUnitContainer')) {
         $output->writeln('<error>Please run the following command before running the ' . $this->getName() . ' command:</error>' . PHP_EOL . PHP_EOL . '  <info>testrunner compile</info>');
         return 1;
     }
     $container = $this->createContainer();
     ApplicationContext::getInstance()->getComponentFactory()->setContainer($container);
     ApplicationContext::getInstance()->setComponent('environment', ApplicationContext::getInstance()->getEnvironment());
     ApplicationContext::getInstance()->setComponent('input', $input);
     ApplicationContext::getInstance()->setComponent('output', $output);
     ApplicationContext::getInstance()->setComponent('plugin', PluginRepository::findByPluginID(PHPUnitPlugin::getPluginID()));
     ApplicationContext::getInstance()->createComponent('preparer')->prepare();
     $collector = ApplicationContext::getInstance()->createComponent('collector');
     $collector->setRecursive(true);
     define('PHPUnit_MAIN_METHOD', __METHOD__);
     $command = new \Stagehand\TestRunner\CLI\TestRunnerApplication\Command\PHPUnitPassthroughCommand\Command($collector, ApplicationContext::getInstance()->createComponent('test_target_repository'));
     if ($input->getOption('phpunit-help')) {
         return $command->run(array_merge($this->removeTestRunnerArguments($_SERVER['argv'], array('--phpunit-help')), array('--help')), false);
     }
     return $command->run($this->removeTestRunnerArguments($_SERVER['argv']), false);
 }
Ejemplo n.º 5
0
 public function compile()
 {
     foreach (PluginRepository::findAll() as $plugin) {
         $containerBuilder = new UnfreezableContainerBuilder();
         $containerBuilder->registerExtension(new GeneralExtension());
         $extensionClass = new \ReflectionClass('Stagehand\\TestRunner\\DependencyInjection\\Extension\\' . $plugin->getPluginID() . 'Extension');
         if (!$extensionClass->isInterface() && !$extensionClass->isAbstract() && $extensionClass->isSubclassOf('Symfony\\Component\\DependencyInjection\\Extension\\ExtensionInterface')) {
             $containerBuilder->registerExtension($extensionClass->newInstance());
         }
         foreach ($containerBuilder->getExtensions() as $extension) {
             /* @var $extension \Symfony\Component\DependencyInjection\Extension\ExtensionInterface */
             $containerBuilder->loadFromExtension($extension->getAlias(), array());
         }
         $containerBuilder->addCompilerPass(new ReplaceDefinitionByPluginDefinitionPass($plugin));
         $containerBuilder->getCompilerPassConfig()->setOptimizationPasses(array_filter($containerBuilder->getCompilerPassConfig()->getOptimizationPasses(), function (CompilerPassInterface $compilerPass) {
             return !$compilerPass instanceof ResolveParameterPlaceHoldersPass;
         }));
         $containerClass = $plugin->getPluginID() . 'Container';
         $compiler = new \Stagehand\ComponentFactory\Compiler($containerBuilder, $containerClass, self::COMPILED_CONTAINER_NAMESPACE);
         $containerSource = $compiler->compile();
         file_put_contents(__DIR__ . '/../' . $containerClass . '.php', $containerSource);
     }
 }
Ejemplo n.º 6
0
 protected function getPlugin()
 {
     return PluginRepository::findByPluginID(CakePHPPlugin::getPluginID());
 }
 protected function getPlugin()
 {
     return PluginRepository::findByPluginID(SimpleTestPlugin::getPluginID());
 }
Ejemplo n.º 8
0
 public function transformToContainerParameters()
 {
     if (!is_null($this->configurationFile)) {
         foreach (Yaml::parse($this->configurationFile) as $configurationID => $configurationPart) {
             if (!is_null($configurationPart)) {
                 if (!array_key_exists($configurationID, $this->configuration)) {
                     $this->configuration[$configurationID] = array();
                 }
                 array_unshift($this->configuration[$configurationID], $configurationPart);
             }
         }
     }
     foreach ($this->configuration as $configurationID => $configurationParts) {
         $configurations = array();
         foreach ($configurationParts as $configurationPart) {
             $configurations[] = $configurationPart;
         }
         if ($configurationID == GeneralConfiguration::getConfigurationID()) {
             $transformerID = 'General';
         } else {
             $plugin = PluginRepository::findByPluginID($configurationID);
             $transformerID = $plugin->getPluginID();
         }
         $transformerClass = __NAMESPACE__ . '\\' . $transformerID . 'Transformer';
         $transformer = new $transformerClass($configurations, $this->container);
         /* @var $transformer \Stagehand\TestRunner\DependencyInjection\Transformation\Transformer */
         $transformer->transform();
     }
     if (is_null($this->container->getParameter('test_file_pattern'))) {
         $this->container->setParameter('test_file_pattern', ApplicationContext::getInstance()->getPlugin()->getTestFilePattern());
     }
 }
Ejemplo n.º 9
0
 /**
  * @return \Stagehand\TestRunner\Core\Plugin\Plugin
  */
 protected function getPlugin()
 {
     return PluginRepository::findByPluginID($this->getPluginID());
 }