private function runBehat($steps)
 {
     $client = $this->getClient();
     $file = tempnam(sys_get_temp_dir(), 'mailcatcher_');
     unlink($file);
     $configFile = $file . '.config';
     $outputFile = $file . '.output';
     $file = $file . '.feature';
     $content = "Feature: Test\n\n    Scenario: Test\n    " . implode("\n    ", $steps) . "\n";
     $config = json_encode(array('default' => array('context' => array('class' => 'Alex\\MailCatcher\\Test\\TestContext'), 'extensions' => array('Alex\\MailCatcher\\Behat\\MailCatcherExtension\\Extension' => array('url' => $client->getUrl(), 'purge_before_scenario' => false)))));
     try {
         $behat = new BehatApplication('DEV');
         $behat->setAutoExit(false);
         $input = new ArgvInput(array('behat', '--format', 'progress', '--config', $configFile, '--out', $outputFile, $file));
         $output = new NullOutput();
         file_put_contents($file, $content);
         file_put_contents($configFile, $config);
         $result = $behat->run($input, $output);
         unlink($file);
         unlink($configFile);
     } catch (\Exception $exception) {
         unlink($file);
         unlink($file . '.config');
         $this->fail($exception->getMessage());
     }
     if ($result !== 0) {
         $this->fail('Should finished with status 0, got ' . $result);
     }
 }
 public function scenariosMeetAcceptanceCriteria($bundleName)
 {
     //
     //Les dossiers de logs sont crees s'ils n'existent pas
     //
     $dirFeatures = 'build/logs/features/' . $bundleName . '/';
     if (!is_dir($dirFeatures)) {
         mkdir($dirFeatures, 0777, true);
     }
     //
     //BehatApplication et config
     //
     $app = new BehatApplication('DEV');
     $app->setAutoExit(false);
     $format = 'junit,html';
     $outputFileDefault = $dirFeatures . ',' . $dirFeatures . 'index.html';
     $outputFileJavascript = $dirFeatures . ',' . $dirFeatures . 'javascript.html';
     //PHPUnit lance avec l'option --verbose (-v) permettra d'afficher dans la console la sortie de Behat :
     if (in_array('--verbose', $_SERVER['argv']) || in_array('-v', $_SERVER['argv'])) {
         $format = 'pretty,' . $format;
         $outputFileDefault = ',' . $outputFileDefault;
         $outputFileJavascript = ',' . $outputFileJavascript;
     }
     //
     //Le profil Behat : default
     //
     $resultDefault = $app->run(new ArrayInput(array('--ansi' => null, '--format' => $format, '--out' => $outputFileDefault, 'features' => '@' . $bundleName)), new ConsoleOutput());
     //
     //Le profil Behat : javascript ou javascript_jenkins
     //
     $profile = 'javascript';
     //Si on detecte que les tests sont lances depuis Jenkins, on utilise le profil "javascript_jenkins"
     /* if (strpos(getcwd(), '/var/lib/jenkins/') !== false) {
        $profile = 'javascript_jenkins';
        } */
     $resultJavascript = $app->run(new ArrayInput(array('--ansi' => null, '--format' => $format, '--out' => $outputFileJavascript, '--profile' => $profile, 'features' => '@' . $bundleName)), new ConsoleOutput());
     //Assertion
     $result = $resultDefault + $resultJavascript;
     $this->assertEquals(0, $result, $result . " scénario(s) Behat échoue(nt) pour '" . $bundleName . "', plus d'info disponible dans '" . $dirFeatures . "' !");
 }
Esempio n. 3
0
 /**
  * @param \Symfony\Component\Console\Input\InputInterface $input
  * @param \Symfony\Component\Console\Output\OutputInterface $output
  * @return int
  * @throws \Exception
  */
 public function run(InputInterface $input = NULL, OutputInterface $output = NULL)
 {
     if (NULL === $output) {
         $output = new ConsoleOutput();
     }
     try {
         return parent::run($input, $output);
     } catch (\Exception $e) {
         if ($output instanceof ConsoleOutputInterface) {
             $this->renderException($e, $output->getErrorOutput());
         } else {
             $this->renderException($e, $output);
         }
         if ($file = Debugger::log($e, Debugger::ERROR)) {
             $output->writeln(sprintf('<error>  (Tracy output was stored in %s)  </error>', basename($file)));
             $output->writeln('');
             if (Debugger::$browser) {
                 exec(Debugger::$browser . ' ' . escapeshellarg($file));
             }
         }
         return min((int) $e->getCode(), 255);
     }
 }
Esempio n. 4
0
 protected function loadCoreExtension(ContainerBuilder $container, array $configs)
 {
     // patch configuration here
     $this->registerSubscriber($container);
     parent::loadCoreExtension($container, $configs);
 }