Security update for permissions_by_term
[yaffs-website] / vendor / behat / behat / src / Behat / Behat / Output / Node / Printer / ListPrinter.php
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 (file)
index 0000000..31e8388
--- /dev/null
@@ -0,0 +1,271 @@
+<?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\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 <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);
+    }
+}