상속: extends Symfony\Component\EventDispatcher\Event, implements PhpSpecEvent
예제 #1
0
 public function afterSuite(SuiteEvent $event)
 {
     if (!$this->io->isCodeGenerationEnabled()) {
         return;
     }
     foreach ($this->methods as $call => $arguments) {
         list($classname, $method) = explode('::', $call);
         if (in_array($method, $this->wrongMethodNames)) {
             continue;
         }
         $message = sprintf('Do you want me to create `%s()` for you?', $call);
         try {
             $resource = $this->resources->createResource($classname);
         } catch (\RuntimeException $e) {
             continue;
         }
         if ($this->io->askConfirmation($message)) {
             $this->generator->generate($resource, 'method', array('name' => $method, 'arguments' => $arguments));
             $event->markAsWorthRerunning();
         }
     }
     if ($this->wrongMethodNames) {
         $this->writeWrongMethodNameMessage();
         $event->markAsNotWorthRerunning();
     }
 }
 public function afterSuite(SuiteEvent $event)
 {
     if (!$this->io->isCodeGenerationEnabled()) {
         return;
     }
     foreach ($this->methods as $call => $arguments) {
         list($classname, $method) = explode('::', $call);
         $message = sprintf('Do you want me to create `%s()` for you?', $call);
         try {
             $resource = $this->resources->createResource($classname);
         } catch (\RuntimeException $e) {
             continue;
         }
         if ($this->io->askConfirmation($message)) {
             $this->generator->generate($resource, 'named_constructor', array('name' => $method, 'arguments' => $arguments));
             $event->markAsWorthRerunning();
             if (!method_exists($classname, '__construct')) {
                 $message = sprintf('Do you want me to make the constructor of %s private for you?', $classname);
                 if ($this->io->askConfirmation($message)) {
                     $this->generator->generate($resource, 'private-constructor', array('name' => $method, 'arguments' => $arguments));
                 }
             }
         }
     }
 }
예제 #3
0
 public function afterSuite(SuiteEvent $event)
 {
     $io = $this->getIO();
     $io->writeln();
     foreach (array('failed' => $this->getStatisticsCollector()->getFailedEvents(), 'broken' => $this->getStatisticsCollector()->getBrokenEvents(), 'skipped' => $this->getStatisticsCollector()->getSkippedEvents()) as $status => $events) {
         if (!count($events)) {
             continue;
         }
         $io->writeln(sprintf("<%s>----  %s examples</%s>\n", $status, $status, $status));
         foreach ($events as $failEvent) {
             $io->writeln(sprintf('%s', str_replace('\\', DIRECTORY_SEPARATOR, $failEvent->getSpecification()->getTitle())), 8);
             $this->afterExample($failEvent);
             $io->writeln();
         }
     }
     $io->writeln(sprintf("\n%d specs", $this->getStatisticsCollector()->getTotalSpecs()));
     $counts = array();
     foreach ($this->getStatisticsCollector()->getCountsHash() as $type => $count) {
         if ($count) {
             $counts[] = sprintf('<%s>%d %s</%s>', $type, $count, $type, $type);
         }
     }
     $io->write(sprintf("%d examples ", $this->getStatisticsCollector()->getEventsCount()));
     if (count($counts)) {
         $io->write(sprintf("(%s)", implode(', ', $counts)));
     }
     $io->writeln(sprintf("\n%sms", round($event->getTime() * 1000)));
 }
 function it_records_how_many_specs_are_in_the_suite(SuiteEvent $suiteEvent, Suite $suite, SpecificationNode $spec)
 {
     $suiteEvent->getSuite()->willReturn($suite);
     $suite->getSpecifications()->willReturn(array($spec));
     $this->beforeSuite($suiteEvent);
     $this->getTotalSpecsCount()->shouldReturn(1);
 }
 function it_prompts_and_warns_when_one_method_name_is_correct_but_other_reserved($exampleEvent, SuiteEvent $suiteEvent, IO $io, NameCheckerInterface $nameChecker)
 {
     $this->callAfterExample($exampleEvent, $nameChecker, 'throw', false);
     $this->callAfterExample($exampleEvent, $nameChecker, 'foo');
     $io->writeBrokenCodeBlock("I cannot generate the method 'throw' for you because it is a reserved keyword", 2)->shouldBeCalled();
     $io->askConfirmation('Do you want me to create `stdClass::foo()` for you?')->shouldBeCalled();
     $suiteEvent->markAsNotWorthRerunning()->shouldBeCalled();
     $this->afterSuite($suiteEvent);
 }
