magento2-docker/dev/tests/integration/framework/Magento/TestFramework/SuiteLoader.php

69 lines
1.5 KiB
PHP
Executable File

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\TestFramework;
use Magento\TestFramework\Workaround\Override\Config;
use Magento\TestFramework\Workaround\Override\WrapperGenerator;
use PHPUnit\Runner\StandardTestSuiteLoader;
use PHPUnit\Runner\TestSuiteLoader;
/**
* Custom suite loader for adding wrapper for tests.
*/
class SuiteLoader implements TestSuiteLoader
{
/**
* @var StandardTestSuiteLoader
*/
private $suiteLoader;
/**
* @var WrapperGenerator
*/
private $generator;
/**
* @var Config
*/
private $testsConfig;
/**
* SuiteLoader constructor.
*/
public function __construct()
{
$this->suiteLoader = new StandardTestSuiteLoader();
$this->generator = new WrapperGenerator();
$this->testsConfig = Config::getInstance();
}
/**
* @inheritdoc
*/
public function load(string $suiteClassFile): \ReflectionClass
{
$resultClass = $this->suiteLoader->load($suiteClassFile);
if ($this->testsConfig->hasSkippedTest($resultClass->getName())
&& !in_array(SkippableInterface::class, $resultClass->getInterfaceNames(), true)
) {
$resultClass = new \ReflectionClass($this->generator->generateTestWrapper($resultClass));
}
return $resultClass;
}
/**
* @inheritdoc
*/
public function reload(\ReflectionClass $aClass): \ReflectionClass
{
return $aClass;
}
}