Skip to content

Commit

Permalink
[PhpUnitBridge] Fix ExpectDeprecationTrait::expectDeprecation() conflict
Browse files Browse the repository at this point in the history
  • Loading branch information
fancyweb committed Jun 8, 2020
1 parent 0b19249 commit 8911978
Show file tree
Hide file tree
Showing 4 changed files with 145 additions and 14 deletions.
23 changes: 9 additions & 14 deletions src/Symfony/Bridge/PhpUnit/ExpectDeprecationTrait.php
Expand Up @@ -11,21 +11,16 @@

namespace Symfony\Bridge\PhpUnit;

use Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerTrait;
use Symfony\Bridge\PhpUnit\Legacy\ExpectDeprecationTraitBeforeV8_4;

trait ExpectDeprecationTrait
{
/**
* @param string $message
*
* @return void
*/
protected function expectDeprecation($message)
if (version_compare(\PHPUnit\Runner\Version::id(), '8.4.0', '<')) {
trait ExpectDeprecationTrait
{
if (!SymfonyTestsListenerTrait::$previousErrorHandler) {
SymfonyTestsListenerTrait::$previousErrorHandler = set_error_handler([SymfonyTestsListenerTrait::class, 'handleError']);
}

SymfonyTestsListenerTrait::$expectedDeprecations[] = $message;
use ExpectDeprecationTraitBeforeV8_4;
}
} else {
trait ExpectDeprecationTrait
{
use \Symfony\Bridge\PhpUnit\Legacy\ExpectDeprecationTrait;
}
}
52 changes: 52 additions & 0 deletions src/Symfony/Bridge/PhpUnit/Legacy/ExpectDeprecationTrait.php
@@ -0,0 +1,52 @@
<?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;

/**
* @internal use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait instead.
*/
trait ExpectDeprecationTrait
{
/**
* @param string $message
*/
public function expectDeprecation(): void
{
if (1 > func_num_args() || !\is_string($message = func_get_arg(0))) {
throw new \InvalidArgumentException(sprintf('The "%s()" method requires the string $message argument.', __FUNCTION__));
}

\Closure::bind(function (string $message): void {
$this->expectDeprecation($message);
}, $o = new class() {
use ExpectDeprecationTraitBeforeV8_4 {
expectDeprecation as public;
}
})($message);
}

/**
* @internal use expectDeprecation() instead.
*/
public function expectDeprecationMessage(string $message): void
{
throw new \BadMethodCallException(sprintf("The "%s()" method is not supported by Symfony's PHPUnit Bridge ExpectDeprecationTrait.", __FUNCTION__));
}

/**
* @internal use expectDeprecation() instead.
*/
public function expectDeprecationMessageMatches(string $regularExpression): void
{
throw new \BadMethodCallException(sprintf("The "%s()" method is not supported by Symfony's PHPUnit Bridge ExpectDeprecationTrait.", __FUNCTION__));
}
}
52 changes: 52 additions & 0 deletions src/Symfony/Bridge/PhpUnit/Legacy/ExpectDeprecationTrait.php.orig
@@ -0,0 +1,52 @@
<?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;

/**
* @internal use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait instead.
*/
trait ExpectDeprecationTrait
{
/**
* @param string $message
*/
public function expectDeprecation(): void
{
if (1 > func_num_args() || !\is_string($message = func_get_arg(0))) {
throw new \InvalidArgumentException(sprintf('The %s() method requires the string $message argument.', __FUNCTION__));
}

\Closure::bind(function (string $message): void {
$this->expectDeprecation($message);
}, $o = new class() {
use ExpectDeprecationTraitBeforeV8_4 {
expectDeprecation as public;
}
})($message);
}

/**
* @internal use expectDeprecation() instead.
*/
public function expectDeprecationMessage(string $message): void
{
throw new \BadMethodCallException(sprintf("The %s() method is not supported by Symfony's PHPUnit Bridge ExpectDeprecationTrait.", __FUNCTION__));
}

/**
* @internal use expectDeprecation() instead.
*/
public function expectDeprecationMessageMatches(string $regularExpression): void
{
throw new \BadMethodCallException(sprintf("The %s() method is not supported by Symfony's PHPUnit Bridge ExpectDeprecationTrait.", __FUNCTION__));
}
}
@@ -0,0 +1,32 @@
<?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;

/**
* @internal, use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait instead.
*/
trait ExpectDeprecationTraitBeforeV8_4
{
/**
* @param string $message
*
* @return void
*/
protected function expectDeprecation($message)
{
if (!SymfonyTestsListenerTrait::$previousErrorHandler) {
SymfonyTestsListenerTrait::$previousErrorHandler = set_error_handler([SymfonyTestsListenerTrait::class, 'handleError']);
}

SymfonyTestsListenerTrait::$expectedDeprecations[] = $message;
}
}

0 comments on commit 8911978

Please sign in to comment.