예제 #6
0
 function it_should_call_afterSuiteEvent(SuiteEvent $example)
 {
     $fatalError = '3';
     $currentExample = new CurrentExampleTracker();
     $currentExample->setCurrentExample("Exited with code: " . $fatalError);
     $example->getResult()->willReturn($fatalError);
     $this->afterSuiteEvent($example);
     $example->getResult()->shouldHaveBeenCalled();
 }
예제 #7
0
 public function afterSuite(SuiteEvent $event)
 {
     if (!$this->enabled) {
         return;
     }
     if (0 !== $event->getResult()) {
         return;
     }
     $this->output[] = $this->reporter->getOutput($this->coverage);
 }
예제 #8
0
 function it_aggregates_testsuite_nodes_and_display_them_after_suite_run(SuiteEvent $event, $io, $stats)
 {
     $event->getTime()->willReturn(48151.62342);
     $stats->getFailedEvents()->willReturn(range(1, 12));
     $stats->getBrokenEvents()->willReturn(range(1, 3));
     $stats->getEventsCount()->willReturn(100);
     $this->setTestSuiteNodes(array('<testsuite name="specification1" tests="3">' . "\n" . '<testcase name="example1" />' . "\n" . '<testcase name="example2" />' . "\n" . '<testcase name="example3" />' . "\n" . '</testsuite>', '<testsuite name="specification2" tests="2">' . "\n" . '<testcase name="example1" />' . "\n" . '<testcase name="example2" />' . "\n" . '</testsuite>'));
     $this->afterSuite($event);
     $io->write('<?xml version="1.0" encoding="UTF-8" ?>' . "\n" . '<testsuites time="48151.623420" tests="100" failures="12" errors="3">' . "\n" . '<testsuite name="specification1" tests="3">' . "\n" . '<testcase name="example1" />' . "\n" . '<testcase name="example2" />' . "\n" . '<testcase name="example3" />' . "\n" . '</testsuite>' . "\n" . '<testsuite name="specification2" tests="2">' . "\n" . '<testcase name="example1" />' . "\n" . '<testcase name="example2" />' . "\n" . '</testsuite>' . "\n" . '</testsuites>')->shouldBeCalled();
 }
예제 #9
0
 private function outputSuiteSummary(SuiteEvent $event)
 {
     $this->outputTotalSpecCount();
     $this->outputTotalExamplesCount();
     $this->outputSpecificExamplesCount();
     $this->getIO()->writeln(sprintf("\n%sms", round($event->getTime() * 1000)));
 }
 /**
  * @param SuiteEvent $event
  */
 public function afterSuite(SuiteEvent $event)
 {
     if (!$this->io->isCodeGenerationEnabled()) {
         return;
     }
     foreach ($this->exceptions as $exception) {
         $resource = $this->resources->createResource($exception->getCollaboratorName());
         if ($this->resourceIsInSpecNamespace($exception, $resource)) {
             continue;
         }
         if ($this->io->askConfirmation(sprintf('Would you like me to generate an interface `%s` for you?', $exception->getCollaboratorName()))) {
             $this->generator->generate($resource, 'interface');
             $event->markAsWorthRerunning();
         }
     }
 }
