diff --git a/Legacy/CommandForV9.php b/Legacy/CommandForV9.php new file mode 100644 index 00000000..aa48ca5f --- /dev/null +++ b/Legacy/CommandForV9.php @@ -0,0 +1,63 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Bridge\PhpUnit\Legacy; + +use PHPUnit\TextUI\Command as BaseCommand; +use PHPUnit\TextUI\Configuration\Configuration; +use PHPUnit\TextUI\Configuration\Registry; +use PHPUnit\TextUI\TestRunner as BaseRunner; +use Symfony\Bridge\PhpUnit\SymfonyTestsListener; + +/** + * {@inheritdoc} + * + * @internal + */ +class CommandForV9 extends BaseCommand +{ + /** + * {@inheritdoc} + */ + protected function createRunner(): BaseRunner + { + $this->arguments['listeners'] = isset($this->arguments['listeners']) ? $this->arguments['listeners'] : []; + + $registeredLocally = false; + + foreach ($this->arguments['listeners'] as $registeredListener) { + if ($registeredListener instanceof SymfonyTestsListener) { + $registeredListener->globalListenerDisabled(); + $registeredLocally = true; + break; + } + } + + if (isset($this->arguments['configuration'])) { + $configuration = $this->arguments['configuration']; + if (!$configuration instanceof Configuration) { + $configuration = Registry::getInstance()->get($this->arguments['configuration']); + } + foreach ($configuration->listeners() as $registeredListener) { + if ('Symfony\Bridge\PhpUnit\SymfonyTestsListener' === ltrim($registeredListener->className(), '\\')) { + $registeredLocally = true; + break; + } + } + } + + if (!$registeredLocally) { + $this->arguments['listeners'][] = new SymfonyTestsListener(); + } + + return parent::createRunner(); + } +} diff --git a/Legacy/CoverageListenerForV6.php b/Legacy/CoverageListenerForV6.php index 0917ea47..1b3ceec1 100644 --- a/Legacy/CoverageListenerForV6.php +++ b/Legacy/CoverageListenerForV6.php @@ -11,8 +11,9 @@ namespace Symfony\Bridge\PhpUnit\Legacy; -use PHPUnit\Framework\BaseTestListener; use PHPUnit\Framework\Test; +use PHPUnit\Framework\TestListener; +use PHPUnit\Framework\TestListenerDefaultImplementation; /** * CoverageListener adds `@covers ` on each test when possible to @@ -22,8 +23,10 @@ * * @internal */ -class CoverageListenerForV6 extends BaseTestListener +class CoverageListenerForV6 implements TestListener { + use TestListenerDefaultImplementation; + private $trait; public function __construct(callable $sutFqcnResolver = null, $warningOnSutNotFound = false) diff --git a/TextUI/Command.php b/TextUI/Command.php index be73e4d2..8690812b 100644 --- a/TextUI/Command.php +++ b/TextUI/Command.php @@ -13,8 +13,10 @@ if (version_compare(\PHPUnit\Runner\Version::id(), '6.0.0', '<')) { class_alias('Symfony\Bridge\PhpUnit\Legacy\CommandForV5', 'Symfony\Bridge\PhpUnit\TextUI\Command'); -} else { +} elseif (version_compare(\PHPUnit\Runner\Version::id(), '9.0.0', '<')) { class_alias('Symfony\Bridge\PhpUnit\Legacy\CommandForV6', 'Symfony\Bridge\PhpUnit\TextUI\Command'); +} else { + class_alias('Symfony\Bridge\PhpUnit\Legacy\CommandForV9', 'Symfony\Bridge\PhpUnit\TextUI\Command'); } if (false) { diff --git a/composer.json b/composer.json index 9c0965df..9846aa97 100644 --- a/composer.json +++ b/composer.json @@ -24,7 +24,7 @@ "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0|<6.4,>=6.0" }, "autoload": { "files": [ "bootstrap.php" ],