4 * This file is part of the Behat Testwork.
5 * (c) Konstantin Kudryashov <ever.zet@gmail.com>
7 * For the full copyright and license information, please view the LICENSE
8 * file that was distributed with this source code.
11 namespace Behat\Testwork\Tester\Runtime;
13 use Behat\Testwork\Environment\EnvironmentManager;
14 use Behat\Testwork\Specification\GroupedSpecificationIterator;
15 use Behat\Testwork\Tester\Exercise;
16 use Behat\Testwork\Tester\Result\IntegerTestResult;
17 use Behat\Testwork\Tester\Result\TestResult;
18 use Behat\Testwork\Tester\Result\TestResults;
19 use Behat\Testwork\Tester\Result\TestWithSetupResult;
20 use Behat\Testwork\Tester\Setup\SuccessfulSetup;
21 use Behat\Testwork\Tester\Setup\SuccessfulTeardown;
22 use Behat\Testwork\Tester\SuiteTester;
25 * Tester executing exercises in the runtime.
27 * @author Konstantin Kudryashov <ever.zet@gmail.com>
29 final class RuntimeExercise implements Exercise
32 * @var EnvironmentManager
43 * @param EnvironmentManager $envManager
44 * @param SuiteTester $suiteTester
46 public function __construct(EnvironmentManager $envManager, SuiteTester $suiteTester)
48 $this->envManager = $envManager;
49 $this->suiteTester = $suiteTester;
55 public function setUp(array $iterators, $skip)
57 return new SuccessfulSetup();
63 public function test(array $iterators, $skip = false)
66 foreach (GroupedSpecificationIterator::group($iterators) as $iterator) {
67 $environment = $this->envManager->buildEnvironment($iterator->getSuite());
69 $setup = $this->suiteTester->setUp($environment, $iterator, $skip);
70 $localSkip = !$setup->isSuccessful() || $skip;
71 $testResult = $this->suiteTester->test($environment, $iterator, $localSkip);
72 $teardown = $this->suiteTester->tearDown($environment, $iterator, $localSkip, $testResult);
74 $integerResult = new IntegerTestResult($testResult->getResultCode());
75 $results[] = new TestWithSetupResult($setup, $integerResult, $teardown);
78 return new TestResults($results);
84 public function tearDown(array $iterators, $skip, TestResult $result)
86 return new SuccessfulTeardown();