/** * {@inheritdoc} */ public function printStep(Formatter $formatter, Scenario $scenario, StepNode $step, StepResult $result) { $printer = $formatter->getOutputPrinter(); $style = $this->resultConverter->convertResultToString($result); switch ($result->getResultCode()) { case TestResult::PASSED: $printer->write("{+{$style}}.{-{$style}}"); break; case TestResult::SKIPPED: $printer->write("{+{$style}}-{-{$style}}"); break; case TestResult::PENDING: $printer->write("{+{$style}}P{-{$style}}"); break; case StepResult::UNDEFINED: $printer->write("{+{$style}}U{-{$style}}"); break; case TestResult::FAILED: $printer->write("{+{$style}}F{-{$style}}"); break; } if (++$this->stepsPrinted % 70 == 0) { $printer->writeln(' ' . $this->stepsPrinted); } }
/** * {@inheritdoc} */ public function listenEvent(Formatter $formatter, Event $event, $eventName) { if ($this->value !== $formatter->getParameter($this->name)) { return; } $this->descendant->listenEvent($formatter, $event, $eventName); }
/** * Registers formatter. * * @param Formatter $formatter */ public function registerFormatter(Formatter $formatter) { if (isset($this->formatters[$formatter->getName()])) { $this->disableFormatter($formatter->getName()); } $this->formatters[$formatter->getName()] = $formatter; }
/** * {@inheritdoc} */ public function printExampleRow(Formatter $formatter, OutlineNode $outline, ExampleNode $example, array $events) { $rowNum = array_search($example, $outline->getExamples()) + 1; $wrapper = $this->getWrapperClosure($outline, $example, $events); $row = $outline->getExampleTable()->getRowAsStringWithWrappedValues($rowNum, $wrapper); $formatter->getOutputPrinter()->writeln(sprintf('%s%s', $this->indentText, $row)); $this->printStepExceptionsAndStdOut($formatter->getOutputPrinter(), $events); }
/** * {@inheritdoc} */ public function printHeader(Formatter $formatter, FeatureNode $feature) { if ($feature instanceof TaggedNodeInterface) { $this->printTags($formatter->getOutputPrinter(), $feature->getTags()); } $this->printTitle($formatter->getOutputPrinter(), $feature); $this->printDescription($formatter->getOutputPrinter(), $feature); }
/** * Prints step path comment. * * @param Formatter $formatter * @param Scenario $scenario * @param StepNode $step * @param StepResult $result * @param integer $indentation */ public function printStepPath(Formatter $formatter, Scenario $scenario, StepNode $step, StepResult $result, $indentation) { $printer = $formatter->getOutputPrinter(); if (!$result instanceof DefinedStepResult || !$result->getStepDefinition() || !$formatter->getParameter('paths')) { $printer->writeln(); return; } $textWidth = $this->widthCalculator->calculateStepWidth($step, $indentation); $scenarioWidth = $this->widthCalculator->calculateScenarioWidth($scenario, $indentation - 2, 2); $this->printDefinedStepPath($printer, $result, $scenarioWidth, $textWidth); }
/** * {@inheritDoc} */ public function printOpenTag(Formatter $formatter, FeatureNode $feature, ScenarioLikeInterface $scenario, TestResult $result) { $name = implode(' ', array_map(function ($l) { return trim($l); }, explode("\n", $scenario->getTitle()))); if ($scenario instanceof ExampleNode) { $name = $this->buildExampleName(); } /** @var JUnitOutputPrinter $outputPrinter */ $outputPrinter = $formatter->getOutputPrinter(); $outputPrinter->addTestcase(array('name' => $name, 'status' => $this->resultConverter->convertResultToString($result))); }
/** * {@inheritDoc} */ public function printHeader(Formatter $formatter, FeatureNode $feature) { $stats = $this->statistics->getScenarioStatCounts(); if (0 === count($stats)) { $totalCount = 0; } else { $totalCount = array_sum($stats); } /** @var JUnitOutputPrinter $outputPrinter */ $outputPrinter = $formatter->getOutputPrinter(); $outputPrinter->addTestsuite(array('name' => $feature->getTitle(), 'tests' => $totalCount, 'skipped' => $stats[TestResult::SKIPPED], 'failures' => $stats[TestResult::FAILED], 'errors' => $stats[TestResult::PENDING] + $stats[StepResult::UNDEFINED])); $this->statistics->reset(); }
/** * {@inheritdoc} */ public function printStatistics(Formatter $formatter, Statistics $statistics) { $printer = $formatter->getOutputPrinter(); $scenarioStats = $statistics->getSkippedScenarios(); $this->listPrinter->printScenariosList($printer, 'skipped_scenarios_title', TestResult::SKIPPED, $scenarioStats); $scenarioStats = $statistics->getFailedScenarios(); $this->listPrinter->printScenariosList($printer, 'failed_scenarios_title', TestResult::FAILED, $scenarioStats); $this->counterPrinter->printCounters($printer, 'scenarios_count', $statistics->getScenarioStatCounts()); $this->counterPrinter->printCounters($printer, 'steps_count', $statistics->getStepStatCounts()); if ($formatter->getParameter('timer')) { $timer = $statistics->getTimer(); $memory = $statistics->getMemory(); $formatter->getOutputPrinter()->writeln(sprintf('%s (%s)', $timer, $memory)); } }
/** * {@inheritdoc} */ public function printTeardown(Formatter $formatter, Teardown $teardown) { if (!$teardown instanceof HookedTeardown) { return; } foreach ($teardown->getHookCallResults() as $callResult) { $this->printTeardownHookCallResult($formatter->getOutputPrinter(), $callResult); } }
/** * @param Formatter $formatter * @param CallResults $results * @param string $messageType */ private function handleHookCalls(Formatter $formatter, CallResults $results, $messageType) { /** @var CallResult $hookCallResult */ foreach ($results as $hookCallResult) { if ($hookCallResult->hasException()) { /** @var HookCall $call */ $call = $hookCallResult->getCall(); $scope = $call->getScope(); /** @var JUnitOutputPrinter $outputPrinter */ $outputPrinter = $formatter->getOutputPrinter(); $message = ''; if ($scope instanceof StepScope) { $message .= $scope->getStep()->getKeyword() . ' ' . $scope->getStep()->getText() . ': '; } $message .= $this->exceptionPresenter->presentException($hookCallResult->getException()); $attributes = array('message' => $message, 'type' => $messageType); $outputPrinter->addTestcaseChild('failure', $attributes); } } }
/** * Prints step using provided printer. * * @param Formatter $formatter * @param Scenario $scenario * @param StepNode $step * @param StepResult $result */ public function printStep(Formatter $formatter, Scenario $scenario, StepNode $step, StepResult $result) { /** @var JUnitOutputPrinter $outputPrinter */ $outputPrinter = $formatter->getOutputPrinter(); $message = $step->getKeyword() . ' ' . $step->getText(); if ($result instanceof ExceptionResult && $result->hasException()) { $message .= ': ' . $this->exceptionPresenter->presentException($result->getException()); } $attributes = array('message' => $message); switch ($result->getResultCode()) { case TestResult::FAILED: $outputPrinter->addTestcaseChild('failure', $attributes); break; case TestResult::PENDING: $attributes['type'] = 'pending'; $outputPrinter->addTestcaseChild('error', $attributes); break; case StepResult::UNDEFINED: $attributes['type'] = 'undefined'; $outputPrinter->addTestcaseChild('error', $attributes); break; } }
/** * {@inheritdoc} */ public function printFooter(Formatter $formatter, TestResult $result) { $formatter->getOutputPrinter()->writeln(); }
/** * {@inheritdoc} */ public function printHeader(Formatter $formatter, FeatureNode $feature, ExampleNode $example) { $this->printTitle($formatter->getOutputPrinter(), $example); $this->pathPrinter->printScenarioPath($formatter, $feature, $example, mb_strlen($this->indentText, 'utf8')); }
/** * Prints step multiline arguments. * * @param Formatter $formatter * @param ArgumentInterface[] $arguments */ private function printArguments(Formatter $formatter, array $arguments) { $style = $this->resultConverter->convertResultCodeToString(TestResult::SKIPPED); foreach ($arguments as $argument) { $text = $this->getArgumentString($argument, !$formatter->getParameter('multiline')); $indentedText = implode("\n", array_map(array($this, 'subIndent'), explode("\n", $text))); $formatter->getOutputPrinter()->writeln(sprintf('{+%s}%s{-%s}', $style, $indentedText, $style)); } }
/** * {@inheritDoc} */ public function printFooter(Formatter $formatter, Suite $suite) { $formatter->getOutputPrinter()->flush(); }
function its_printFooter_should_write_empty_line(Formatter $formatter, OutputPrinter $printer, TestResult $testResult) { $printer->writeln()->shouldBeCalled(); $formatter->getOutputPrinter()->shouldBecalled()->willReturn($printer); $this->printFooter($formatter, $testResult); }