Issue #3157434 by alexpott, jungle, dww, mondrake: Deprecate \Drupal\Tests\Traits\ExpectDeprecationTrait in favour of \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait

merge-requests/2/head
catch 2020-08-10 10:59:03 +01:00
parent c3152e5a20
commit 574f8617f3
16 changed files with 30 additions and 165 deletions

View File

@ -24,7 +24,7 @@
"phpunit/phpunit": "^8.4.1",
"phpspec/prophecy": "^1.7",
"symfony/css-selector": "^4.4",
"symfony/phpunit-bridge": "^5.1",
"symfony/phpunit-bridge": "^5.1.3",
"symfony/error-handler": "^4.4",
"justinrainbow/json-schema": "^5.2",
"symfony/filesystem": "^4.4",

79
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "70ccf971aa2cc71e172543e89d868b90",
"content-hash": "c6355fee8b620a19067108002e315194",
"packages": [
{
"name": "asm89/stack-cors",
@ -183,16 +183,6 @@
"zend",
"zikula"
],
"funding": [
{
"url": "https://packagist.com",
"type": "custom"
},
{
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
"type": "tidelift"
}
],
"time": "2020-04-07T06:57:05+00:00"
},
{
@ -385,20 +375,6 @@
"parser",
"php"
],
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
"type": "custom"
},
{
"url": "https://www.patreon.com/phpdoctrine",
"type": "patreon"
},
{
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer",
"type": "tidelift"
}
],
"time": "2020-05-25T17:44:05+00:00"
},
{
@ -1348,12 +1324,6 @@
"laminas",
"zf"
],
"funding": [
{
"url": "https://funding.communitybridge.org/projects/laminas-project",
"type": "community_bridge"
}
],
"time": "2020-05-20T16:45:56+00:00"
},
{
@ -4487,16 +4457,6 @@
"ssl",
"tls"
],
"funding": [
{
"url": "https://packagist.com",
"type": "custom"
},
{
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
"type": "tidelift"
}
],
"time": "2020-04-08T08:27:21+00:00"
},
{
@ -4762,20 +4722,6 @@
"constructor",
"instantiate"
],
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
"type": "custom"
},
{
"url": "https://www.patreon.com/phpdoctrine",
"type": "patreon"
},
{
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
"type": "tidelift"
}
],
"time": "2020-05-29T17:27:14+00:00"
},
{
@ -6477,16 +6423,6 @@
"parser",
"validator"
],
"funding": [
{
"url": "https://github.com/Seldaek",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/seld/jsonlint",
"type": "tidelift"
}
],
"time": "2020-04-30T19:05:18+00:00"
},
{
@ -7007,16 +6943,16 @@
},
{
"name": "symfony/phpunit-bridge",
"version": "v5.1.2",
"version": "v5.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/phpunit-bridge.git",
"reference": "de5f0fec631a0cbfe98630b053be1fad7b75aece"
"reference": "964bd57046dfa48687e1412fe5f8006adfcb9675"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/de5f0fec631a0cbfe98630b053be1fad7b75aece",
"reference": "de5f0fec631a0cbfe98630b053be1fad7b75aece",
"url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/964bd57046dfa48687e1412fe5f8006adfcb9675",
"reference": "964bd57046dfa48687e1412fe5f8006adfcb9675",
"shasum": ""
},
"require": {
@ -7068,9 +7004,6 @@
],
"description": "Symfony PHPUnit Bridge",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/phpunit-bridge/tree/v5.1.1"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
@ -7085,7 +7018,7 @@
"type": "tidelift"
}
],
"time": "2020-06-09T09:56:30+00:00"
"time": "2020-07-23T09:26:24+00:00"
},
{
"name": "theseer/tokenizer",

View File

@ -24,6 +24,6 @@
"symfony/filesystem": "^4.4",
"symfony/finder": "^4.4",
"symfony/lock": "^4.4",
"symfony/phpunit-bridge": "^5.1"
"symfony/phpunit-bridge": "^5.1.3"
}
}

View File

