Security update for permissions_by_term
[yaffs-website] / vendor / behat / behat / src / Behat / Testwork / Hook / Tester / HookableSuiteTester.php
1 <?php
2
3 /*
4  * This file is part of the Behat.
5  * (c) Konstantin Kudryashov <ever.zet@gmail.com>
6  *
7  * For the full copyright and license information, please view the LICENSE
8  * file that was distributed with this source code.
9  */
10
11 namespace Behat\Testwork\Hook\Tester;
12
13 use Behat\Testwork\Environment\Environment;
14 use Behat\Testwork\Hook\HookDispatcher;
15 use Behat\Testwork\Hook\Scope\AfterSuiteScope;
16 use Behat\Testwork\Hook\Scope\BeforeSuiteScope;
17 use Behat\Testwork\Hook\Tester\Setup\HookedSetup;
18 use Behat\Testwork\Hook\Tester\Setup\HookedTeardown;
19 use Behat\Testwork\Specification\SpecificationIterator;
20 use Behat\Testwork\Tester\Result\TestResult;
21 use Behat\Testwork\Tester\SuiteTester;
22
23 /**
24  * Suite tester which dispatches hooks during its execution.
25  *
26  * @author Konstantin Kudryashov <ever.zet@gmail.com>
27  */
28 final class HookableSuiteTester implements SuiteTester
29 {
30     /**
31      * @var SuiteTester
32      */
33     private $baseTester;
34     /**
35      * @var HookDispatcher
36      */
37     private $hookDispatcher;
38
39     /**
40      * Initializes tester.
41      *
42      * @param SuiteTester    $baseTester
43      * @param HookDispatcher $hookDispatcher
44      */
45     public function __construct(SuiteTester $baseTester, HookDispatcher $hookDispatcher)
46     {
47         $this->baseTester = $baseTester;
48         $this->hookDispatcher = $hookDispatcher;
49     }
50
51     /**
52      * {@inheritdoc}
53      */
54     public function setUp(Environment $env, SpecificationIterator $iterator, $skip)
55     {
56         $setup = $this->baseTester->setUp($env, $iterator, $skip);
57
58         if ($skip) {
59             return $setup;
60         }
61
62         $scope = new BeforeSuiteScope($env, $iterator);
63         $hookCallResults = $this->hookDispatcher->dispatchScopeHooks($scope);
64
65         return new HookedSetup($setup, $hookCallResults);
66     }
67
68     /**
69      * {@inheritdoc}
70      */
71     public function test(Environment $env, SpecificationIterator $iterator, $skip)
72     {
73         return $this->baseTester->test($env, $iterator, $skip);
74     }
75
76     /**
77      * {@inheritdoc}
78      */
79     public function tearDown(Environment $env, SpecificationIterator $iterator, $skip, TestResult $result)
80     {
81         $teardown = $this->baseTester->tearDown($env, $iterator, $skip, $result);
82
83         if ($skip) {
84             return $teardown;
85         }
86
87         $scope = new AfterSuiteScope($env, $iterator, $result);
88         $hookCallResults = $this->hookDispatcher->dispatchScopeHooks($scope);
89
90         return new HookedTeardown($teardown, $hookCallResults);
91     }
92 }