mirror of
https://github.com/netzbegruenung/user_saml.git
synced 2024-05-14 14:46:06 +02:00
3435d5093a
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
272 lines
8.5 KiB
PHP
272 lines
8.5 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Behat.
|
|
* (c) Konstantin Kudryashov <ever.zet@gmail.com>
|
|
*
|
|
* 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\Definition\Translator\TranslatorInterface;
|
|
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;
|
|
|
|
/**
|
|
* Behat list printer.
|
|
*
|
|
* @author Konstantin Kudryashov <ever.zet@gmail.com>
|
|
*/
|
|
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);
|
|
}
|
|
}
|