Security update for permissions_by_term
[yaffs-website] / vendor / behat / behat / src / Behat / Behat / Tester / Runtime / RuntimeStepTester.php
diff --git a/vendor/behat/behat/src/Behat/Behat/Tester/Runtime/RuntimeStepTester.php b/vendor/behat/behat/src/Behat/Behat/Tester/Runtime/RuntimeStepTester.php
new file mode 100644 (file)
index 0000000..7031eec
--- /dev/null
@@ -0,0 +1,147 @@
+<?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\Tester\Runtime;
+
+use Behat\Behat\Definition\Call\DefinitionCall;
+use Behat\Behat\Definition\DefinitionFinder;
+use Behat\Behat\Definition\Exception\SearchException;
+use Behat\Behat\Definition\SearchResult;
+use Behat\Behat\Tester\Result\ExecutedStepResult;
+use Behat\Behat\Tester\Result\FailedStepSearchResult;
+use Behat\Behat\Tester\Result\SkippedStepResult;
+use Behat\Behat\Tester\Result\StepResult;
+use Behat\Behat\Tester\Result\UndefinedStepResult;
+use Behat\Behat\Tester\StepTester;
+use Behat\Gherkin\Node\FeatureNode;
+use Behat\Gherkin\Node\StepNode;
+use Behat\Testwork\Call\CallCenter;
+use Behat\Testwork\Environment\Environment;
+use Behat\Testwork\Tester\Setup\SuccessfulSetup;
+use Behat\Testwork\Tester\Setup\SuccessfulTeardown;
+
+/**
+ * Tester executing step tests in the runtime.
+ *
+ * @author Konstantin Kudryashov <ever.zet@gmail.com>
+ */
+final class RuntimeStepTester implements StepTester
+{
+    /**
+     * @var DefinitionFinder
+     */
+    private $definitionFinder;
+    /**
+     * @var CallCenter
+     */
+    private $callCenter;
+
+    /**
+     * Initialize tester.
+     *
+     * @param DefinitionFinder $definitionFinder
+     * @param CallCenter       $callCenter
+     */
+    public function __construct(DefinitionFinder $definitionFinder, CallCenter $callCenter)
+    {
+        $this->definitionFinder = $definitionFinder;
+        $this->callCenter = $callCenter;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setUp(Environment $env, FeatureNode $feature, StepNode $step, $skip)
+    {
+        return new SuccessfulSetup();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function test(Environment $env, FeatureNode $feature, StepNode $step, $skip = false)
+    {
+        try {
+            $search = $this->searchDefinition($env, $feature, $step);
+            $result = $this->testDefinition($env, $feature, $step, $search, $skip);
+        } catch (SearchException $exception) {
+            $result = new FailedStepSearchResult($exception);
+        }
+
+        return $result;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function tearDown(Environment $env, FeatureNode $feature, StepNode $step, $skip, StepResult $result)
+    {
+        return new SuccessfulTeardown();
+    }
+
+    /**
+     * Searches for a definition.
+     *
+     * @param Environment $env
+     * @param FeatureNode $feature
+     * @param StepNode    $step
+     *
+     * @return SearchResult
+     */
+    private function searchDefinition(Environment $env, FeatureNode $feature, StepNode $step)
+    {
+        return $this->definitionFinder->findDefinition($env, $feature, $step);
+    }
+
+    /**
+     * Tests found definition.
+     *
+     * @param Environment  $env
+     * @param FeatureNode  $feature
+     * @param StepNode     $step
+     * @param SearchResult $search
+     * @param Boolean      $skip
+     *
+     * @return StepResult
+     */
+    private function testDefinition(Environment $env, FeatureNode $feature, StepNode $step, SearchResult $search, $skip)
+    {
+        if (!$search->hasMatch()) {
+            return new UndefinedStepResult();
+        }
+
+        if ($skip) {
+            return new SkippedStepResult($search);
+        }
+
+        $call = $this->createDefinitionCall($env, $feature, $search, $step);
+        $result = $this->callCenter->makeCall($call);
+
+        return new ExecutedStepResult($search, $result);
+    }
+
+    /**
+     * Creates definition call.
+     *
+     * @param Environment  $env
+     * @param FeatureNode  $feature
+     * @param SearchResult $search
+     * @param StepNode     $step
+     *
+     * @return DefinitionCall
+     */
+    private function createDefinitionCall(Environment $env, FeatureNode $feature, SearchResult $search, StepNode $step)
+    {
+        $definition = $search->getMatchedDefinition();
+        $arguments = $search->getMatchedArguments();
+
+        return new DefinitionCall($env, $feature, $step, $definition, $arguments);
+    }
+}