예제 #11
0
 /**
  * @param SuiteEvent $event
  */
 public function afterSuite(SuiteEvent $event)
 {
     $io = $this->getIO();
     $stats = $this->getStatisticsCollector();
     $io->writeln("\n");
     foreach (array('failed' => $stats->getFailedEvents(), 'broken' => $stats->getBrokenEvents(), 'pending' => $stats->getPendingEvents(), 'skipped' => $stats->getSkippedEvents()) as $status => $events) {
         if (!count($events)) {
             continue;
         }
         foreach ($events as $failEvent) {
             $this->printException($failEvent);
         }
     }
     $plural = $stats->getTotalSpecs() !== 1 ? 's' : '';
     $io->writeln(sprintf("%d spec%s", $stats->getTotalSpecs(), $plural));
     $counts = array();
     foreach ($stats->getCountsHash() as $type => $count) {
         if ($count) {
             $counts[] = sprintf('<%s>%d %s</%s>', $type, $count, $type, $type);
         }
     }
     $count = $stats->getEventsCount();
     $plural = $count !== 1 ? 's' : '';
     $io->write(sprintf("%d example%s ", $count, $plural));
     if (count($counts)) {
         $io->write(sprintf("(%s)", implode(', ', $counts)));
     }
     $io->writeln(sprintf("\n%sms", round($event->getTime() * 1000)));
 }
 /**
  * @param SuiteEvent $event
  */
 public function afterSuite(SuiteEvent $event)
 {
     if (!$this->io->isCodeGenerationEnabled()) {
         return;
     }
     foreach ($this->classes as $classname => $_) {
         $message = sprintf('Do you want me to create `%s` for you?', $classname);
         try {
             $resource = $this->resources->createResource($classname);
         } catch (\RuntimeException $e) {
             continue;
         }
         if ($this->io->askConfirmation($message)) {
             $this->generator->generate($resource, 'class');
             $event->markAsWorthRerunning();
         }
     }
 }
예제 #13
0
 public function afterSuite(SuiteEvent $event)
 {
     $io = $this->getIO();
     $stats = $this->getStatisticsCollector();
     $io->freezeTemp();
     $io->writeln();
     $io->writeln(sprintf("%d specs", $stats->getTotalSpecs()));
     $counts = array();
     foreach ($stats->getCountsHash() as $type => $count) {
         if ($count) {
             $counts[] = sprintf('<%s>%d %s</%s>', $type, $count, $type, $type);
         }
     }
     $count = $stats->getEventsCount();
     $plural = $count !== 1 ? 's' : '';
     $io->write(sprintf("%d example%s ", $count, $plural));
     if (count($counts)) {
         $io->write(sprintf("(%s)", implode(', ', $counts)));
     }
     $io->writeln(sprintf("\n%sms", round($event->getTime() * 1000)));
 }
예제 #14
0
 function it_outputs_a_suite_summary(SuiteEvent $event, ConsoleIO $io, StatisticsCollector $stats)
 {
     $stats->getEventsCount()->willReturn(1);
     $stats->getFailedEvents()->willReturn(array());
     $stats->getBrokenEvents()->willReturn(array());
     $stats->getPendingEvents()->willReturn(array());
     $stats->getSkippedEvents()->willReturn(array());
     $stats->getTotalSpecs()->willReturn(15);
     $event->getTime()->willReturn(12.345);
     $stats->getCountsHash()->willReturn(array('passed' => 1, 'pending' => 0, 'skipped' => 0, 'failed' => 2, 'broken' => 0));
     $this->afterSuite($event);
     $io->writeln('15 specs')->shouldHaveBeenCalled();
     $io->writeln("\n12345ms")->shouldHaveBeenCalled();
     $io->write('1 example ')->shouldHaveBeenCalled();
     $expected = '(<passed>1 passed</passed>, <failed>2 failed</failed>)';
     $io->write($expected)->shouldHaveBeenCalled();
 }
