bug #27086 [PHPUnitBridge] Add an implementation just for php 7.0 (greg0ire)

This PR was merged into the 3.4 branch.

Discussion
----------

[PHPUnitBridge] Add an implementation just for php 7.0

| Q             | A
| ------------- | ---
| Branch?       | 3.4, because the bug only appears on that branch and up
| Bug fix?      | yes
| New feature?  | no <!-- don't forget to update src/**/CHANGELOG.md files -->
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- don't forget to update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | none
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

php 7 does not have the void return type, which means we have to have a specific class for the php 7.0 + phpunit 6 combination.

Commits
-------

fc69307 Add an implementation just for php 7.0
This commit is contained in:
Nicolas Grekas 2018-04-29 18:00:30 -07:00
commit 7242b4c47c
3 changed files with 53 additions and 2 deletions

View File

@ -24,7 +24,7 @@ class TestRunnerForV6 extends BaseRunner
/**
* {@inheritdoc}
*/
protected function handleConfiguration(array &$arguments): void
protected function handleConfiguration(array &$arguments)
{
$listener = new SymfonyTestsListener();

View File

@ -0,0 +1,49 @@
<?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\TestRunner as BaseRunner;
use Symfony\Bridge\PhpUnit\SymfonyTestsListener;
/**
* {@inheritdoc}
*
* @internal
*/
class TestRunnerForV7 extends BaseRunner
{
/**
* {@inheritdoc}
*/
protected function handleConfiguration(array &$arguments): void
{
$listener = new SymfonyTestsListener();
parent::handleConfiguration($arguments);
$arguments['listeners'] = isset($arguments['listeners']) ? $arguments['listeners'] : array();
$registeredLocally = false;
foreach ($arguments['listeners'] as $registeredListener) {
if ($registeredListener instanceof SymfonyTestsListener) {
$registeredListener->globalListenerDisabled();
$registeredLocally = true;
break;
}
}
if (!$registeredLocally) {
$arguments['listeners'][] = $listener;
}
}
}

View File

@ -13,8 +13,10 @@ namespace Symfony\Bridge\PhpUnit\TextUI;
if (class_exists('PHPUnit_Runner_Version') && version_compare(\PHPUnit_Runner_Version::id(), '6.0.0', '<')) {
class_alias('Symfony\Bridge\PhpUnit\Legacy\TestRunnerForV5', 'Symfony\Bridge\PhpUnit\TextUI\TestRunner');
} else {
} elseif (class_exists('PHPUnit_Runner_Version') && version_compare(\PHPUnit_Runner_Version::id(), '7.0.0', '<')) {
class_alias('Symfony\Bridge\PhpUnit\Legacy\TestRunnerForV6', 'Symfony\Bridge\PhpUnit\TextUI\TestRunner');
} else {
class_alias('Symfony\Bridge\PhpUnit\Legacy\TestRunnerForV7', 'Symfony\Bridge\PhpUnit\TextUI\TestRunner');
}
if (false) {