Skip to content

Commit

Permalink
[PhpUnitBridge] Add compatibility to PHPUnit 9 #35662
Browse files Browse the repository at this point in the history
  • Loading branch information
Benjamin committed Feb 14, 2020
1 parent 7a6e3c0 commit d2dbb17
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 2 deletions.
63 changes: 63 additions & 0 deletions src/Symfony/Bridge/PhpUnit/Legacy/CommandForV9.php
@@ -0,0 +1,63 @@
<?php

/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* 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();
}
}
4 changes: 3 additions & 1 deletion src/Symfony/Bridge/PhpUnit/TextUI/Command.php
Expand Up @@ -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(), '6.0.0', '>=') && 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) {
Expand Down
5 changes: 4 additions & 1 deletion src/Symfony/Bridge/PhpUnit/bin/simple-phpunit.php
Expand Up @@ -93,7 +93,10 @@
}
};

if (PHP_VERSION_ID >= 70200) {
if (PHP_VERSION_ID >= 70300) {
// PHPUnit 9 requires PHP 7.3+
$PHPUNIT_VERSION = $getEnvVar('SYMFONY_PHPUNIT_VERSION', '9.0');
} elseif (PHP_VERSION_ID >= 70200) {
// PHPUnit 8 requires PHP 7.2+
$PHPUNIT_VERSION = $getEnvVar('SYMFONY_PHPUNIT_VERSION', '8.3');
} elseif (PHP_VERSION_ID >= 70100) {
Expand Down

0 comments on commit d2dbb17

Please sign in to comment.