@ -57,7 +57,7 @@
"symfony/filesystem": "v4.4.10",
"symfony/finder": "v4.4.10",
"symfony/lock": "v4.4.10",
"symfony/phpunit-bridge": "v5.1.2",
"symfony/phpunit-bridge": "v5.1.3",
"theseer/tokenizer": "1.1.3",
"webmozart/assert": "1.9.0"
}

View File

@ -4,13 +4,10 @@ namespace Drupal\Tests\entity_test\Functional\Rest;
use Drupal\entity_test\Entity\EntityTestMapField;
use Drupal\Tests\rest\Functional\EntityResource\EntityResourceTestBase;
use Drupal\Tests\Traits\ExpectDeprecationTrait;
use Drupal\user\Entity\User;
abstract class EntityTestMapFieldResourceTestBase extends EntityResourceTestBase {
use ExpectDeprecationTrait;
/**
* {@inheritdoc}
*/

View File

@ -5,13 +5,11 @@ namespace Drupal\Tests\entity_test\Functional\Rest;
use Drupal\entity_test\Entity\EntityTest;
use Drupal\Tests\rest\Functional\EntityResource\EntityResourceTestBase;
use Drupal\Tests\system\Functional\Entity\Traits\EntityDefinitionTestTrait;
use Drupal\Tests\Traits\ExpectDeprecationTrait;
use Drupal\user\Entity\User;
abstract class EntityTestResourceTestBase extends EntityResourceTestBase {
use EntityDefinitionTestTrait;
use ExpectDeprecationTrait;
/**
* {@inheritdoc}

View File

@ -14,7 +14,6 @@ use Drupal\Core\TypedData\DataDefinition;
use Drupal\Core\TypedData\Plugin\DataType\StringData;
use Drupal\Core\TypedData\TypedDataManagerInterface;
use Drupal\KernelTests\KernelTestBase;
use Drupal\Tests\Traits\ExpectDeprecationTrait;
/**
* @coversDefaultClass \Drupal\Core\Plugin\ContextAwarePluginBase
@ -23,8 +22,6 @@ use Drupal\Tests\Traits\ExpectDeprecationTrait;
*/
class ContextAwarePluginBaseTest extends KernelTestBase {
use ExpectDeprecationTrait;
/**
* The plugin instance under test.
*

View File

@ -12,7 +12,6 @@ use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Field\BaseFieldDefinition;
use Drupal\Core\Language\LanguageInterface;
use Drupal\Core\TypedData\TypedDataManagerInterface;
use Drupal\Tests\Traits\ExpectDeprecationTrait;
use Drupal\Tests\UnitTestCase;
use Drupal\Core\Language\Language;
use Symfony\Component\Validator\Validator\ValidatorInterface;
@ -24,8 +23,6 @@ use Symfony\Component\Validator\Validator\ValidatorInterface;
*/
class ContentEntityBaseUnitTest extends UnitTestCase {
use ExpectDeprecationTrait;
/**
* The bundle of the entity under test.
*

View File

@ -10,7 +10,6 @@ use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Entity\EntityTypeRepositoryInterface;
use Drupal\Core\Language\Language;
use Drupal\entity_test\Entity\EntityTestMul;
use Drupal\Tests\Traits\ExpectDeprecationTrait;
use Drupal\Tests\UnitTestCase;
/**
@ -20,8 +19,6 @@ use Drupal\Tests\UnitTestCase;
*/
class EntityUnitTest extends UnitTestCase {
use ExpectDeprecationTrait;
/**
* The entity under test.
*

View File

@ -3,7 +3,6 @@
namespace Drupal\Tests\Core\Render;
use Drupal\Core\Security\UntrustedCallbackException;
use Drupal\Tests\Traits\ExpectDeprecationTrait;
/**
* @coversDefaultClass \Drupal\Core\Render\Renderer
@ -11,8 +10,6 @@ use Drupal\Tests\Traits\ExpectDeprecationTrait;
*/
class RendererCallbackTest extends RendererTestBase {
use ExpectDeprecationTrait;
/**
* {@inheritdoc}
*/

View File

@ -3,9 +3,9 @@
namespace Drupal\Tests\Core\Site;
use Drupal\Core\Site\Settings;
use Drupal\Tests\Traits\ExpectDeprecationTrait;
use Drupal\Tests\UnitTestCase;
use org\bovigo\vfs\vfsStream;
use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait;
/**
* @coversDefaultClass \Drupal\Core\Site\Settings
@ -202,7 +202,7 @@ class SettingsTest extends UnitTestCase {
$instance_property->setValue($deprecated_settings);
if ($expect_deprecation_message) {
$this->addExpectedDeprecationMessage($deprecated_setting['message']);
$this->expectDeprecation($deprecated_setting['message']);
}
Settings::initialize(vfsStream::url('root'), 'sites', $class_loader);

View File

@ -4,7 +4,6 @@ namespace Drupal\Tests\Core\StackMiddleware;
use Drupal\Core\Site\Settings;
use Drupal\Core\StackMiddleware\ReverseProxyMiddleware;
use Drupal\Tests\Traits\ExpectDeprecationTrait;
use Drupal\Tests\UnitTestCase;
use Symfony\Component\HttpFoundation\Request;
@ -14,7 +13,6 @@ use Symfony\Component\HttpFoundation\Request;
* @group StackMiddleware
*/
class ReverseProxyMiddlewareTest extends UnitTestCase {
use ExpectDeprecationTrait;
/**
* @var \Symfony\Component\HttpKernel\HttpKernelInterface|\PHPUnit\Framework\MockObject\MockObject

View File

@ -9,12 +9,17 @@ use Drupal\Tests\Traits\ExpectDeprecationTrait;
*
* @group Test
* @group legacy
*
* Do not remove this test when \Drupal\Tests\Traits\ExpectDeprecationTrait is
* removed. Change it to use \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait
* instead to ensure Drupal has test coverage of Symfony's deprecation testing.
*/
class ExpectDeprecationTest extends UnitTestCase {
use ExpectDeprecationTrait;
/**
* @covers ::addExpectedDeprecationMessage
* @expectedDeprecation Drupal\Tests\Traits\ExpectDeprecationTrait::addExpectedDeprecationMessage() is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait::expectDeprecation() instead. See https://www.drupal.org/node/3161901
*/
public function testExpectDeprecation() {
$this->addExpectedDeprecationMessage('Test deprecation');
@ -25,10 +30,12 @@ class ExpectDeprecationTest extends UnitTestCase {
* @covers ::addExpectedDeprecationMessage
* @runInSeparateProcess
* @preserveGlobalState disabled
* @expectedDeprecation Drupal\Tests\Traits\ExpectDeprecationTrait::addExpectedDeprecationMessage() is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait::expectDeprecation() instead. See https://www.drupal.org/node/3161901
* @expectedDeprecation Drupal\Tests\Traits\ExpectDeprecationTrait::expectedDeprecations() is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait::expectDeprecation() instead. See https://www.drupal.org/node/3161901
*/
public function testExpectDeprecationInIsolation() {
$this->addExpectedDeprecationMessage('Test isolated deprecation');
$this->addExpectedDeprecationMessage('Test isolated deprecation2');
$this->expectedDeprecations(['Test isolated deprecation2']);
@trigger_error('Test isolated deprecation', E_USER_DEPRECATED);
@trigger_error('Test isolated deprecation2', E_USER_DEPRECATED);
}

View File

@ -2,8 +2,6 @@
namespace Drupal\Tests\Listeners;
use Drupal\Tests\Traits\ExpectDeprecationTrait;
use PHPUnit\Framework\TestCase;
use PHPUnit\Util\Test;
/**
@ -15,8 +13,6 @@ use PHPUnit\Util\Test;
*/
trait DeprecationListenerTrait {
use ExpectDeprecationTrait;
/**
* The previous error handler.
*
@ -24,14 +20,6 @@ trait DeprecationListenerTrait {
*/
private $previousHandler;
protected function deprecationStartTest($test) {
if ($test instanceof TestCase) {
if ($this->willBeIsolated($test)) {
putenv('DRUPAL_EXPECTED_DEPRECATIONS_SERIALIZE=' . tempnam(sys_get_temp_dir(), 'exdep'));
}
}
}
/**
* Reacts to the end of a test.
*
@ -42,13 +30,6 @@ trait DeprecationListenerTrait {
*/
protected function deprecationEndTest($test, $time) {
/** @var \PHPUnit\Framework\Test $test */
if ($file = getenv('DRUPAL_EXPECTED_DEPRECATIONS_SERIALIZE')) {
putenv('DRUPAL_EXPECTED_DEPRECATIONS_SERIALIZE');
$expected_deprecations = file_get_contents($file);
if ($expected_deprecations) {
$test->expectedDeprecations(unserialize($expected_deprecations));
}
}
if ($file = getenv('SYMFONY_DEPRECATIONS_SERIALIZE')) {
$method = $test->getName(FALSE);
if (strpos($method, 'testLegacy') === 0
@ -77,26 +58,6 @@ trait DeprecationListenerTrait {
}
}
/**
* Determines if a test is isolated.
*
* @param \PHPUnit\Framework\TestCase $test
* The test to check.
*
* @return bool
* TRUE if the isolated, FALSE if not.
*/
private function willBeIsolated($test) {
if ($test->isInIsolation()) {
return FALSE;
}
$r = new \ReflectionProperty($test, 'runTestInSeparateProcess');
$r->setAccessible(TRUE);
return $r->getValue($test);
}
/**
* Determines if a deprecation error should be skipped.
*

View File

@ -81,7 +81,6 @@ class DrupalListener implements TestListener {
// \Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerTrait::startTest()
// that handles expected deprecations.
$this->registerErrorHandler();
$this->deprecationStartTest($test);
$this->symfonyListener->startTest($test);
// Check for missing void return typehints in concrete test classes'
// methods. If the method is inherited from a base test class, do

View File

@ -2,17 +2,20 @@
namespace Drupal\Tests\Traits;
use Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerTrait;
use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait as SymfonyExpectDeprecationTrait;
/**
* Adds the ability to dynamically set expected deprecation messages in tests.
*
* @internal
*
* @todo https://www.drupal.org/project/drupal/issues/3157434 Deprecate the
* trait and its methods.
* @deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use
* \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait instead.
*
* @see https://www.drupal.org/node/3161901
*/
trait ExpectDeprecationTrait {
use SymfonyExpectDeprecationTrait;
/**
* Sets an expected deprecation message.
@ -21,7 +24,8 @@ trait ExpectDeprecationTrait {
* The expected deprecation message.
*/
protected function addExpectedDeprecationMessage($message) {
$this->expectedDeprecations([$message]);
@trigger_error(__METHOD__ . '() is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait::expectDeprecation() instead. See https://www.drupal.org/node/3161901', E_USER_DEPRECATED);
$this->expectDeprecation($message);
}
/**
@ -33,29 +37,9 @@ trait ExpectDeprecationTrait {
* @see \Symfony\Bridge\PhpUnit\Legacy\ExpectDeprecationTraitForV8_4::expectDeprecation()
*/
public function expectedDeprecations(array $messages) {
$this->getTestResultObject()->beStrictAboutTestsThatDoNotTestAnything(FALSE);
// Expected deprecations set by isolated tests need to be written to a file
// so that the test running process can take account of them.
if ($file = getenv('DRUPAL_EXPECTED_DEPRECATIONS_SERIALIZE')) {
$expected_deprecations = file_get_contents($file);
if ($expected_deprecations) {
$expected_deprecations = array_merge(unserialize($expected_deprecations), $messages);
}
else {
$expected_deprecations = $messages;
}
file_put_contents($file, serialize($expected_deprecations));
}
else {
// Copy code from ExpectDeprecationTraitForV8_4::expectDeprecation().
if (!SymfonyTestsListenerTrait::$previousErrorHandler) {
SymfonyTestsListenerTrait::$previousErrorHandler = set_error_handler([SymfonyTestsListenerTrait::class, 'handleError']);
}
foreach ($messages as $message) {
SymfonyTestsListenerTrait::$expectedDeprecations[] = $message;
}
@trigger_error(__METHOD__ . '() is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait::expectDeprecation() instead. See https://www.drupal.org/node/3161901', E_USER_DEPRECATED);
foreach ($messages as $message) {
$this->expectDeprecation($message);
}
}