Skip to content

Commit 62cad12

Browse files
committed
Fix compatibility with phpunit 9.3
1 parent 5977749 commit 62cad12

File tree

2 files changed

+94
-10
lines changed

2 files changed

+94
-10
lines changed

dev/tests/api-functional/testsuite/Magento/WebApiTest.php

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,16 @@
1111
use Magento\TestFramework\Workaround\Override\Config;
1212
use Magento\TestFramework\Workaround\Override\WrapperGenerator;
1313
use PHPUnit\Framework\TestSuite;
14+
use PHPUnit\TextUI\Configuration\Configuration as LegacyConfiguration;
1415
use PHPUnit\TextUI\Configuration\Registry;
15-
use PHPUnit\TextUI\Configuration\TestSuiteCollection;
16-
use PHPUnit\TextUI\Configuration\TestSuiteMapper;
16+
use PHPUnit\TextUI\Configuration\TestSuite as LegacyTestSuiteConfiguration;
17+
use PHPUnit\TextUI\Configuration\TestSuiteCollection as LegacyTestSuiteCollection;
18+
use PHPUnit\TextUI\Configuration\TestSuiteMapper as LegacyTestSuiteMapper;
19+
use PHPUnit\TextUI\XmlConfiguration\Configuration;
20+
use PHPUnit\TextUI\XmlConfiguration\Loader;
21+
use PHPUnit\TextUI\XmlConfiguration\TestSuite as TestSuiteConfiguration;
22+
use PHPUnit\TextUI\XmlConfiguration\TestSuiteCollection;
23+
use PHPUnit\TextUI\XmlConfiguration\TestSuiteMapper;
1724

