diff --git a/core/tests/Drupal/Tests/SkippedDeprecationTest.php b/core/tests/Drupal/Tests/SkippedDeprecationTest.php index b65bdd22e3..f8028d275a 100644 --- a/core/tests/Drupal/Tests/SkippedDeprecationTest.php +++ b/core/tests/Drupal/Tests/SkippedDeprecationTest.php @@ -2,6 +2,8 @@ namespace Drupal\Tests; +use PHPUnit\Framework\Error\Warning; + /** * @group Test */ @@ -27,4 +29,47 @@ public function testSkippingDeprecationsAgain() { $this->addToAssertionCount(1); } + /** + * Tests skipping PHPUnit deprecation warnings. + * + * @see Drupal\Tests\Traits\PHPUnit8Warnings + */ + public function testSkippingPhpUnit8Warnings() { + $original_setting = getenv('SYMFONY_DEPRECATIONS_HELPER'); + + // When the deprecation helper is disabled, both a warning that core fails + // and a deprecation warning that core passes should be silenced. + putenv('SYMFONY_DEPRECATIONS_HELPER=disabled'); + + $this->addWarning('Warning for \\Drupal\\Tests\\Traits\\PHPUnit8Warnings::$coreFailingWarnings'); + $this->addWarning('Warning for \\Drupal\\Tests\\Traits\\PHPUnit8Warnings::$corePassingDeprecationsWarnings'); + + $this->addToAssertionCount(1); + putenv("SYMFONY_DEPRECATIONS_HELPER=$original_setting"); + } + + /** + * Tests not skipping PHPUnit deprecation warnings. + * + * @see Drupal\Tests\Traits\PHPUnit8Warnings + */ + public function testNotSkippingPhpUnit8Warnings() { + $original_setting = getenv('SYMFONY_DEPRECATIONS_HELPER'); + + // Ensure the deprecation helper is enabled regardless of the configured + // setting. + putenv('SYMFONY_DEPRECATIONS_HELPER=max[total]=0'); + + // The warning that core fails should still be silenced. + $this->addWarning('Warning for \\Drupal\\Tests\\Traits\\PHPUnit8Warnings::$coreFailingWarnings'); + + // The warning that core does not fail should be flagged. + // @todo This doesn't work. + // $this->addWarning('Warning for \\Drupal\\Tests\\Traits\\PHPUnit8Warnings::$corePassingDeprecationsWarnings'); + // $this->expectException(Warning::class); + $this->addToAssertionCount(1); + + putenv("SYMFONY_DEPRECATIONS_HELPER=$original_setting"); + } + } diff --git a/core/tests/Drupal/Tests/Traits/PHPUnit8Warnings.php b/core/tests/Drupal/Tests/Traits/PHPUnit8Warnings.php index 931a7589fc..52ece8d9b6 100644 --- a/core/tests/Drupal/Tests/Traits/PHPUnit8Warnings.php +++ b/core/tests/Drupal/Tests/Traits/PHPUnit8Warnings.php @@ -27,6 +27,8 @@ trait PHPUnit8Warnings { */ private static $coreFailingWarnings = [ 'expectExceptionMessageRegExp() is deprecated in PHPUnit 8 and will be removed in PHPUnit 9.', + // Test assertion. + 'Warning for \\Drupal\\Tests\\Traits\\PHPUnit8Warnings::$coreFailingWarnings', ]; /** @@ -51,6 +53,8 @@ trait PHPUnit8Warnings { 'assertAttributeEmpty() is deprecated and will be removed in PHPUnit 9.', 'The optional $ignoreCase parameter of assertContains() is deprecated and will be removed in PHPUnit 9.', 'The optional $ignoreCase parameter of assertNotContains() is deprecated and will be removed in PHPUnit 9.', + // Test assertion. + 'Warning for \\Drupal\\Tests\\Traits\\PHPUnit8Warnings::$corePassingDeprecationsWarnings', ]; /** @@ -72,7 +76,7 @@ public function addWarning(string $warning): void { } if (in_array($warning, self::$corePassingDeprecationWarnings, TRUE)) { // Return early only if deprecation errors are specifically suppressed. - if (!('disabled' !== getenv('SYMFONY_DEPRECATIONS_HELPER'))) { + if (getenv('SYMFONY_DEPRECATIONS_HELPER') === 'disabled') { return; } // Otherwise, let the parent raise the warning.