From 79e8ae5df18c4ceef521d612c5805e1af04ed25b Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Wed, 28 Feb 2024 08:17:59 +0000 Subject: [PATCH] Issue #3402444 by mondrake, Spokje, neclimdul, longwave: Deprecate Test Suites, no longer available in PHPUnit 10 --- core/phpstan-baseline.neon | 45 +++++++++++++++++++ .../Drupal/Tests/Core/Test/PhpUnitCliTest.php | 32 +++++++++---- .../Tests/Core/Test/TestSuiteBaseTest.php | 16 +++++++ core/tests/TestSuites/BuildTestSuite.php | 5 +++ .../FunctionalJavascriptTestSuite.php | 5 +++ core/tests/TestSuites/FunctionalTestSuite.php | 5 +++ core/tests/TestSuites/KernelTestSuite.php | 5 +++ core/tests/TestSuites/TestSuiteBase.php | 5 +++ core/tests/TestSuites/UnitTestSuite.php | 5 +++ 9 files changed, 114 insertions(+), 9 deletions(-) diff --git a/core/phpstan-baseline.neon b/core/phpstan-baseline.neon index 42dae7ffe324..248968fa05fd 100644 --- a/core/phpstan-baseline.neon +++ b/core/phpstan-baseline.neon @@ -2933,3 +2933,48 @@ parameters: """ count: 1 path: tests/Drupal/Tests/Listeners/DrupalListener.php + + - + message: """ + #^Class Drupal\\\\Tests\\\\TestSuites\\\\BuildTestSuite extends deprecated class Drupal\\\\Tests\\\\TestSuites\\\\TestSuiteBase\\: + in drupal\\:10\\.3\\.0 and is removed from drupal\\:11\\.0\\.0\\. There is no + replacement and test discovery will be handled differently in PHPUnit 10\\.$# + """ + count: 1 + path: tests/TestSuites/BuildTestSuite.php + + - + message: """ + #^Class Drupal\\\\Tests\\\\TestSuites\\\\FunctionalJavascriptTestSuite extends deprecated class Drupal\\\\Tests\\\\TestSuites\\\\TestSuiteBase\\: + in drupal\\:10\\.3\\.0 and is removed from drupal\\:11\\.0\\.0\\. There is no + replacement and test discovery will be handled differently in PHPUnit 10\\.$# + """ + count: 1 + path: tests/TestSuites/FunctionalJavascriptTestSuite.php + + - + message: """ + #^Class Drupal\\\\Tests\\\\TestSuites\\\\FunctionalTestSuite extends deprecated class Drupal\\\\Tests\\\\TestSuites\\\\TestSuiteBase\\: + in drupal\\:10\\.3\\.0 and is removed from drupal\\:11\\.0\\.0\\. There is no + replacement and test discovery will be handled differently in PHPUnit 10\\.$# + """ + count: 1 + path: tests/TestSuites/FunctionalTestSuite.php + + - + message: """ + #^Class Drupal\\\\Tests\\\\TestSuites\\\\KernelTestSuite extends deprecated class Drupal\\\\Tests\\\\TestSuites\\\\TestSuiteBase\\: + in drupal\\:10\\.3\\.0 and is removed from drupal\\:11\\.0\\.0\\. There is no + replacement and test discovery will be handled differently in PHPUnit 10\\.$# + """ + count: 1 + path: tests/TestSuites/KernelTestSuite.php + + - + message: """ + #^Class Drupal\\\\Tests\\\\TestSuites\\\\UnitTestSuite extends deprecated class Drupal\\\\Tests\\\\TestSuites\\\\TestSuiteBase\\: + in drupal\\:10\\.3\\.0 and is removed from drupal\\:11\\.0\\.0\\. There is no + replacement and test discovery will be handled differently in PHPUnit 10\\.$# + """ + count: 1 + path: tests/TestSuites/UnitTestSuite.php diff --git a/core/tests/Drupal/Tests/Core/Test/PhpUnitCliTest.php b/core/tests/Drupal/Tests/Core/Test/PhpUnitCliTest.php index 0931f20e0279..a240af9d4cbb 100644 --- a/core/tests/Drupal/Tests/Core/Test/PhpUnitCliTest.php +++ b/core/tests/Drupal/Tests/Core/Test/PhpUnitCliTest.php @@ -5,6 +5,7 @@ namespace Drupal\Tests\Core\Test; use Drupal\Tests\UnitTestCase; +use Drupal\TestTools\PhpUnitCompatibility\RunnerVersion; use Symfony\Component\Process\Process; /** @@ -15,18 +16,31 @@ class PhpUnitCliTest extends UnitTestCase { /** * Ensure that the test suites are able to discover tests without incident. + * + * Generate the list of tests for all the tests that PHPUnit can discover. + * The goal here is to successfully generate the list, without any + * duplicate namespace errors, deprecation errors or so forth. This keeps + * us from committing tests which don't break under run-tests.sh, but do + * break under the PHPUnit CLI test runner tool. */ public function testPhpUnitListTests() { - // Generate the list of tests for all the tests the suites can discover. - // The goal here is to successfully generate the list, without any - // duplicate namespace errors or so forth. This keeps us from committing - // tests which don't break under run-tests.sh, but do break under the - // phpunit test runner tool. - $process = Process::fromShellCommandline('vendor/bin/phpunit --configuration core --verbose --list-tests'); - $process->setWorkingDirectory($this->root) + $command = [ + 'vendor/bin/phpunit', + '--configuration', + 'core', + '--list-tests', + ]; + + // PHPUnit 10 dropped the --verbose command line option. + if (RunnerVersion::getMajor() < 10) { + $command[] = '--verbose'; + } + + $process = new Process($command, $this->root); + $process ->setTimeout(300) - ->setIdleTimeout(300); - $process->run(); + ->setIdleTimeout(300) + ->run(); $this->assertEquals(0, $process->getExitCode(), 'COMMAND: ' . $process->getCommandLine() . "\n" . 'OUTPUT: ' . $process->getOutput() . "\n" . diff --git a/core/tests/Drupal/Tests/Core/Test/TestSuiteBaseTest.php b/core/tests/Drupal/Tests/Core/Test/TestSuiteBaseTest.php index 2589132ca2f8..1f53f981775e 100644 --- a/core/tests/Drupal/Tests/Core/Test/TestSuiteBaseTest.php +++ b/core/tests/Drupal/Tests/Core/Test/TestSuiteBaseTest.php @@ -7,6 +7,7 @@ use Drupal\Tests\TestSuites\TestSuiteBase; use org\bovigo\vfs\vfsStream; use PHPUnit\Framework\TestCase; +use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait; // The test suite class is not part of the autoloader, we need to include it // manually. @@ -19,6 +20,8 @@ */ class TestSuiteBaseTest extends TestCase { + use ExpectDeprecationTrait; + /** * Helper method to set up the file system. * @@ -81,11 +84,16 @@ public function provideCoreTests() { /** * Tests for special case behavior of unit test suite namespaces in core. * + * @group legacy + * * @covers ::addTestsBySuiteNamespace * * @dataProvider provideCoreTests */ public function testAddTestsBySuiteNamespaceCore($filesystem, $suite_namespace, $expected_tests) { + + $this->expectDeprecation('Drupal\\Tests\\Core\\Test\\StubTestSuiteBase is deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. There is no replacement and test discovery will be handled differently in PHPUnit 10. See https://www.drupal.org/node/3405829'); + // Set up the file system. $vfs = vfsStream::setup('root'); vfsStream::create($filesystem, $vfs); @@ -118,6 +126,8 @@ public function testLocalTimeZone() { * * We use this class to alter the behavior of TestSuiteBase so it can be * testable. + * + * @phpstan-ignore-next-line */ class StubTestSuiteBase extends TestSuiteBase { @@ -128,6 +138,12 @@ class StubTestSuiteBase extends TestSuiteBase { */ public $testFiles = []; + public function __construct(string $name) { + @trigger_error(__CLASS__ . ' is deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. There is no replacement and test discovery will be handled differently in PHPUnit 10. See https://www.drupal.org/node/3405829', E_USER_DEPRECATED); + // @phpstan-ignore-next-line + parent::__construct($name); + } + /** * {@inheritdoc} */ diff --git a/core/tests/TestSuites/BuildTestSuite.php b/core/tests/TestSuites/BuildTestSuite.php index 39c4660c7aae..c26bf44e59f1 100644 --- a/core/tests/TestSuites/BuildTestSuite.php +++ b/core/tests/TestSuites/BuildTestSuite.php @@ -8,6 +8,11 @@ /** * Discovers tests for the build test suite. + * + * @deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. There is no + * replacement and test discovery will be handled differently in PHPUnit 10. + * + * @see https://www.drupal.org/node/3405829 */ class BuildTestSuite extends TestSuiteBase { diff --git a/core/tests/TestSuites/FunctionalJavascriptTestSuite.php b/core/tests/TestSuites/FunctionalJavascriptTestSuite.php index d026e725e82a..5ae2325121b9 100644 --- a/core/tests/TestSuites/FunctionalJavascriptTestSuite.php +++ b/core/tests/TestSuites/FunctionalJavascriptTestSuite.php @@ -8,6 +8,11 @@ /** * Discovers tests for the functional-javascript test suite. + * + * @deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. There is no + * replacement and test discovery will be handled differently in PHPUnit 10. + * + * @see https://www.drupal.org/node/3405829 */ class FunctionalJavascriptTestSuite extends TestSuiteBase { diff --git a/core/tests/TestSuites/FunctionalTestSuite.php b/core/tests/TestSuites/FunctionalTestSuite.php index 1ddbde2b32e4..20aed98deec6 100644 --- a/core/tests/TestSuites/FunctionalTestSuite.php +++ b/core/tests/TestSuites/FunctionalTestSuite.php @@ -8,6 +8,11 @@ /** * Discovers tests for the functional test suite. + * + * @deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. There is no + * replacement and test discovery will be handled differently in PHPUnit 10. + * + * @see https://www.drupal.org/node/3405829 */ class FunctionalTestSuite extends TestSuiteBase { diff --git a/core/tests/TestSuites/KernelTestSuite.php b/core/tests/TestSuites/KernelTestSuite.php index 1fb4be33f4c3..0916c8528fac 100644 --- a/core/tests/TestSuites/KernelTestSuite.php +++ b/core/tests/TestSuites/KernelTestSuite.php @@ -8,6 +8,11 @@ /** * Discovers tests for the kernel test suite. + * + * @deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. There is no + * replacement and test discovery will be handled differently in PHPUnit 10. + * + * @see https://www.drupal.org/node/3405829 */ class KernelTestSuite extends TestSuiteBase { diff --git a/core/tests/TestSuites/TestSuiteBase.php b/core/tests/TestSuites/TestSuiteBase.php index 70ee9f7c5a1f..435116d86584 100644 --- a/core/tests/TestSuites/TestSuiteBase.php +++ b/core/tests/TestSuites/TestSuiteBase.php @@ -9,6 +9,11 @@ /** * Base class for Drupal test suites. + * + * @deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. There is no + * replacement and test discovery will be handled differently in PHPUnit 10. + * + * @see https://www.drupal.org/node/3405829 */ abstract class TestSuiteBase extends TestSuite { diff --git a/core/tests/TestSuites/UnitTestSuite.php b/core/tests/TestSuites/UnitTestSuite.php index c24d8f85b94f..db779652db46 100644 --- a/core/tests/TestSuites/UnitTestSuite.php +++ b/core/tests/TestSuites/UnitTestSuite.php @@ -8,6 +8,11 @@ /** * Discovers tests for the unit test suite. + * + * @deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. There is no + * replacement and test discovery will be handled differently in PHPUnit 10. + * + * @see https://www.drupal.org/node/3405829 */ class UnitTestSuite extends TestSuiteBase { -- GitLab