1825
/**
1926
* Web API tests wrapper.
@@ -24,17 +31,17 @@ class WebApiTest extends TestSuite
2431
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
2532
* @param string $className
2633
* @return TestSuite
34+
* @throws \ReflectionException
2735
*/
2836
public static function suite($className)
2937
{
3038
$generator = new WrapperGenerator();
3139
$overrideConfig = Config::getInstance();
32-
$configuration = Registry::getInstance()->get(self::getConfigurationFile());
40+
$configuration = self::getConfiguration();
3341
$suitesConfig = $configuration->testSuite();
3442
$suite = new TestSuite();
35-
/** @var \PHPUnit\TextUI\Configuration\TestSuite $suiteConfig */
3643
foreach ($suitesConfig as $suiteConfig) {
37-
$suites = (new TestSuiteMapper())->map(TestSuiteCollection::fromArray([$suiteConfig]), '');
44+
$suites = self::getSuites($suiteConfig);
3845
/** @var TestSuite $testSuite */
3946
foreach ($suites as $testSuite) {
4047
/** @var TestSuite $test */
@@ -68,4 +75,39 @@ private static function getConfigurationFile(): string
6875

6976
return $shortConfig ? $shortConfig : $longConfig;
7077
}
78+
79+
/**
80+
* Retrieve configuration depends on used phpunit version
81+
*
82+
* @return Configuration|LegacyConfiguration
83+
*/
84+
private static function getConfiguration()
85+
{
86+
// Compatibility with phpunit < 9.3
87+
if (!class_exists(Configuration::class)) {
88+
// @phpstan-ignore-next-line
89+
return Registry::getInstance()->get(self::getConfigurationFile());
90+
}
91+
92+
// @phpstan-ignore-next-line
93+
return (new Loader())->load(self::getConfigurationFile());
94+
}
95+
96+
/**
97+
* Retrieve test suites by suite config depends on used phpunit version
98+
*
99+
* @param TestSuiteConfiguration|LegacyTestSuiteConfiguration $suiteConfig
100+
* @return TestSuite
101+
*/
102+
private static function getSuites($suiteConfig)
103+
{
104+
// Compatibility with phpunit < 9.3
105+
if (!class_exists(Configuration::class)) {
106+
// @phpstan-ignore-next-line
107+
return (new LegacyTestSuiteMapper())->map(LegacyTestSuiteCollection::fromArray([$suiteConfig]), '');
108+
}
109+
110+
// @phpstan-ignore-next-line
111+
return (new TestSuiteMapper())->map(TestSuiteCollection::fromArray([$suiteConfig]), '');
112+
}
71113
}

dev/tests/integration/testsuite/Magento/IntegrationTest.php

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,16 @@
1111
use Magento\TestFramework\Workaround\Override\Config;
1212
use Magento\TestFramework\Workaround\Override\WrapperGenerator;
1313
use PHPUnit\Framework\TestSuite;
14+
use PHPUnit\TextUI\Configuration\Configuration as LegacyConfiguration;
1415
use PHPUnit\TextUI\Configuration\Registry;
15-
use PHPUnit\TextUI\Configuration\TestSuiteCollection;
16-
use PHPUnit\TextUI\Configuration\TestSuiteMapper;
16+
use PHPUnit\TextUI\Configuration\TestSuite as LegacyTestSuiteConfiguration;
17+
use PHPUnit\TextUI\Configuration\TestSuiteCollection as LegacyTestSuiteCollection;
18+
use PHPUnit\TextUI\Configuration\TestSuiteMapper as LegacyTestSuiteMapper;
19+
use PHPUnit\TextUI\XmlConfiguration\Configuration;
20+
use PHPUnit\TextUI\XmlConfiguration\Loader;
21+
use PHPUnit\TextUI\XmlConfiguration\TestSuite as TestSuiteConfiguration;
22+
use PHPUnit\TextUI\XmlConfiguration\TestSuiteCollection;
23+
use PHPUnit\TextUI\XmlConfiguration\TestSuiteMapper;
1724

1825
/**
1926
* Integration tests wrapper.
@@ -24,20 +31,20 @@ class IntegrationTest extends TestSuite
2431
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
2532
* @param string $className
2633
* @return TestSuite
34+
* @throws \ReflectionException
2735
*/
2836
public static function suite($className)
2937
{
3038
$generator = new WrapperGenerator();
3139
$overrideConfig = Config::getInstance();
32-
$configuration = Registry::getInstance()->get(self::getConfigurationFile());
40+
$configuration = self::getConfiguration();
3341
$suitesConfig = $configuration->testSuite();
3442
$suite = new TestSuite();
35-
/** @var \PHPUnit\TextUI\Configuration\TestSuite $suiteConfig */
3643
foreach ($suitesConfig as $suiteConfig) {
3744
if ($suiteConfig->name() === 'Magento Integration Tests') {
3845
continue;
3946
}
40-
$suites = (new TestSuiteMapper())->map(TestSuiteCollection::fromArray([$suiteConfig]), '');
47+
$suites = self::getSuites($suiteConfig);
4148
/** @var TestSuite $testSuite */
4249
foreach ($suites as $testSuite) {
4350
/** @var TestSuite $test */
@@ -71,4 +78,39 @@ private static function getConfigurationFile(): string
7178

7279
return $shortConfig ? $shortConfig : $longConfig;
7380
}
81+
82+
/**
83+
* Retrieve configuration depends on used phpunit version
84+
*
85+
* @return Configuration|LegacyConfiguration
86+
*/
87+
private static function getConfiguration()
88+
{
89+
// Compatibility with phpunit < 9.3
90+
if (!class_exists(Configuration::class)) {
91+
// @phpstan-ignore-next-line
92+
return Registry::getInstance()->get(self::getConfigurationFile());
93+
}
94+
95+
// @phpstan-ignore-next-line
96+
return (new Loader())->load(self::getConfigurationFile());
97+
}
98+
99+
/**
100+
* Retrieve test suites by suite config depends on used phpunit version
101+
*
102+
* @param TestSuiteConfiguration|LegacyTestSuiteConfiguration $suiteConfig
103+
* @return TestSuite
104+
*/
105+
private static function getSuites($suiteConfig)
106+
{
107+
// Compatibility with phpunit < 9.3
108+
if (!class_exists(Configuration::class)) {
109+
// @phpstan-ignore-next-line
110+
return (new LegacyTestSuiteMapper())->map(LegacyTestSuiteCollection::fromArray([$suiteConfig]), '');
111+
}
112+
113+
// @phpstan-ignore-next-line
114+
return (new TestSuiteMapper())->map(TestSuiteCollection::fromArray([$suiteConfig]), '');
115+
}
74116
}

0 commit comments

Comments
 (0)