예제 #15
0
 /**
  * @param SuiteEvent $suiteEvent
  */
 public function afterSuite(SuiteEvent $suiteEvent)
 {
     if ($suiteEvent->isWorthRerunning()) {
         $this->reRunner->reRunSuite();
     }
 }
 function it_tells_the_rerunner_to_rerun_if_it_is_worth_doing_so(SuiteEvent $suiteEvent, ReRunner $reRunner)
 {
     $suiteEvent->isWorthRerunning()->willReturn(true);
     $this->afterSuite($suiteEvent);
     $reRunner->reRunSuite()->shouldHaveBeenCalled();
 }
 function it_prompts_and_warns_when_one_method_name_is_correct_but_other_reserved(ExampleEvent $event, SuiteEvent $suiteEvent, ConsoleIO $io, NameChecker $nameChecker)
 {
     $this->callAfterExample($event, $nameChecker, 'throw', false);
     $this->callAfterExample($event, $nameChecker, 'foo');
     $io->writeBrokenCodeBlock("I cannot generate the method 'throw' for you because it is a reserved keyword", 2)->shouldBeCalled();
     $io->askConfirmation(Argument::any())->shouldBeCalled();
     $suiteEvent->markAsNotWorthRerunning()->shouldBeCalled();
     $this->afterSuite($suiteEvent);
 }
예제 #18
0
 public function afterSuiteEvent(SuiteEvent $event)
 {
     $this->currentExample->setCurrentExample('Exited with code: ' . $event->getResult());
 }
예제 #19
0
 /**
  * {@inheritdoc}
  */
 public function afterSuite(SuiteEvent $event)
 {
     $stats = $this->getStatisticsCollector();
     $this->getIo()->write(sprintf('<?xml version="1.0" encoding="UTF-8" ?>' . "\n" . '<testsuites time="%s" tests="%s" failures="%s" errors="%s">' . "\n" . '%s' . "\n" . '</testsuites>', $event->getTime(), $stats->getEventsCount(), count($stats->getFailedEvents()), count($stats->getBrokenEvents()), implode("\n", $this->testSuiteNodes)));
 }
 public function beforeSuite(SuiteEvent $suiteEvent)
 {
     $this->totalSpecsCount = count($suiteEvent->getSuite()->getSpecifications());
 }
 /**
  * @param SuiteEvent $event
  */
 public function afterSuite(SuiteEvent $event)
 {
     foreach ($this->interfaces as $interface => $methods) {
         try {
             $resource = $this->resources->createResource($interface);
         } catch (ResourceCreationException $e) {
             continue;
         }
         foreach ($methods as $method => $arguments) {
             if (in_array($method, $this->wrongMethodNames)) {
                 continue;
             }
             if ($this->io->askConfirmation(sprintf(self::PROMPT, $interface, $method))) {
                 $this->generator->generate($resource, 'method-signature', array('name' => $method, 'arguments' => $this->getRealArguments($arguments)));
                 $event->markAsWorthRerunning();
             }
         }
     }
     if ($this->wrongMethodNames) {
         $this->writeErrorMessage();
         $event->markAsNotWorthRerunning();
     }
 }
 /**
  * @param SuiteEvent $event
  */
 public function beforeSuite(SuiteEvent $event)
 {
     $this->examplesCount = count($event->getSuite());
     $this->getIO()->writeln($this->teamCityMessage("testCount", array("count" => $this->examplesCount)));
 }
 public function afterSuite(SuiteEvent $event)
 {
     if (!$this->io->isCodeGenerationEnabled()) {
         return;
     }
     if (!$this->io->isFakingEnabled()) {
         return;
     }
     foreach ($this->nullMethods as $methodString => $failedCall) {
         $failedCall['expected'] = array_unique($failedCall['expected']);
         if (count($failedCall['expected']) > 1) {
             continue;
         }
         $expected = current($failedCall['expected']);
         $class = $failedCall['class'];
         $message = sprintf('Do you want me to make `%s()` always return %s for you?', $methodString, var_export($expected, true));
         try {
             $resource = $this->resources->createResource($class);
         } catch (\RuntimeException $exception) {
             continue;
         }
         if ($this->io->askConfirmation($message)) {
             $this->generator->generate($resource, 'returnConstant', array('method' => $failedCall['method'], 'expected' => $expected));
             $event->markAsWorthRerunning();
         }
     }
 }