X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fbehat%2Fbehat%2Fsrc%2FBehat%2FBehat%2FOutput%2FNode%2FPrinter%2FListPrinter.php;fp=vendor%2Fbehat%2Fbehat%2Fsrc%2FBehat%2FBehat%2FOutput%2FNode%2FPrinter%2FListPrinter.php;h=31e8388eee8e167379cd25bce2445e0597c7459c;hp=0000000000000000000000000000000000000000;hb=1270d9129ce8f27c9b28b10518e32132c58e0aca;hpb=c27c0f0cdaa3f354b1fe54a56ae7e854be6e3f68 diff --git a/vendor/behat/behat/src/Behat/Behat/Output/Node/Printer/ListPrinter.php b/vendor/behat/behat/src/Behat/Behat/Output/Node/Printer/ListPrinter.php new file mode 100644 index 000000000..31e8388ee --- /dev/null +++ b/vendor/behat/behat/src/Behat/Behat/Output/Node/Printer/ListPrinter.php @@ -0,0 +1,271 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Behat\Behat\Output\Node\Printer; + +use Behat\Behat\Output\Node\Printer\Helper\ResultToStringConverter; +use Behat\Behat\Output\Statistics\HookStat; +use Behat\Behat\Output\Statistics\ScenarioStat; +use Behat\Behat\Output\Statistics\StepStatV2; +use Behat\Behat\Output\Statistics\StepStat; +use Behat\Testwork\Exception\ExceptionPresenter; +use Behat\Testwork\Output\Printer\OutputPrinter; +use Behat\Testwork\Tester\Result\TestResult; +use Symfony\Component\Translation\TranslatorInterface; + +/** + * Behat list printer. + * + * @author Konstantin Kudryashov + */ +final class ListPrinter +{ + /** + * @var ResultToStringConverter + */ + private $resultConverter; + /** + * @var ExceptionPresenter + */ + private $exceptionPresenter; + /** + * @var TranslatorInterface + */ + private $translator; + /** + * @var string + */ + private $basePath; + + /** + * Initializes printer. + * + * @param ResultToStringConverter $resultConverter + * @param ExceptionPresenter $exceptionPresenter + * @param TranslatorInterface $translator + * @param string $basePath + */ + public function __construct( + ResultToStringConverter $resultConverter, + ExceptionPresenter $exceptionPresenter, + TranslatorInterface $translator, + $basePath + ) { + $this->resultConverter = $resultConverter; + $this->exceptionPresenter = $exceptionPresenter; + $this->translator = $translator; + $this->basePath = $basePath; + } + + /** + * Prints scenarios list. + * + * @param OutputPrinter $printer + * @param string $intro + * @param integer $resultCode + * @param ScenarioStat[] $scenarioStats + */ + public function printScenariosList(OutputPrinter $printer, $intro, $resultCode, array $scenarioStats) + { + if (!count($scenarioStats)) { + return; + } + + $style = $this->resultConverter->convertResultCodeToString($resultCode); + $intro = $this->translator->trans($intro, array(), 'output'); + + $printer->writeln(sprintf('--- {+%s}%s{-%s}' . PHP_EOL, $style, $intro, $style)); + foreach ($scenarioStats as $stat) { + $path = $this->relativizePaths((string) $stat); + $printer->writeln(sprintf(' {+%s}%s{-%s}', $style, $path, $style)); + } + + $printer->writeln(); + } + + /** + * Prints step list. + * + * @param OutputPrinter $printer + * @param string $intro + * @param integer $resultCode + * @param StepStat[] $stepStats + */ + public function printStepList(OutputPrinter $printer, $intro, $resultCode, array $stepStats) + { + if (!count($stepStats)) { + return; + } + + $style = $this->resultConverter->convertResultCodeToString($resultCode); + $intro = $this->translator->trans($intro, array(), 'output'); + + $printer->writeln(sprintf('--- {+%s}%s{-%s}' . PHP_EOL, $style, $intro, $style)); + + foreach ($stepStats as $num => $stepStat) { + if ($stepStat instanceof StepStatV2) { + $this->printStepStat($printer, $num + 1, $stepStat, $style); + } elseif ($stepStat instanceof StepStat) { + $this->printStat($printer, $stepStat->getText(), $stepStat->getPath(), $style, $stepStat->getStdOut(), $stepStat->getError()); + } + } + } + + /** + * Prints failed hooks list. + * + * @param OutputPrinter $printer + * @param string $intro + * @param HookStat[] $failedHookStats + */ + public function printFailedHooksList(OutputPrinter $printer, $intro, array $failedHookStats) + { + if (!count($failedHookStats)) { + return; + } + + $style = $this->resultConverter->convertResultCodeToString(TestResult::FAILED); + $intro = $this->translator->trans($intro, array(), 'output'); + + $printer->writeln(sprintf('--- {+%s}%s{-%s}' . PHP_EOL, $style, $intro, $style)); + foreach ($failedHookStats as $hookStat) { + $this->printHookStat($printer, $hookStat, $style); + } + } + + /** + * Prints hook stat. + * + * @param OutputPrinter $printer + * @param string $name + * @param string $path + * @param string $style + * @param null|string $stdOut + * @param null|string $error + * + * @deprecated Remove in 4.0 + */ + private function printStat(OutputPrinter $printer, $name, $path, $style, $stdOut, $error) + { + $path = $this->relativizePaths($path); + $printer->writeln(sprintf(' {+%s}%s{-%s} {+comment}# %s{-comment}', $style, $name, $style, $path)); + + $pad = function ($line) { return ' ' . $line; }; + + if (null !== $stdOut) { + $padText = function ($line) { return ' │ ' . $line; }; + $stdOutString = array_map($padText, explode("\n", $stdOut)); + $printer->writeln(implode("\n", $stdOutString)); + } + + if ($error) { + $exceptionString = implode("\n", array_map($pad, explode("\n", $error))); + $printer->writeln(sprintf('{+%s}%s{-%s}', $style, $exceptionString, $style)); + } + + $printer->writeln(); + } + + /** + * Prints hook stat. + * + * @param OutputPrinter $printer + * @param HookStat $hookStat + * @param string $style + */ + private function printHookStat(OutputPrinter $printer, HookStat $hookStat, $style) + { + $printer->writeln( + sprintf(' {+%s}%s{-%s} {+comment}# %s{-comment}', + $style, $hookStat->getName(), $style, $this->relativizePaths($hookStat->getPath()) + ) + ); + + $pad = function ($line) { return ' ' . $line; }; + + if (null !== $hookStat->getStdOut()) { + $padText = function ($line) { return ' │ ' . $line; }; + $stdOutString = array_map($padText, explode("\n", $hookStat->getStdOut())); + $printer->writeln(implode("\n", $stdOutString)); + } + + if ($hookStat->getError()) { + $exceptionString = implode("\n", array_map($pad, explode("\n", $hookStat->getError()))); + $printer->writeln(sprintf('{+%s}%s{-%s}', $style, $exceptionString, $style)); + } + + $printer->writeln(); + } + + /** + * Prints hook stat. + * + * @param OutputPrinter $printer + * @param integer $number + * @param StepStatV2 $stat + * @param string $style + */ + private function printStepStat(OutputPrinter $printer, $number, StepStatV2 $stat, $style) + { + $maxLength = max(mb_strlen($stat->getScenarioText(), 'utf8'), mb_strlen($stat->getStepText(), 'utf8') + 2) + 1; + + $printer->writeln( + sprintf('%03d {+%s}%s{-%s}%s{+comment}# %s{-comment}', + $number, + $style, + $stat->getScenarioText(), + $style, + str_pad(' ', $maxLength - mb_strlen($stat->getScenarioText(), 'utf8')), + $this->relativizePaths($stat->getScenarioPath()) + ) + ); + + $printer->writeln( + sprintf(' {+%s}%s{-%s}%s{+comment}# %s{-comment}', + $style, + $stat->getStepText(), + $style, + str_pad(' ', $maxLength - mb_strlen($stat->getStepText(), 'utf8') - 2), + $this->relativizePaths($stat->getStepPath()) + ) + ); + + $pad = function ($line) { return ' ' . $line; }; + + if (null !== $stat->getStdOut()) { + $padText = function ($line) { return ' │ ' . $line; }; + $stdOutString = array_map($padText, explode("\n", $stat->getStdOut())); + $printer->writeln(implode("\n", $stdOutString)); + } + + if ($stat->getError()) { + $exceptionString = implode("\n", array_map($pad, explode("\n", $stat->getError()))); + $printer->writeln(sprintf('{+%s}%s{-%s}', $style, $exceptionString, $style)); + } + + $printer->writeln(); + } + + /** + * Transforms path to relative. + * + * @param string $path + * + * @return string + */ + private function relativizePaths($path) + { + if (!$this->basePath) { + return $path; + } + + return str_replace($this->basePath . DIRECTORY_SEPARATOR, '', $path); + } +}