Security update for permissions_by_term
[yaffs-website] / vendor / behat / behat / src / Behat / Behat / Output / Node / Printer / JUnit / JUnitScenarioPrinter.php
diff --git a/vendor/behat/behat/src/Behat/Behat/Output/Node/Printer/JUnit/JUnitScenarioPrinter.php b/vendor/behat/behat/src/Behat/Behat/Output/Node/Printer/JUnit/JUnitScenarioPrinter.php
new file mode 100644 (file)
index 0000000..cf61eaa
--- /dev/null
@@ -0,0 +1,95 @@
+<?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\JUnit;
+
+use Behat\Behat\Output\Node\EventListener\JUnit\JUnitOutlineStoreListener;
+use Behat\Behat\Output\Node\Printer\Helper\ResultToStringConverter;
+use Behat\Gherkin\Node\ExampleNode;
+use Behat\Gherkin\Node\FeatureNode;
+use Behat\Gherkin\Node\OutlineNode;
+use Behat\Gherkin\Node\ScenarioLikeInterface;
+use Behat\Testwork\Output\Formatter;
+use Behat\Testwork\Output\Printer\JUnitOutputPrinter;
+use Behat\Testwork\Tester\Result\TestResult;
+
+/**
+ * Prints the <testcase> element.
+ *
+ * @author Wouter J <wouter@wouterj.nl>
+ */
+final class JUnitScenarioPrinter
+{
+    /**
+     * @var ResultToStringConverter
+     */
+    private $resultConverter;
+
+    /**
+     * @var JUnitOutlineStoreListener
+     */
+    private $outlineStoreListener;
+
+    /**
+     * @var OutlineNode
+     */
+    private $lastOutline;
+
+    /**
+     * @var int
+     */
+    private $outlineStepCount;
+
+    public function __construct(ResultToStringConverter $resultConverter, JUnitOutlineStoreListener $outlineListener)
+    {
+        $this->resultConverter = $resultConverter;
+        $this->outlineStoreListener = $outlineListener;
+    }
+
+    /**
+     * {@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($scenario);
+        }
+
+        /** @var JUnitOutputPrinter $outputPrinter */
+        $outputPrinter = $formatter->getOutputPrinter();
+
+        $outputPrinter->addTestcase(array(
+            'name' => $name,
+            'status' => $this->resultConverter->convertResultToString($result)
+        ));
+    }
+
+    /**
+     * @param ExampleNode $scenario
+     * @return string
+     */
+    private function buildExampleName(ExampleNode $scenario)
+    {
+        $currentOutline = $this->outlineStoreListener->getCurrentOutline($scenario);
+        if ($currentOutline === $this->lastOutline) {
+            $this->outlineStepCount++;
+        } else {
+            $this->lastOutline = $currentOutline;
+            $this->outlineStepCount = 1;
+        }
+
+        $name = $currentOutline->getTitle() . ' #' . $this->outlineStepCount;
+        return $name;
+    }
+}