diff --git a/core/phpstan-baseline.neon b/core/phpstan-baseline.neon index 42dae7ffe32..248968fa05f 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 0931f20e027..a240af9d4cb 100644 --- a/core/tests/Drupal/Tests/Core/Test/PhpUnitCliTest.php +++ b/core/tests/Drupal/Tests/Core/Test/PhpUnitCliTest.php @@ -5,6 +5,7 @@ declare(strict_types=1); 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 2589132ca2f..1f53f981775 100644 --- a/core/tests/Drupal/Tests/Core/Test/TestSuiteBaseTest.php +++ b/core/tests/Drupal/Tests/Core/Test/TestSuiteBaseTest.php @@ -7,6 +7,7 @@ namespace Drupal\Tests\Core\Test; 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 @@ require_once __DIR__ . '/../../../../TestSuites/TestSuiteBase.php'; */ class TestSuiteBaseTest extends TestCase { + use ExpectDeprecationTrait; + /** * Helper method to set up the file system. * @@ -81,11 +84,16 @@ class TestSuiteBaseTest extends TestCase { /** * 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 @@ class TestSuiteBaseTest extends TestCase { * * 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 39c4660c7aa..c26bf44e59f 100644 --- a/core/tests/TestSuites/BuildTestSuite.php +++ b/core/tests/TestSuites/BuildTestSuite.php @@ -8,6 +8,11 @@ require_once __DIR__ . '/TestSuiteBase.php'; /** * 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 d026e725e82..5ae2325121b 100644 --- a/core/tests/TestSuites/FunctionalJavascriptTestSuite.php +++ b/core/tests/TestSuites/FunctionalJavascriptTestSuite.php @@ -8,6 +8,11 @@ require_once __DIR__ . '/TestSuiteBase.php'; /** * 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 1ddbde2b32e..20aed98deec 100644 --- a/core/tests/TestSuites/FunctionalTestSuite.php +++ b/core/tests/TestSuites/FunctionalTestSuite.php @@ -8,6 +8,11 @@ require_once __DIR__ . '/TestSuiteBase.php'; /** * 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 1fb4be33f4c..0916c8528fa 100644 --- a/core/tests/TestSuites/KernelTestSuite.php +++ b/core/tests/TestSuites/KernelTestSuite.php @@ -8,6 +8,11 @@ require_once __DIR__ . '/TestSuiteBase.php'; /** * 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 70ee9f7c5a1..435116d8658 100644 --- a/core/tests/TestSuites/TestSuiteBase.php +++ b/core/tests/TestSuites/TestSuiteBase.php @@ -9,6 +9,11 @@ use PHPUnit\Framework\TestSuite; /** * 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 c24d8f85b94..db779652db4 100644 --- a/core/tests/TestSuites/UnitTestSuite.php +++ b/core/tests/TestSuites/UnitTestSuite.php @@ -8,6 +8,11 @@ require_once __DIR__ . '/TestSuiteBase.php'; /** * 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 {