summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--core/MAINTAINERS.txt1
-rw-r--r--core/modules/mysqli/mysqli.install78
-rw-r--r--core/modules/mysqli/src/Hook/MysqliHooks.php70
-rw-r--r--core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryCachedTest.php12
-rw-r--r--core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryTest.php20
-rw-r--r--core/tests/Drupal/Tests/Component/Annotation/AnnotationBaseTest.php17
-rw-r--r--core/tests/Drupal/Tests/Component/Annotation/DocParserIgnoredClassesTest.php8
-rw-r--r--core/tests/Drupal/Tests/Component/Annotation/Doctrine/StaticReflectionParserTest.php49
-rw-r--r--core/tests/Drupal/Tests/Component/Annotation/MockFileFinderTest.php11
-rw-r--r--core/tests/Drupal/Tests/Component/Annotation/Plugin/Discovery/AnnotationBridgeDecoratorTest.php9
-rw-r--r--core/tests/Drupal/Tests/Component/Annotation/PluginIdTest.php11
-rw-r--r--core/tests/Drupal/Tests/Component/Annotation/PluginTest.php23
-rw-r--r--core/tests/Drupal/Tests/Component/Assertion/InspectorTest.php40
-rw-r--r--core/tests/Drupal/Tests/Component/ClassFinder/ClassFinderTest.php9
-rw-r--r--core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php54
-rw-r--r--core/tests/Drupal/Tests/Component/Datetime/TimeWithNoRequestTest.php19
-rw-r--r--core/tests/Drupal/Tests/Component/DependencyInjection/ContainerTest.php216
-rw-r--r--core/tests/Drupal/Tests/Component/DependencyInjection/PhpArrayContainerTest.php8
-rw-r--r--core/tests/Drupal/Tests/Component/DependencyInjection/ReverseContainerTest.php14
-rw-r--r--core/tests/Drupal/Tests/Component/Diff/DiffFormatterTest.php13
-rw-r--r--core/tests/Drupal/Tests/Component/Diff/DiffOpOutputBuilderTest.php21
-rw-r--r--core/tests/Drupal/Tests/Component/Diff/Engine/HWLDFWordAccumulatorTest.php20
-rw-r--r--core/tests/Drupal/Tests/Component/Discovery/YamlDirectoryDiscoveryTest.php18
-rw-r--r--core/tests/Drupal/Tests/Component/Discovery/YamlDiscoveryTest.php4
-rw-r--r--core/tests/Drupal/Tests/Component/DrupalComponentTest.php12
-rw-r--r--core/tests/Drupal/Tests/Component/FileCache/FileCacheFactoryTest.php29
-rw-r--r--core/tests/Drupal/Tests/Component/FileCache/FileCacheTest.php17
-rw-r--r--core/tests/Drupal/Tests/Component/FileSecurity/FileSecurityTest.php15
-rw-r--r--core/tests/Drupal/Tests/Component/FileSystem/RegexDirectoryIteratorTest.php12
-rw-r--r--core/tests/Drupal/Tests/Component/FrontMatter/FrontMatterTest.php36
-rw-r--r--core/tests/Drupal/Tests/Component/Gettext/PoHeaderTest.php8
-rw-r--r--core/tests/Drupal/Tests/Component/Gettext/PoItemTest.php12
-rw-r--r--core/tests/Drupal/Tests/Component/Gettext/PoStreamWriterTest.php16
-rw-r--r--core/tests/Drupal/Tests/Component/Graph/GraphTest.php7
-rw-r--r--core/tests/Drupal/Tests/Component/HttpFoundation/SecuredRedirectResponseTest.php11
-rw-r--r--core/tests/Drupal/Tests/Component/PhpStorage/FileStorageReadOnlyTest.php14
-rw-r--r--core/tests/Drupal/Tests/Component/PhpStorage/FileStorageTest.php21
-rw-r--r--core/tests/Drupal/Tests/Component/PhpStorage/MTimeProtectedFastFileStorageTest.php12
-rw-r--r--core/tests/Drupal/Tests/Component/PhpStorage/MTimeProtectedFileStorageBase.php4
-rw-r--r--core/tests/Drupal/Tests/Component/PhpStorage/MTimeProtectedFileStorageTest.php12
-rw-r--r--core/tests/Drupal/Tests/Component/Plugin/Attribute/AttributeBaseTest.php17
-rw-r--r--core/tests/Drupal/Tests/Component/Plugin/Attribute/AttributeClassDiscoveryCachedTest.php17
-rw-r--r--core/tests/Drupal/Tests/Component/Plugin/Attribute/AttributeClassDiscoveryTest.php20
-rw-r--r--core/tests/Drupal/Tests/Component/Plugin/Attribute/PluginIdTest.php9
-rw-r--r--core/tests/Drupal/Tests/Component/Plugin/Attribute/PluginTest.php21
-rw-r--r--core/tests/Drupal/Tests/Component/Plugin/Context/ContextTest.php18
-rw-r--r--core/tests/Drupal/Tests/Component/Plugin/DefaultFactoryTest.php27
-rw-r--r--core/tests/Drupal/Tests/Component/Plugin/Discovery/AnnotatedClassDiscoveryTest.php18
-rw-r--r--core/tests/Drupal/Tests/Component/Plugin/Discovery/AttributeBridgeDecoratorTest.php12
-rw-r--r--core/tests/Drupal/Tests/Component/Plugin/Discovery/DiscoveryCachedTraitTest.php16
-rw-r--r--core/tests/Drupal/Tests/Component/Plugin/Discovery/DiscoveryTraitTest.php33
-rw-r--r--core/tests/Drupal/Tests/Component/Plugin/Discovery/StaticDiscoveryDecoratorTest.php20
-rw-r--r--core/tests/Drupal/Tests/Component/Plugin/Factory/ReflectionFactoryTest.php16
-rw-r--r--core/tests/Drupal/Tests/Component/Plugin/PluginManagerBaseTest.php16
-rw-r--r--core/tests/Drupal/Tests/Component/ProxyBuilder/ProxyBuilderTest.php67
-rw-r--r--core/tests/Drupal/Tests/Component/Render/FormattableMarkupTest.php18
-rw-r--r--core/tests/Drupal/Tests/Component/Render/HtmlEscapedTextTest.php17
-rw-r--r--core/tests/Drupal/Tests/Component/Render/PlainTextOutputTest.php14
-rw-r--r--core/tests/Drupal/Tests/Component/Serialization/JsonTest.php7
-rw-r--r--core/tests/Drupal/Tests/Component/Serialization/YamlPeclTest.php33
-rw-r--r--core/tests/Drupal/Tests/Component/Serialization/YamlTest.php30
-rw-r--r--core/tests/Drupal/Tests/Component/Transliteration/PhpTransliterationTest.php17
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/ArgumentsResolverTest.php14
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/BytesTest.php19
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/ColorTest.php19
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/CryptTest.php21
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/DeprecationHelperTest.php11
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/EmailValidatorTest.php11
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/EnvironmentTest.php13
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/FilterArrayTest.php13
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/HtmlTest.php54
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/ImageTest.php18
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/NestedArrayTest.php30
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/NumberTest.php30
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/RandomTest.php32
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/RectangleTest.php21
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/ReflectionTest.php12
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php34
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/TimerTest.php14
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/UnicodeTest.php37
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/UrlHelperTest.php70
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/UserAgentTest.php14
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/VariableTest.php20
-rw-r--r--core/tests/Drupal/Tests/Component/Utility/XssTest.php28
-rw-r--r--core/tests/Drupal/Tests/Component/Uuid/UuidTest.php18
-rw-r--r--core/tests/Drupal/Tests/Component/Version/ConstraintTest.php12
86 files changed, 1082 insertions, 929 deletions
diff --git a/core/MAINTAINERS.txt b/core/MAINTAINERS.txt
index a81dcc29d301..09256dab56e1 100644
--- a/core/MAINTAINERS.txt
+++ b/core/MAINTAINERS.txt
@@ -483,7 +483,6 @@ Testing
Usability
- Cristina Chumillas 'ckrina' https://www.drupal.org/u/ckrina
-- Roy Scholten 'yoroy' https://www.drupal.org/u/yoroy
- Bojhan Somers 'Bojhan' https://www.drupal.org/u/bojhan
diff --git a/core/modules/mysqli/mysqli.install b/core/modules/mysqli/mysqli.install
deleted file mode 100644
index 7f1147d63adb..000000000000
--- a/core/modules/mysqli/mysqli.install
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-
-/**
- * @file
- * Install, update and uninstall functions for the mysqli module.
- */
-
-use Drupal\Core\Database\Database;
-use Drupal\Core\Extension\Requirement\RequirementSeverity;
-use Drupal\Core\Render\Markup;
-
-/**
- * Implements hook_requirements().
- */
-function mysqli_requirements($phase): array {
- $requirements = [];
-
- if ($phase === 'runtime') {
- // Test with MySql databases.
- if (Database::isActiveConnection()) {
- $connection = Database::getConnection();
- // Only show requirements when MySQLi is the default database connection.
- if (!($connection->driver() === 'mysqli' && $connection->getProvider() === 'mysqli')) {
- return [];
- }
-
- $query = $connection->isMariaDb() ? 'SELECT @@SESSION.tx_isolation' : 'SELECT @@SESSION.transaction_isolation';
-
- $isolation_level = $connection->query($query)->fetchField();
-
- $tables_missing_primary_key = [];
- $tables = $connection->schema()->findTables('%');
- foreach ($tables as $table) {
- $primary_key_column = Database::getConnection()->query("SHOW KEYS FROM {" . $table . "} WHERE Key_name = 'PRIMARY'")->fetchAllAssoc('Column_name');
- if (empty($primary_key_column)) {
- $tables_missing_primary_key[] = $table;
- }
- }
-
- $description = [];
- if ($isolation_level == 'READ-COMMITTED') {
- if (empty($tables_missing_primary_key)) {
- $severity_level = RequirementSeverity::OK;
- }
- else {
- $severity_level = RequirementSeverity::Error;
- }
- }
- else {
- if ($isolation_level == 'REPEATABLE-READ') {
- $severity_level = RequirementSeverity::Warning;
- }
- else {
- $severity_level = RequirementSeverity::Error;
- $description[] = t('This is not supported by Drupal.');
- }
- $description[] = t('The recommended level for Drupal is "READ COMMITTED".');
- }
-
- if (!empty($tables_missing_primary_key)) {
- $description[] = t('For this to work correctly, all tables must have a primary key. The following table(s) do not have a primary key: @tables.', ['@tables' => implode(', ', $tables_missing_primary_key)]);
- }
-
- $description[] = t('See the <a href=":performance_doc">setting MySQL transaction isolation level</a> page for more information.', [
- ':performance_doc' => 'https://www.drupal.org/docs/system-requirements/setting-the-mysql-transaction-isolation-level',
- ]);
-
- $requirements['mysql_transaction_level'] = [
- 'title' => t('Transaction isolation level'),
- 'severity' => $severity_level,
- 'value' => $isolation_level,
- 'description' => Markup::create(implode(' ', $description)),
- ];
- }
- }
-
- return $requirements;
-}
diff --git a/core/modules/mysqli/src/Hook/MysqliHooks.php b/core/modules/mysqli/src/Hook/MysqliHooks.php
index 5fae187d16c7..340b17373a12 100644
--- a/core/modules/mysqli/src/Hook/MysqliHooks.php
+++ b/core/modules/mysqli/src/Hook/MysqliHooks.php
@@ -2,7 +2,10 @@
namespace Drupal\mysqli\Hook;
+use Drupal\Core\Database\Database;
+use Drupal\Core\Extension\Requirement\RequirementSeverity;
use Drupal\Core\Hook\Attribute\Hook;
+use Drupal\Core\Render\Markup;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
@@ -29,4 +32,71 @@ class MysqliHooks {
return NULL;
}
+ /**
+ * Implements hook_runtime_requirements().
+ */
+ #[Hook('runtime_requirements')]
+ public function runtimeRequirements(): array {
+ $requirements = [];
+
+ // Test with MySql databases.
+ if (Database::isActiveConnection()) {
+ $connection = Database::getConnection();
+ // Only show requirements when MySQLi is the default database connection.
+ if (!($connection->driver() === 'mysqli' && $connection->getProvider() === 'mysqli')) {
+ return [];
+ }
+
+ $query = $connection->isMariaDb() ? 'SELECT @@SESSION.tx_isolation' : 'SELECT @@SESSION.transaction_isolation';
+
+ $isolation_level = $connection->query($query)->fetchField();
+
+ $tables_missing_primary_key = [];
+ $tables = $connection->schema()->findTables('%');
+ foreach ($tables as $table) {
+ $primary_key_column = Database::getConnection()->query("SHOW KEYS FROM {" . $table . "} WHERE Key_name = 'PRIMARY'")->fetchAllAssoc('Column_name');
+ if (empty($primary_key_column)) {
+ $tables_missing_primary_key[] = $table;
+ }
+ }
+
+ $description = [];
+ if ($isolation_level == 'READ-COMMITTED') {
+ if (empty($tables_missing_primary_key)) {
+ $severity_level = RequirementSeverity::OK;
+ }
+ else {
+ $severity_level = RequirementSeverity::Error;
+ }
+ }
+ else {
+ if ($isolation_level == 'REPEATABLE-READ') {
+ $severity_level = RequirementSeverity::Warning;
+ }
+ else {
+ $severity_level = RequirementSeverity::Error;
+ $description[] = $this->t('This is not supported by Drupal.');
+ }
+ $description[] = $this->t('The recommended level for Drupal is "READ COMMITTED".');
+ }
+
+ if (!empty($tables_missing_primary_key)) {
+ $description[] = $this->t('For this to work correctly, all tables must have a primary key. The following table(s) do not have a primary key: @tables.', ['@tables' => implode(', ', $tables_missing_primary_key)]);
+ }
+
+ $description[] = $this->t('See the <a href=":performance_doc">setting MySQL transaction isolation level</a> page for more information.', [
+ ':performance_doc' => 'https://www.drupal.org/docs/system-requirements/setting-the-mysql-transaction-isolation-level',
+ ]);
+
+ $requirements['mysql_transaction_level'] = [
+ 'title' => $this->t('Transaction isolation level'),
+ 'severity' => $severity_level,
+ 'value' => $isolation_level,
+ 'description' => Markup::create(implode(' ', $description)),
+ ];
+ }
+
+ return $requirements;
+ }
+
}
diff --git a/core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryCachedTest.php b/core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryCachedTest.php
index 07a9fab674fb..9a2b78ebc775 100644
--- a/core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryCachedTest.php
+++ b/core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryCachedTest.php
@@ -6,13 +6,17 @@ namespace Drupal\Tests\Component\Annotation;
use Drupal\Component\Annotation\Plugin\Discovery\AnnotatedClassDiscovery;
use Drupal\Component\FileCache\FileCacheFactory;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Annotation\Plugin\Discovery\AnnotatedClassDiscovery
- * @group Annotation
- * @runTestsInSeparateProcesses
+ * Tests Drupal\Component\Annotation\Plugin\Discovery\AnnotatedClassDiscovery.
*/
+#[CoversClass(AnnotatedClassDiscovery::class)]
+#[Group('Annotation')]
+#[RunTestsInSeparateProcesses]
class AnnotatedClassDiscoveryCachedTest extends TestCase {
/**
@@ -30,7 +34,7 @@ class AnnotatedClassDiscoveryCachedTest extends TestCase {
/**
* Tests that getDefinitions() retrieves the file cache correctly.
*
- * @covers ::getDefinitions
+ * @legacy-covers ::getDefinitions
*/
public function testGetDefinitions(): void {
// Path to the classes which we'll discover and parse annotation.
diff --git a/core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryTest.php b/core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryTest.php
index a83d030b2aff..96174c148422 100644
--- a/core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryTest.php
+++ b/core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryTest.php
@@ -7,13 +7,17 @@ namespace Drupal\Tests\Component\Annotation;
use Drupal\Component\Annotation\Plugin;
use Drupal\Component\Annotation\Plugin\Discovery\AnnotatedClassDiscovery;
use Drupal\Component\FileCache\FileCacheFactory;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Annotation\Plugin\Discovery\AnnotatedClassDiscovery
- * @group Annotation
- * @runTestsInSeparateProcesses
+ * Tests Drupal\Component\Annotation\Plugin\Discovery\AnnotatedClassDiscovery.
*/
+#[CoversClass(AnnotatedClassDiscovery::class)]
+#[Group('Annotation')]
+#[RunTestsInSeparateProcesses]
class AnnotatedClassDiscoveryTest extends TestCase {
/**
@@ -28,8 +32,8 @@ class AnnotatedClassDiscoveryTest extends TestCase {
}
/**
- * @covers ::__construct
- * @covers ::getPluginNamespaces
+ * @legacy-covers ::__construct
+ * @legacy-covers ::getPluginNamespaces
*/
public function testGetPluginNamespaces(): void {
$discovery = new AnnotatedClassDiscovery(['com/example' => [__DIR__]]);
@@ -40,9 +44,9 @@ class AnnotatedClassDiscoveryTest extends TestCase {
}
/**
- * @covers ::getDefinitions
- * @covers ::prepareAnnotationDefinition
- * @covers ::getAnnotationReader
+ * @legacy-covers ::getDefinitions
+ * @legacy-covers ::prepareAnnotationDefinition
+ * @legacy-covers ::getAnnotationReader
*/
public function testGetDefinitions(): void {
$discovery = new AnnotatedClassDiscovery(['com\example' => [__DIR__ . '/Fixtures']]);
diff --git a/core/tests/Drupal/Tests/Component/Annotation/AnnotationBaseTest.php b/core/tests/Drupal/Tests/Component/Annotation/AnnotationBaseTest.php
index 80f3b31f82be..cb5d4727b4f7 100644
--- a/core/tests/Drupal/Tests/Component/Annotation/AnnotationBaseTest.php
+++ b/core/tests/Drupal/Tests/Component/Annotation/AnnotationBaseTest.php
@@ -5,17 +5,20 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Annotation;
use Drupal\Component\Annotation\AnnotationBase;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Annotation\AnnotationBase
- * @group Annotation
+ * Tests Drupal\Component\Annotation\AnnotationBase.
*/
+#[CoversClass(AnnotationBase::class)]
+#[Group('Annotation')]
class AnnotationBaseTest extends TestCase {
/**
- * @covers ::getProvider
- * @covers ::setProvider
+ * @legacy-covers ::getProvider
+ * @legacy-covers ::setProvider
*/
public function testSetProvider(): void {
$plugin = new AnnotationBaseStub();
@@ -24,7 +27,7 @@ class AnnotationBaseTest extends TestCase {
}
/**
- * @covers ::getId
+ * @legacy-covers ::getId
*/
public function testGetId(): void {
$plugin = new AnnotationBaseStub();
@@ -34,8 +37,8 @@ class AnnotationBaseTest extends TestCase {
}
/**
- * @covers ::getClass
- * @covers ::setClass
+ * @legacy-covers ::getClass
+ * @legacy-covers ::setClass
*/
public function testSetClass(): void {
$plugin = new AnnotationBaseStub();
diff --git a/core/tests/Drupal/Tests/Component/Annotation/DocParserIgnoredClassesTest.php b/core/tests/Drupal/Tests/Component/Annotation/DocParserIgnoredClassesTest.php
index c211193d1fd5..e4cc1f2b9218 100644
--- a/core/tests/Drupal/Tests/Component/Annotation/DocParserIgnoredClassesTest.php
+++ b/core/tests/Drupal/Tests/Component/Annotation/DocParserIgnoredClassesTest.php
@@ -5,13 +5,15 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Annotation;
use Drupal\Component\Annotation\Doctrine\DocParser;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Annotation\Doctrine\DocParser
- *
- * @group Annotation
+ * Tests Drupal\Component\Annotation\Doctrine\DocParser.
*/
+#[CoversClass(DocParser::class)]
+#[Group('Annotation')]
class DocParserIgnoredClassesTest extends TestCase {
/**
diff --git a/core/tests/Drupal/Tests/Component/Annotation/Doctrine/StaticReflectionParserTest.php b/core/tests/Drupal/Tests/Component/Annotation/Doctrine/StaticReflectionParserTest.php
index ab5d242262d9..96b501928a67 100644
--- a/core/tests/Drupal/Tests/Component/Annotation/Doctrine/StaticReflectionParserTest.php
+++ b/core/tests/Drupal/Tests/Component/Annotation/Doctrine/StaticReflectionParserTest.php
@@ -2,38 +2,39 @@
namespace Drupal\Tests\Component\Annotation\Doctrine;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\TestWith;
use Drupal\Component\Annotation\Doctrine\StaticReflectionParser;
use Drupal\Component\Annotation\Reflection\MockFileFinder;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Annotation\Doctrine\StaticReflectionParser
- *
- * @group Annotation
+ * Tests Drupal\Component\Annotation\Doctrine\StaticReflectionParser.
*/
+#[CoversClass(StaticReflectionParser::class)]
+#[Group('Annotation')]
class StaticReflectionParserTest extends TestCase {
- /**
- * @testWith ["AttributeClass", "\\Attribute", true]
- * ["AttributeClass", "attribute", true]
- * ["AttributeClass", "Attribute", true]
- * ["AttributeClass", "\\DoesNotExist", false]
- * ["Nonexistent", "NonexistentAttribute", false]
- * ["MultipleAttributes", "Attribute", true]
- * ["MultipleAttributes", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\Attribute\\AttributeClass", true]
- * ["MultipleAttributes", "DoesNotExist", false]
- * ["FullyQualified", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleAttribute", true]
- * ["Used", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleAttribute", true]
- * ["UsedAs", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleAttribute", true]
- * ["UsedAsQualified", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleAttribute", true]
- * ["Qualified", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleAttribute", true]
- * ["Relative", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\Attribute\\SubDir\\SubDirAttribute", true]
- * ["FullyQualified", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleParentAttribute", true]
- * ["Used", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleParentAttribute", true]
- * ["UsedAs", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleParentAttribute", true]
- * ["UsedAsQualified", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleParentAttribute", true]
- * ["Qualified", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleParentAttribute", true]
- */
+ #[TestWith(["AttributeClass", "\\Attribute", true])]
+ #[TestWith(["AttributeClass", "attribute", true])]
+ #[TestWith(["AttributeClass", "Attribute", true])]
+ #[TestWith(["AttributeClass", "\\DoesNotExist", false])]
+ #[TestWith(["Nonexistent", "NonexistentAttribute", false])]
+ #[TestWith(["MultipleAttributes", "Attribute", true])]
+ #[TestWith(["MultipleAttributes", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\Attribute\\AttributeClass", true])]
+ #[TestWith(["MultipleAttributes", "DoesNotExist", false])]
+ #[TestWith(["FullyQualified", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleAttribute", true])]
+ #[TestWith(["Used", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleAttribute", true])]
+ #[TestWith(["UsedAs", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleAttribute", true])]
+ #[TestWith(["UsedAsQualified", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleAttribute", true])]
+ #[TestWith(["Qualified", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleAttribute", true])]
+ #[TestWith(["Relative", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\Attribute\\SubDir\\SubDirAttribute", true])]
+ #[TestWith(["FullyQualified", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleParentAttribute", true])]
+ #[TestWith(["Used", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleParentAttribute", true])]
+ #[TestWith(["UsedAs", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleParentAttribute", true])]
+ #[TestWith(["UsedAsQualified", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleParentAttribute", true])]
+ #[TestWith(["Qualified", "Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\ExtraAttributes\\ExampleParentAttribute", true])]
public function testAttribute(string $class, string $attribute_class, bool $expected): void {
$finder = MockFileFinder::create(__DIR__ . '/Fixtures/Attribute/' . $class . '.php');
$parser = new StaticReflectionParser('\\Drupal\\Tests\\Component\\Annotation\\Doctrine\\Fixtures\\Attribute\\' . $class, $finder);
diff --git a/core/tests/Drupal/Tests/Component/Annotation/MockFileFinderTest.php b/core/tests/Drupal/Tests/Component/Annotation/MockFileFinderTest.php
index 6511a2c980c2..c227a276a1ec 100644
--- a/core/tests/Drupal/Tests/Component/Annotation/MockFileFinderTest.php
+++ b/core/tests/Drupal/Tests/Component/Annotation/MockFileFinderTest.php
@@ -5,17 +5,20 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Annotation;
use Drupal\Component\Annotation\Reflection\MockFileFinder;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Annotation\Reflection\MockFileFinder
- * @group Annotation
+ * Tests Drupal\Component\Annotation\Reflection\MockFileFinder.
*/
+#[CoversClass(MockFileFinder::class)]
+#[Group('Annotation')]
class MockFileFinderTest extends TestCase {
/**
- * @covers ::create
- * @covers ::findFile
+ * @legacy-covers ::create
+ * @legacy-covers ::findFile
*/
public function testFindFile(): void {
$tmp = MockFileFinder::create('test_filename.txt');
diff --git a/core/tests/Drupal/Tests/Component/Annotation/Plugin/Discovery/AnnotationBridgeDecoratorTest.php b/core/tests/Drupal/Tests/Component/Annotation/Plugin/Discovery/AnnotationBridgeDecoratorTest.php
index ab59964f3396..7852e14c1b1e 100644
--- a/core/tests/Drupal/Tests/Component/Annotation/Plugin/Discovery/AnnotationBridgeDecoratorTest.php
+++ b/core/tests/Drupal/Tests/Component/Annotation/Plugin/Discovery/AnnotationBridgeDecoratorTest.php
@@ -8,19 +8,22 @@ use Drupal\Component\Annotation\Plugin;
use Drupal\Component\Annotation\Plugin\Discovery\AnnotationBridgeDecorator;
use Drupal\Component\Plugin\Definition\PluginDefinition;
use Drupal\Component\Plugin\Discovery\DiscoveryInterface;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
use Prophecy\PhpUnit\ProphecyTrait;
/**
- * @coversDefaultClass \Drupal\Component\Annotation\Plugin\Discovery\AnnotationBridgeDecorator
- * @group Plugin
+ * Tests Drupal\Component\Annotation\Plugin\Discovery\AnnotationBridgeDecorator.
*/
+#[CoversClass(AnnotationBridgeDecorator::class)]
+#[Group('Plugin')]
class AnnotationBridgeDecoratorTest extends TestCase {
use ProphecyTrait;
/**
- * @covers ::getDefinitions
+ * @legacy-covers ::getDefinitions
*/
public function testGetDefinitions(): void {
$definitions = [];
diff --git a/core/tests/Drupal/Tests/Component/Annotation/PluginIdTest.php b/core/tests/Drupal/Tests/Component/Annotation/PluginIdTest.php
index 17fb399a7264..4ff731f364f1 100644
--- a/core/tests/Drupal/Tests/Component/Annotation/PluginIdTest.php
+++ b/core/tests/Drupal/Tests/Component/Annotation/PluginIdTest.php
@@ -5,16 +5,19 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Annotation;
use Drupal\Component\Annotation\PluginID;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Annotation\PluginID
- * @group Annotation
+ * Tests Drupal\Component\Annotation\PluginID.
*/
+#[CoversClass(PluginID::class)]
+#[Group('Annotation')]
class PluginIdTest extends TestCase {
/**
- * @covers ::get
+ * @legacy-covers ::get
*/
public function testGet(): void {
// Assert plugin starts empty.
@@ -37,7 +40,7 @@ class PluginIdTest extends TestCase {
}
/**
- * @covers ::getId
+ * @legacy-covers ::getId
*/
public function testGetId(): void {
$plugin = new PluginID();
diff --git a/core/tests/Drupal/Tests/Component/Annotation/PluginTest.php b/core/tests/Drupal/Tests/Component/Annotation/PluginTest.php
index ad02c2ddba47..857044e4b6c9 100644
--- a/core/tests/Drupal/Tests/Component/Annotation/PluginTest.php
+++ b/core/tests/Drupal/Tests/Component/Annotation/PluginTest.php
@@ -5,18 +5,21 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Annotation;
use Drupal\Component\Annotation\Plugin;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Annotation\Plugin
- * @group Annotation
+ * Tests Drupal\Component\Annotation\Plugin.
*/
+#[CoversClass(Plugin::class)]
+#[Group('Annotation')]
class PluginTest extends TestCase {
/**
- * @covers ::__construct
- * @covers ::parse
- * @covers ::get
+ * @legacy-covers ::__construct
+ * @legacy-covers ::parse
+ * @legacy-covers ::get
*/
public function testGet(): void {
// Assert all values are accepted through constructor and default value is
@@ -51,7 +54,7 @@ class PluginTest extends TestCase {
}
/**
- * @covers ::getProvider
+ * @legacy-covers ::getProvider
*/
public function testGetProvider(): void {
$plugin = new Plugin(['provider' => 'example']);
@@ -59,7 +62,7 @@ class PluginTest extends TestCase {
}
/**
- * @covers ::setProvider
+ * @legacy-covers ::setProvider
*/
public function testSetProvider(): void {
$plugin = new Plugin([]);
@@ -68,7 +71,7 @@ class PluginTest extends TestCase {
}
/**
- * @covers ::getId
+ * @legacy-covers ::getId
*/
public function testGetId(): void {
$plugin = new Plugin(['id' => 'example']);
@@ -76,7 +79,7 @@ class PluginTest extends TestCase {
}
/**
- * @covers ::getClass
+ * @legacy-covers ::getClass
*/
public function testGetClass(): void {
$plugin = new Plugin(['class' => 'example']);
@@ -84,7 +87,7 @@ class PluginTest extends TestCase {
}
/**
- * @covers ::setClass
+ * @legacy-covers ::setClass
*/
public function testSetClass(): void {
$plugin = new Plugin([]);
diff --git a/core/tests/Drupal/Tests/Component/Assertion/InspectorTest.php b/core/tests/Drupal/Tests/Component/Assertion/InspectorTest.php
index 0d3f5d221a32..2d02f97c5716 100644
--- a/core/tests/Drupal/Tests/Component/Assertion/InspectorTest.php
+++ b/core/tests/Drupal/Tests/Component/Assertion/InspectorTest.php
@@ -4,14 +4,18 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Assertion;
-use PHPUnit\Framework\TestCase;
use Drupal\Component\Assertion\Inspector;
use Drupal\TestTools\Extension\DeprecationBridge\ExpectDeprecationTrait;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Assertion\Inspector
- * @group Assertion
+ * Tests Drupal\Component\Assertion\Inspector.
*/
+#[CoversClass(Inspector::class)]
+#[Group('Assertion')]
class InspectorTest extends TestCase {
use ExpectDeprecationTrait;
@@ -19,9 +23,9 @@ class InspectorTest extends TestCase {
/**
* Tests asserting all members are strings.
*
- * @covers ::assertAllStrings
- * @dataProvider providerTestAssertAllStrings
+ * @legacy-covers ::assertAllStrings
*/
+ #[DataProvider('providerTestAssertAllStrings')]
public function testAssertAllStrings($input, $expected): void {
$this->assertSame($expected, Inspector::assertAllStrings($input));
}
@@ -55,7 +59,7 @@ class InspectorTest extends TestCase {
/**
* Tests asserting all members are strings or objects with __toString().
*
- * @covers ::assertAllStringable
+ * @legacy-covers ::assertAllStringable
*/
public function testAssertAllStringable(): void {
$this->assertTrue(Inspector::assertAllStringable([]));
@@ -67,7 +71,7 @@ class InspectorTest extends TestCase {
/**
* Tests asserting all members are arrays.
*
- * @covers ::assertAllArrays
+ * @legacy-covers ::assertAllArrays
*/
public function testAssertAllArrays(): void {
$this->assertTrue(Inspector::assertAllArrays([]));
@@ -78,7 +82,7 @@ class InspectorTest extends TestCase {
/**
* Tests asserting array is 0-indexed - the strict definition of array.
*
- * @covers ::assertStrictArray
+ * @legacy-covers ::assertStrictArray
*/
public function testAssertStrictArray(): void {
$this->assertTrue(Inspector::assertStrictArray([]));
@@ -89,7 +93,7 @@ class InspectorTest extends TestCase {
/**
* Tests asserting all members are strict arrays.
*
- * @covers ::assertAllStrictArrays
+ * @legacy-covers ::assertAllStrictArrays
*/
public function testAssertAllStrictArrays(): void {
$this->assertTrue(Inspector::assertAllStrictArrays([]));
@@ -100,7 +104,7 @@ class InspectorTest extends TestCase {
/**
* Tests asserting all members have specified keys.
*
- * @covers ::assertAllHaveKey
+ * @legacy-covers ::assertAllHaveKey
*/
public function testAssertAllHaveKey(): void {
$this->assertTrue(Inspector::assertAllHaveKey([]));
@@ -113,7 +117,7 @@ class InspectorTest extends TestCase {
/**
* Tests asserting all members are integers.
*
- * @covers ::assertAllIntegers
+ * @legacy-covers ::assertAllIntegers
*/
public function testAssertAllIntegers(): void {
$this->assertTrue(Inspector::assertAllIntegers([]));
@@ -125,7 +129,7 @@ class InspectorTest extends TestCase {
/**
* Tests asserting all members are floating point variables.
*
- * @covers ::assertAllFloat
+ * @legacy-covers ::assertAllFloat
*/
public function testAssertAllFloat(): void {
$this->assertTrue(Inspector::assertAllFloat([]));
@@ -138,7 +142,7 @@ class InspectorTest extends TestCase {
/**
* Tests asserting all members are callable.
*
- * @covers ::assertAllCallable
+ * @legacy-covers ::assertAllCallable
*/
public function testAllCallable(): void {
$this->assertTrue(Inspector::assertAllCallable([
@@ -164,7 +168,7 @@ class InspectorTest extends TestCase {
/**
* Tests asserting all members are !empty().
*
- * @covers ::assertAllNotEmpty
+ * @legacy-covers ::assertAllNotEmpty
*/
public function testAllNotEmpty(): void {
$this->assertTrue(Inspector::assertAllNotEmpty([1, 'two']));
@@ -174,7 +178,7 @@ class InspectorTest extends TestCase {
/**
* Tests asserting all arguments are numbers or strings castable to numbers.
*
- * @covers ::assertAllNumeric
+ * @legacy-covers ::assertAllNumeric
*/
public function testAssertAllNumeric(): void {
$this->assertTrue(Inspector::assertAllNumeric([1, '2', 3.14]));
@@ -184,7 +188,7 @@ class InspectorTest extends TestCase {
/**
* Tests asserting strstr() or stristr() match.
*
- * @covers ::assertAllMatch
+ * @legacy-covers ::assertAllMatch
*/
public function testAssertAllMatch(): void {
$this->assertTrue(Inspector::assertAllMatch('f', ['fee', 'fi', 'fo']));
@@ -198,7 +202,7 @@ class InspectorTest extends TestCase {
/**
* Tests asserting regular expression match.
*
- * @covers ::assertAllRegularExpressionMatch
+ * @legacy-covers ::assertAllRegularExpressionMatch
*/
public function testAssertAllRegularExpressionMatch(): void {
$this->assertTrue(Inspector::assertAllRegularExpressionMatch('/f/i', ['fee', 'fi', 'fo']));
@@ -212,7 +216,7 @@ class InspectorTest extends TestCase {
/**
* Tests asserting all members are objects.
*
- * @covers ::assertAllObjects
+ * @legacy-covers ::assertAllObjects
*/
public function testAssertAllObjects(): void {
$this->assertTrue(Inspector::assertAllObjects([new \ArrayObject(), new \ArrayObject()]));
diff --git a/core/tests/Drupal/Tests/Component/ClassFinder/ClassFinderTest.php b/core/tests/Drupal/Tests/Component/ClassFinder/ClassFinderTest.php
index 9653180cfa22..0b8322303fb2 100644
--- a/core/tests/Drupal/Tests/Component/ClassFinder/ClassFinderTest.php
+++ b/core/tests/Drupal/Tests/Component/ClassFinder/ClassFinderTest.php
@@ -6,16 +6,19 @@ namespace Drupal\Tests\Component\ClassFinder;
use Composer\Autoload\ClassLoader;
use Drupal\Component\ClassFinder\ClassFinder;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\ClassFinder\ClassFinder
- * @group ClassFinder
+ * Tests Drupal\Component\ClassFinder\ClassFinder.
*/
+#[CoversClass(ClassFinder::class)]
+#[Group('ClassFinder')]
class ClassFinderTest extends TestCase {
/**
- * @covers ::findFile
+ * @legacy-covers ::findFile
*/
public function testFindFile(): void {
$finder = new ClassFinder();
diff --git a/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php b/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php
index ae46c3cc5a56..0a09e3adb4b8 100644
--- a/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php
+++ b/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php
@@ -5,12 +5,16 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Datetime;
use Drupal\Component\Datetime\DateTimePlus;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Datetime\DateTimePlus
- * @group Datetime
+ * Tests Drupal\Component\Datetime\DateTimePlus.
*/
+#[CoversClass(DateTimePlus::class)]
+#[Group('Datetime')]
class DateTimePlusTest extends TestCase {
/**
@@ -22,9 +26,8 @@ class DateTimePlusTest extends TestCase {
* Timezone argument for DateTimePlus.
* @param string $expected
* Expected output from DateTimePlus::format().
- *
- * @dataProvider providerTestDates
*/
+ #[DataProvider('providerTestDates')]
public function testDates($input, $timezone, $expected): void {
$date = new DateTimePlus($input, $timezone);
$value = $date->format('c');
@@ -44,9 +47,8 @@ class DateTimePlusTest extends TestCase {
* Timezone argument for DateTimePlus.
* @param string $expected
* Expected output from DateTimePlus::format().
- *
- * @dataProvider providerTestDateArrays
*/
+ #[DataProvider('providerTestDateArrays')]
public function testDateArrays($input, $timezone, $expected): void {
$date = DateTimePlus::createFromArray($input, $timezone);
$value = $date->format('c');
@@ -68,9 +70,8 @@ class DateTimePlusTest extends TestCase {
* Absolute flag for DateTimePlus::diff method.
* @param \DateInterval $expected
* The expected result of the DateTimePlus::diff operation.
- *
- * @dataProvider providerTestDateDiff
*/
+ #[DataProvider('providerTestDateDiff')]
public function testDateDiff($input1, $input2, $absolute, \DateInterval $expected): void {
$interval = $input1->diff($input2, $absolute);
$this->assertEquals($interval, $expected);
@@ -85,9 +86,8 @@ class DateTimePlusTest extends TestCase {
* Date argument for DateTimePlus::diff method.
* @param bool $absolute
* Absolute flag for DateTimePlus::diff method.
- *
- * @dataProvider providerTestInvalidDateDiff
*/
+ #[DataProvider('providerTestInvalidDateDiff')]
public function testInvalidDateDiff($input1, $input2, $absolute): void {
$this->expectException(\BadMethodCallException::class);
$this->expectExceptionMessage('Method Drupal\Component\Datetime\DateTimePlus::diff expects parameter 1 to be a \DateTime or \Drupal\Component\Datetime\DateTimePlus object');
@@ -103,9 +103,8 @@ class DateTimePlusTest extends TestCase {
* Timezone argument for DateTimePlus.
* @param string $class
* The Exception subclass to expect to be thrown.
- *
- * @dataProvider providerTestInvalidDateArrays
*/
+ #[DataProvider('providerTestInvalidDateArrays')]
public function testInvalidDateArrays($input, $timezone, $class): void {
$this->expectException($class);
$this->assertInstanceOf(
@@ -121,9 +120,8 @@ class DateTimePlusTest extends TestCase {
* Input argument for DateTimePlus::checkArray().
* @param bool $expected
* The expected result of DateTimePlus::checkArray().
- *
- * @dataProvider providerTestCheckArray
*/
+ #[DataProvider('providerTestCheckArray')]
public function testCheckArray(array $array, $expected): void {
$this->assertSame(
$expected,
@@ -157,9 +155,8 @@ class DateTimePlusTest extends TestCase {
* DateTimePlus::getTimeZone()::getName(), after timezone transform.
* - 'expected_transform_offset' - Expected output from
* DateTimePlus::getOffset(), after timezone transform.
- *
- * @dataProvider providerTestTimestamp
*/
+ #[DataProvider('providerTestTimestamp')]
public function testTimestamp($input, array $initial, array $transform): void {
// Initialize a new date object.
$date = DateTimePlus::createFromTimestamp($input, $initial['timezone']);
@@ -175,9 +172,8 @@ class DateTimePlusTest extends TestCase {
* @see testTimestamp()
* @param array $transform
* @see testTimestamp()
- *
- * @dataProvider providerTestDateTimestamp
*/
+ #[DataProvider('providerTestDateTimestamp')]
public function testDateTimestamp($input, array $initial, array $transform): void {
// Initialize a new date object.
$date = new DateTimePlus($input, $initial['timezone']);
@@ -240,9 +236,8 @@ class DateTimePlusTest extends TestCase {
* Format argument for DateTimePlus::format().
* @param string $expected
* Expected output from DateTimePlus::format().
- *
- * @dataProvider providerTestDateFormat
*/
+ #[DataProvider('providerTestDateFormat')]
public function testDateFormat($input, $timezone, $format, $format_date, $expected): void {
$date = DateTimePlus::createFromFormat($format, $input, $timezone);
$value = $date->format($format_date);
@@ -262,9 +257,8 @@ class DateTimePlusTest extends TestCase {
* Message to print if no errors are thrown by the invalid dates.
* @param string $class
* The Exception subclass to expect to be thrown.
- *
- * @dataProvider providerTestInvalidDates
*/
+ #[DataProvider('providerTestInvalidDates')]
public function testInvalidDates($input, $timezone, $format, $message, $class): void {
$this->expectException($class);
DateTimePlus::createFromFormat($format, $input, $timezone);
@@ -283,9 +277,8 @@ class DateTimePlusTest extends TestCase {
* Expected timezone returned from DateTimePlus::getTimezone::getName().
* @param string $message
* Message to print on test failure.
- *
- * @dataProvider providerTestDateTimezone
*/
+ #[DataProvider('providerTestDateTimezone')]
public function testDateTimezone($input, $timezone, $expected_timezone, $message): void {
$date = new DateTimePlus($input, $timezone);
$timezone = $date->getTimezone()->getName();
@@ -755,10 +748,9 @@ class DateTimePlusTest extends TestCase {
* @param string[] $errors
* An array of error messages.
*
- * @covers ::__construct
- *
- * @dataProvider providerTestInvalidConstructor
+ * @legacy-covers ::__construct
*/
+ #[DataProvider('providerTestInvalidConstructor')]
public function testInvalidConstructor($time, array $errors): void {
$date = new DateTimePlus($time);
@@ -870,7 +862,7 @@ class DateTimePlusTest extends TestCase {
/**
* Tests that object methods are chainable.
*
- * @covers ::__call
+ * @legacy-covers ::__call
*/
public function testChainable(): void {
$date = new DateTimePlus('now', 'Australia/Sydney');
@@ -894,7 +886,7 @@ class DateTimePlusTest extends TestCase {
/**
* Tests that non-chainable methods work.
*
- * @covers ::__call
+ * @legacy-covers ::__call
*/
public function testChainableNonChainable(): void {
$datetime1 = new DateTimePlus('2009-10-11 12:00:00');
@@ -907,7 +899,7 @@ class DateTimePlusTest extends TestCase {
/**
* Tests that chained calls to non-existent functions throw an exception.
*
- * @covers ::__call
+ * @legacy-covers ::__call
*/
public function testChainableNonCallable(): void {
$this->expectException(\BadMethodCallException::class);
@@ -917,7 +909,7 @@ class DateTimePlusTest extends TestCase {
}
/**
- * @covers ::getPhpDateTime
+ * @legacy-covers ::getPhpDateTime
*/
public function testGetPhpDateTime(): void {
$new_york = new \DateTimeZone('America/New_York');
diff --git a/core/tests/Drupal/Tests/Component/Datetime/TimeWithNoRequestTest.php b/core/tests/Drupal/Tests/Component/Datetime/TimeWithNoRequestTest.php
index d4b02de5d30a..a394e1b99c98 100644
--- a/core/tests/Drupal/Tests/Component/Datetime/TimeWithNoRequestTest.php
+++ b/core/tests/Drupal/Tests/Component/Datetime/TimeWithNoRequestTest.php
@@ -5,17 +5,20 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Datetime;
use Drupal\Component\Datetime\Time;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\PreserveGlobalState;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
use PHPUnit\Framework\TestCase;
/**
* Tests that getRequest(Micro)Time works when no underlying request exists.
- *
- * @coversDefaultClass \Drupal\Component\Datetime\Time
- * @group Datetime
- * @group #slow
- * @runTestsInSeparateProcesses
- * @preserveGlobalState disabled
*/
+#[CoversClass(Time::class)]
+#[Group('Datetime')]
+#[Group('#slow')]
+#[PreserveGlobalState(FALSE)]
+#[RunTestsInSeparateProcesses]
class TimeWithNoRequestTest extends TestCase {
/**
@@ -40,7 +43,7 @@ class TimeWithNoRequestTest extends TestCase {
/**
* Tests the getRequestTime method.
*
- * @covers ::getRequestTime
+ * @legacy-covers ::getRequestTime
*/
public function testGetRequestTimeImmutable(): void {
$requestTime = $this->time->getRequestTime();
@@ -51,7 +54,7 @@ class TimeWithNoRequestTest extends TestCase {
/**
* Tests the getRequestMicroTime method.
*
- * @covers ::getRequestMicroTime
+ * @legacy-covers ::getRequestMicroTime
*/
public function testGetRequestMicroTimeImmutable(): void {
$requestTime = $this->time->getRequestMicroTime();
diff --git a/core/tests/Drupal/Tests/Component/DependencyInjection/ContainerTest.php b/core/tests/Drupal/Tests/Component/DependencyInjection/ContainerTest.php
index 6f8880376327..b57d2740704b 100644
--- a/core/tests/Drupal/Tests/Component/DependencyInjection/ContainerTest.php
+++ b/core/tests/Drupal/Tests/Component/DependencyInjection/ContainerTest.php
@@ -4,9 +4,13 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\DependencyInjection;
+use Drupal\Component\DependencyInjection\Container;
use Drupal\Component\Utility\Crypt;
use Drupal\TestTools\Extension\DeprecationBridge\ExpectDeprecationTrait;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
+use Prophecy\Argument;
use Prophecy\PhpUnit\ProphecyTrait;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
@@ -15,12 +19,12 @@ use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException;
use Symfony\Component\DependencyInjection\Exception\RuntimeException;
use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException;
use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
-use Prophecy\Argument;
/**
- * @coversDefaultClass \Drupal\Component\DependencyInjection\Container
- * @group DependencyInjection
+ * Tests Drupal\Component\DependencyInjection\Container.
*/
+#[CoversClass(Container::class)]
+#[Group('DependencyInjection')]
class ContainerTest extends TestCase {
use ExpectDeprecationTrait;
use ProphecyTrait;
@@ -66,7 +70,7 @@ class ContainerTest extends TestCase {
/**
* Tests that passing a non-supported format throws an InvalidArgumentException.
*
- * @covers ::__construct
+ * @legacy-covers ::__construct
*/
public function testConstruct(): void {
$container_definition = $this->getMockContainerDefinition();
@@ -78,7 +82,7 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::getParameter() works properly.
*
- * @covers ::getParameter
+ * @legacy-covers ::getParameter
*/
public function testGetParameter(): void {
$this->assertEquals($this->containerDefinition['parameters']['some_config'], $this->container->getParameter('some_config'), 'Container parameter matches for %some_config%.');
@@ -88,9 +92,9 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::getParameter() works for non-existing parameters.
*
- * @covers ::getParameter
- * @covers ::getParameterAlternatives
- * @covers ::getAlternatives
+ * @legacy-covers ::getParameter
+ * @legacy-covers ::getParameterAlternatives
+ * @legacy-covers ::getAlternatives
*/
public function testGetParameterIfNotFound(): void {
$this->expectException(ParameterNotFoundException::class);
@@ -100,7 +104,7 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::getParameter() works properly for NULL parameters.
*
- * @covers ::getParameter
+ * @legacy-covers ::getParameter
*/
public function testGetParameterIfNotFoundBecauseNull(): void {
$this->expectException(ParameterNotFoundException::class);
@@ -110,7 +114,7 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::hasParameter() works properly.
*
- * @covers ::hasParameter
+ * @legacy-covers ::hasParameter
*/
public function testHasParameter(): void {
$this->assertTrue($this->container->hasParameter('some_config'), 'Container parameters include %some_config%.');
@@ -120,7 +124,7 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::setParameter() in an unfrozen case works properly.
*
- * @covers ::setParameter
+ * @legacy-covers ::setParameter
*/
public function testSetParameterWithUnfrozenContainer(): void {
$container_definition = $this->containerDefinition;
@@ -133,7 +137,7 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::setParameter() in a frozen case works properly.
*
- * @covers ::setParameter
+ * @legacy-covers ::setParameter
*/
public function testSetParameterWithFrozenContainer(): void {
$this->container = new $this->containerClass($this->containerDefinition);
@@ -144,8 +148,8 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() works properly.
*
- * @covers ::get
- * @covers ::createService
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
*/
public function testGet(): void {
$container = $this->container->get('service_container');
@@ -171,8 +175,8 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for non-shared services works properly.
*
- * @covers ::get
- * @covers ::createService
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
*/
public function testGetForNonSharedService(): void {
$service = $this->container->get('non_shared_service');
@@ -184,8 +188,8 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() works properly for class from parameters.
*
- * @covers ::get
- * @covers ::createService
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
*/
public function testGetForClassFromParameter(): void {
$container_definition = $this->containerDefinition;
@@ -200,7 +204,7 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::set() works properly.
*
- * @covers ::set
+ * @legacy-covers ::set
*/
public function testSet(): void {
$this->assertNull($this->container->get('new_id', ContainerInterface::NULL_ON_INVALID_REFERENCE));
@@ -213,7 +217,7 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::has() works properly.
*
- * @covers ::has
+ * @legacy-covers ::has
*/
public function testHas(): void {
$this->assertTrue($this->container->has('other.service'));
@@ -228,7 +232,7 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::has() for aliased services works properly.
*
- * @covers ::has
+ * @legacy-covers ::has
*/
public function testHasForAliasedService(): void {
$service = $this->container->has('service.provider');
@@ -239,8 +243,8 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for circular dependencies works properly.
*
- * @covers ::get
- * @covers ::createService
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
*/
public function testGetForCircularServices(): void {
$this->expectException(ServiceCircularReferenceException::class);
@@ -250,10 +254,10 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for non-existent services works properly.
*
- * @covers ::get
- * @covers ::createService
- * @covers ::getAlternatives
- * @covers ::getServiceAlternatives
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
+ * @legacy-covers ::getAlternatives
+ * @legacy-covers ::getServiceAlternatives
*/
public function testGetForNonExistentService(): void {
$this->expectException(ServiceNotFoundException::class);
@@ -263,8 +267,8 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for a serialized definition works properly.
*
- * @covers ::get
- * @covers ::createService
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
*/
public function testGetForSerializedServiceDefinition(): void {
$container_definition = $this->containerDefinition;
@@ -283,9 +287,9 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for non-existent parameters works properly.
*
- * @covers ::get
- * @covers ::createService
- * @covers ::resolveServicesAndParameters
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
+ * @legacy-covers ::resolveServicesAndParameters
*/
public function testGetForNonExistentParameterDependency(): void {
$service = $this->container->get('service_parameter_not_exists', ContainerInterface::NULL_ON_INVALID_REFERENCE);
@@ -295,9 +299,9 @@ class ContainerTest extends TestCase {
/**
* Tests Container::get() with an exception due to missing parameter on the second call.
*
- * @covers ::get
- * @covers ::createService
- * @covers ::resolveServicesAndParameters
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
+ * @legacy-covers ::resolveServicesAndParameters
*/
public function testGetForParameterDependencyWithExceptionOnSecondCall(): void {
$service = $this->container->get('service_parameter_not_exists', ContainerInterface::NULL_ON_INVALID_REFERENCE);
@@ -312,9 +316,9 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for non-existent parameters works properly.
*
- * @covers ::get
- * @covers ::createService
- * @covers ::resolveServicesAndParameters
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
+ * @legacy-covers ::resolveServicesAndParameters
*/
public function testGetForNonExistentParameterDependencyWithException(): void {
$this->expectException(InvalidArgumentException::class);
@@ -324,9 +328,9 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for non-existent dependencies works properly.
*
- * @covers ::get
- * @covers ::createService
- * @covers ::resolveServicesAndParameters
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
+ * @legacy-covers ::resolveServicesAndParameters
*/
public function testGetForNonExistentServiceDependency(): void {
$service = $this->container->get('service_dependency_not_exists', ContainerInterface::NULL_ON_INVALID_REFERENCE);
@@ -336,10 +340,10 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for non-existent dependencies works properly.
*
- * @covers ::get
- * @covers ::createService
- * @covers ::resolveServicesAndParameters
- * @covers ::getAlternatives
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
+ * @legacy-covers ::resolveServicesAndParameters
+ * @legacy-covers ::getAlternatives
*/
public function testGetForNonExistentServiceDependencyWithException(): void {
$this->expectException(ServiceNotFoundException::class);
@@ -349,8 +353,8 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for non-existent services works properly.
*
- * @covers ::get
- * @covers ::createService
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
*/
public function testGetForNonExistentServiceWhenUsingNull(): void {
$this->assertNull($this->container->get('service_not_exists', ContainerInterface::NULL_ON_INVALID_REFERENCE), 'Not found service does not throw exception.');
@@ -359,8 +363,8 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for NULL service works properly.
*
- * @covers ::get
- * @covers ::createService
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
*/
public function testGetForNonExistentNULLService(): void {
$this->expectException(ServiceNotFoundException::class);
@@ -370,8 +374,8 @@ class ContainerTest extends TestCase {
/**
* Tests multiple Container::get() calls for non-existing dependencies work.
*
- * @covers ::get
- * @covers ::createService
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
*/
public function testGetForNonExistentServiceMultipleTimes(): void {
$container = new $this->containerClass();
@@ -383,9 +387,9 @@ class ContainerTest extends TestCase {
/**
* Tests multiple Container::get() calls with exception on the second time.
*
- * @covers ::get
- * @covers ::createService
- * @covers ::getAlternatives
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
+ * @legacy-covers ::getAlternatives
*/
public function testGetForNonExistentServiceWithExceptionOnSecondCall(): void {
$this->assertNull($this->container->get('service_not_exists', ContainerInterface::NULL_ON_INVALID_REFERENCE), 'Not found service does nto throw exception.');
@@ -396,8 +400,8 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for aliased services works properly.
*
- * @covers ::get
- * @covers ::createService
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
*/
public function testGetForAliasedService(): void {
$service = $this->container->get('service.provider');
@@ -408,8 +412,8 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for synthetic services works - if defined.
*
- * @covers ::get
- * @covers ::createService
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
*/
public function testGetForSyntheticService(): void {
$synthetic_service = new \stdClass();
@@ -421,8 +425,8 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for synthetic services throws an Exception if not defined.
*
- * @covers ::get
- * @covers ::createService
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
*/
public function testGetForSyntheticServiceWithException(): void {
$this->expectException(RuntimeException::class);
@@ -432,8 +436,8 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for services with file includes works.
*
- * @covers ::get
- * @covers ::createService
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
*/
public function testGetWithFileInclude(): void {
$this->container->get('container_test_file_service_test');
@@ -444,9 +448,9 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for various arguments lengths works.
*
- * @covers ::get
- * @covers ::createService
- * @covers ::resolveServicesAndParameters
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
+ * @legacy-covers ::resolveServicesAndParameters
*/
public function testGetForInstantiationWithVariousArgumentLengths(): void {
$args = [];
@@ -460,8 +464,8 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for wrong factories works correctly.
*
- * @covers ::get
- * @covers ::createService
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
*/
public function testGetForWrongFactory(): void {
$this->expectException(RuntimeException::class);
@@ -471,8 +475,8 @@ class ContainerTest extends TestCase {
/**
* Tests Container::get() for factories via services (Symfony 2.7.0).
*
- * @covers ::get
- * @covers ::createService
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
*/
public function testGetForFactoryService(): void {
$factory_service = $this->container->get('factory_service');
@@ -483,8 +487,8 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for factories via class works (Symfony 2.7.0).
*
- * @covers ::get
- * @covers ::createService
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
*/
public function testGetForFactoryClass(): void {
$service = $this->container->get('service.provider');
@@ -498,8 +502,8 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for configurable services throws an Exception.
*
- * @covers ::get
- * @covers ::createService
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
*/
public function testGetForConfiguratorWithException(): void {
$this->expectException(InvalidArgumentException::class);
@@ -509,8 +513,8 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::get() for configurable services works.
*
- * @covers ::get
- * @covers ::createService
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
*/
public function testGetForConfigurator(): void {
$container = $this->container;
@@ -532,9 +536,9 @@ class ContainerTest extends TestCase {
/**
* Tests that private services work correctly.
*
- * @covers ::get
- * @covers ::createService
- * @covers ::resolveServicesAndParameters
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
+ * @legacy-covers ::resolveServicesAndParameters
*/
public function testResolveServicesAndParametersForPrivateService(): void {
$service = $this->container->get('service_using_private');
@@ -551,9 +555,9 @@ class ContainerTest extends TestCase {
/**
* Tests that private service sharing works correctly.
*
- * @covers ::get
- * @covers ::createService
- * @covers ::resolveServicesAndParameters
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
+ * @legacy-covers ::resolveServicesAndParameters
*/
public function testResolveServicesAndParametersForSharedPrivateService(): void {
$service = $this->container->get('service_using_shared_private');
@@ -570,9 +574,9 @@ class ContainerTest extends TestCase {
/**
* Tests that services with an array of arguments work correctly.
*
- * @covers ::get
- * @covers ::createService
- * @covers ::resolveServicesAndParameters
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
+ * @legacy-covers ::resolveServicesAndParameters
*/
public function testResolveServicesAndParametersForArgumentsUsingDeepArray(): void {
$service = $this->container->get('service_using_array');
@@ -583,9 +587,9 @@ class ContainerTest extends TestCase {
/**
* Tests that services that are optional work correctly.
*
- * @covers ::get
- * @covers ::createService
- * @covers ::resolveServicesAndParameters
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
+ * @legacy-covers ::resolveServicesAndParameters
*/
public function testResolveServicesAndParametersForOptionalServiceDependencies(): void {
$service = $this->container->get('service_with_optional_dependency');
@@ -595,9 +599,9 @@ class ContainerTest extends TestCase {
/**
* Tests that services wrapped in a closure work correctly.
*
- * @covers ::get
- * @covers ::createService
- * @covers ::resolveServicesAndParameters
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
+ * @legacy-covers ::resolveServicesAndParameters
*/
public function testResolveServicesAndParametersForServiceReferencedViaServiceClosure(): void {
$service = $this->container->get('service_within_service_closure');
@@ -610,9 +614,9 @@ class ContainerTest extends TestCase {
/**
* Tests that an invalid argument throw an Exception.
*
- * @covers ::get
- * @covers ::createService
- * @covers ::resolveServicesAndParameters
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
+ * @legacy-covers ::resolveServicesAndParameters
*/
public function testResolveServicesAndParametersForInvalidArgument(): void {
$this->expectException(InvalidArgumentException::class);
@@ -622,9 +626,9 @@ class ContainerTest extends TestCase {
/**
* Tests that invalid arguments throw an Exception.
*
- * @covers ::get
- * @covers ::createService
- * @covers ::resolveServicesAndParameters
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
+ * @legacy-covers ::resolveServicesAndParameters
*/
public function testResolveServicesAndParametersForInvalidArguments(): void {
// In case the machine-optimized format is not used, we need to simulate the
@@ -639,9 +643,9 @@ class ContainerTest extends TestCase {
/**
* Tests that a parameter that points to a service works correctly.
*
- * @covers ::get
- * @covers ::createService
- * @covers ::resolveServicesAndParameters
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
+ * @legacy-covers ::resolveServicesAndParameters
*/
public function testResolveServicesAndParametersForServiceInstantiatedFromParameter(): void {
$service = $this->container->get('service.provider');
@@ -652,7 +656,7 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::initialized works correctly.
*
- * @covers ::initialized
+ * @legacy-covers ::initialized
*/
public function testInitialized(): void {
$this->assertFalse($this->container->initialized('late.service'), 'Late service is not initialized.');
@@ -663,7 +667,7 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::initialized works correctly for aliases.
*
- * @covers ::initialized
+ * @legacy-covers ::initialized
*/
public function testInitializedForAliases(): void {
$this->assertFalse($this->container->initialized('late.service_alias'), 'Late service is not initialized.');
@@ -674,7 +678,7 @@ class ContainerTest extends TestCase {
/**
* Tests that Container::getServiceIds() works properly.
*
- * @covers ::getServiceIds
+ * @legacy-covers ::getServiceIds
*/
public function testGetServiceIds(): void {
$service_definition_keys = array_merge(['service_container'], array_keys($this->containerDefinition['services']));
@@ -691,9 +695,9 @@ class ContainerTest extends TestCase {
/**
* Tests that raw type services arguments are resolved correctly.
*
- * @covers ::get
- * @covers ::createService
- * @covers ::resolveServicesAndParameters
+ * @legacy-covers ::get
+ * @legacy-covers ::createService
+ * @legacy-covers ::resolveServicesAndParameters
*/
public function testResolveServicesAndParametersForRawArgument(): void {
$this->assertEquals(['ccc'], $this->container->get('service_with_raw_argument')->getArguments());
@@ -715,7 +719,7 @@ class ContainerTest extends TestCase {
/**
* Tests Container::reset().
*
- * @covers ::reset
+ * @legacy-covers ::reset
*/
public function testReset(): void {
$this->assertFalse($this->container->initialized('late.service'), 'Late service is not initialized.');
diff --git a/core/tests/Drupal/Tests/Component/DependencyInjection/PhpArrayContainerTest.php b/core/tests/Drupal/Tests/Component/DependencyInjection/PhpArrayContainerTest.php
index 99113913a7f2..ed02dc435ebd 100644
--- a/core/tests/Drupal/Tests/Component/DependencyInjection/PhpArrayContainerTest.php
+++ b/core/tests/Drupal/Tests/Component/DependencyInjection/PhpArrayContainerTest.php
@@ -4,12 +4,16 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\DependencyInjection;
+use Drupal\Component\DependencyInjection\PhpArrayContainer;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
- * @coversDefaultClass \Drupal\Component\DependencyInjection\PhpArrayContainer
- * @group DependencyInjection
+ * Tests Drupal\Component\DependencyInjection\PhpArrayContainer.
*/
+#[CoversClass(PhpArrayContainer::class)]
+#[Group('DependencyInjection')]
class PhpArrayContainerTest extends ContainerTest {
/**
diff --git a/core/tests/Drupal/Tests/Component/DependencyInjection/ReverseContainerTest.php b/core/tests/Drupal/Tests/Component/DependencyInjection/ReverseContainerTest.php
index 2bdac0cc4d48..db16c20e1f81 100644
--- a/core/tests/Drupal/Tests/Component/DependencyInjection/ReverseContainerTest.php
+++ b/core/tests/Drupal/Tests/Component/DependencyInjection/ReverseContainerTest.php
@@ -5,6 +5,9 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\DependencyInjection;
use Drupal\Component\DependencyInjection\ReverseContainer;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
use PHPUnit\Framework\TestCase;
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -13,15 +16,14 @@ use Symfony\Component\DependencyInjection\ContainerBuilder;
*
* The reverse container uses a static to maintain information across
* container rebuilds.
- *
- * @runTestsInSeparateProcesses
- * @coversDefaultClass \Drupal\Component\DependencyInjection\ReverseContainer
- * @group DependencyInjection
*/
+#[CoversClass(ReverseContainer::class)]
+#[Group('DependencyInjection')]
+#[RunTestsInSeparateProcesses]
class ReverseContainerTest extends TestCase {
/**
- * @covers ::getId
+ * @legacy-covers ::getId
*/
public function testGetId(): void {
$container = new ContainerBuilder();
@@ -37,7 +39,7 @@ class ReverseContainerTest extends TestCase {
}
/**
- * @covers ::recordContainer
+ * @legacy-covers ::recordContainer
*/
public function testRecordContainer(): void {
$container = new ContainerBuilder();
diff --git a/core/tests/Drupal/Tests/Component/Diff/DiffFormatterTest.php b/core/tests/Drupal/Tests/Component/Diff/DiffFormatterTest.php
index 696dcb852032..cb53b3cee21e 100644
--- a/core/tests/Drupal/Tests/Component/Diff/DiffFormatterTest.php
+++ b/core/tests/Drupal/Tests/Component/Diff/DiffFormatterTest.php
@@ -6,15 +6,16 @@ namespace Drupal\Tests\Component\Diff;
use Drupal\Component\Diff\Diff;
use Drupal\Component\Diff\DiffFormatter;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* Test DiffFormatter classes.
- *
- * @coversDefaultClass \Drupal\Component\Diff\DiffFormatter
- *
- * @group Diff
*/
+#[CoversClass(DiffFormatter::class)]
+#[Group('Diff')]
class DiffFormatterTest extends TestCase {
/**
@@ -47,9 +48,9 @@ class DiffFormatterTest extends TestCase {
/**
* Tests whether op classes returned by DiffEngine::diff() match expectations.
*
- * @covers ::format
- * @dataProvider provideTestDiff
+ * @legacy-covers ::format
*/
+ #[DataProvider('provideTestDiff')]
public function testDiff($expected, $from, $to): void {
$diff = new Diff($from, $to);
$formatter = new DiffFormatter();
diff --git a/core/tests/Drupal/Tests/Component/Diff/DiffOpOutputBuilderTest.php b/core/tests/Drupal/Tests/Component/Diff/DiffOpOutputBuilderTest.php
index 29143ca9b2b0..e68c1ad5f634 100644
--- a/core/tests/Drupal/Tests/Component/Diff/DiffOpOutputBuilderTest.php
+++ b/core/tests/Drupal/Tests/Component/Diff/DiffOpOutputBuilderTest.php
@@ -6,17 +6,20 @@ namespace Drupal\Tests\Component\Diff;
use Drupal\Component\Diff\DiffOpOutputBuilder;
use Drupal\Component\Diff\Engine\DiffOpAdd;
-use Drupal\Component\Diff\Engine\DiffOpCopy;
use Drupal\Component\Diff\Engine\DiffOpChange;
+use Drupal\Component\Diff\Engine\DiffOpCopy;
use Drupal\Component\Diff\Engine\DiffOpDelete;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
use SebastianBergmann\Diff\Differ;
/**
- * @coversDefaultClass \Drupal\Component\Diff\DiffOpOutputBuilder
- *
- * @group Diff
+ * Tests Drupal\Component\Diff\DiffOpOutputBuilder.
*/
+#[CoversClass(DiffOpOutputBuilder::class)]
+#[Group('Diff')]
class DiffOpOutputBuilderTest extends TestCase {
/**
@@ -91,9 +94,9 @@ class DiffOpOutputBuilderTest extends TestCase {
/**
* Tests whether op classes returned match expectations.
*
- * @covers ::toOpsArray
- * @dataProvider provideTestDiff
+ * @legacy-covers ::toOpsArray
*/
+ #[DataProvider('provideTestDiff')]
public function testToOpsArray(array $expected, array $from, array $to): void {
$diffOpBuilder = new DiffOpOutputBuilder();
$differ = new Differ($diffOpBuilder);
@@ -102,9 +105,9 @@ class DiffOpOutputBuilderTest extends TestCase {
}
/**
- * @covers ::getDiff
- * @dataProvider provideTestDiff
+ * @legacy-covers ::getDiff
*/
+ #[DataProvider('provideTestDiff')]
public function testGetDiff(array $expected, array $from, array $to): void {
$differ = new Differ(new DiffOpOutputBuilder());
$diff = $differ->diff($from, $to);
@@ -114,7 +117,7 @@ class DiffOpOutputBuilderTest extends TestCase {
/**
* Tests that two files can be successfully diffed.
*
- * @covers ::toOpsArray
+ * @legacy-covers ::toOpsArray
*/
public function testDiffInfiniteLoop(): void {
$from = explode("\n", file_get_contents(__DIR__ . '/Engine/fixtures/file1.txt'));
diff --git a/core/tests/Drupal/Tests/Component/Diff/Engine/HWLDFWordAccumulatorTest.php b/core/tests/Drupal/Tests/Component/Diff/Engine/HWLDFWordAccumulatorTest.php
index eb006d115e83..27e9bbd38c49 100644
--- a/core/tests/Drupal/Tests/Component/Diff/Engine/HWLDFWordAccumulatorTest.php
+++ b/core/tests/Drupal/Tests/Component/Diff/Engine/HWLDFWordAccumulatorTest.php
@@ -4,28 +4,26 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Diff\Engine;
-// cspell:ignore HWLDFWordAccumulator
-
use Drupal\Component\Diff\Engine\HWLDFWordAccumulator;
+// cspell:ignore HWLDFWordAccumulator
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
// cspell:ignore wordword
-
/**
* Test HWLDFWordAccumulator.
- *
- * @coversDefaultClass \Drupal\Component\Diff\Engine\HWLDFWordAccumulator
- *
- * @group Diff
*/
+#[CoversClass(HWLDFWordAccumulator::class)]
+#[Group('Diff')]
class HWLDFWordAccumulatorTest extends TestCase {
/**
* Verify that we only get back a NBSP from an empty accumulator.
*
- * @covers ::getLines
- *
* @see Drupal\Component\Diff\Engine\HWLDFWordAccumulator::NBSP
+ * @legacy-covers ::getLines
*/
public function testGetLinesEmpty(): void {
$acc = new HWLDFWordAccumulator();
@@ -47,9 +45,9 @@ class HWLDFWordAccumulatorTest extends TestCase {
}
/**
- * @covers ::addWords
- * @dataProvider provideAddWords
+ * @legacy-covers ::addWords
*/
+ #[DataProvider('provideAddWords')]
public function testAddWords($expected, $words, $tag): void {
$acc = new HWLDFWordAccumulator();
$acc->addWords($words, $tag);
diff --git a/core/tests/Drupal/Tests/Component/Discovery/YamlDirectoryDiscoveryTest.php b/core/tests/Drupal/Tests/Component/Discovery/YamlDirectoryDiscoveryTest.php
index 816def560ed5..0b6521acd64b 100644
--- a/core/tests/Drupal/Tests/Component/Discovery/YamlDirectoryDiscoveryTest.php
+++ b/core/tests/Drupal/Tests/Component/Discovery/YamlDirectoryDiscoveryTest.php
@@ -8,15 +8,15 @@ use Drupal\Component\Discovery\DiscoveryException;
use Drupal\Component\Discovery\YamlDirectoryDiscovery;
use Drupal\Component\FileCache\FileCacheFactory;
use org\bovigo\vfs\vfsStream;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* YamlDirectoryDiscoveryTest component unit tests.
- *
- * @coversDefaultClass \Drupal\Component\Discovery\YamlDirectoryDiscovery
- *
- * @group Discovery
*/
+#[CoversClass(YamlDirectoryDiscovery::class)]
+#[Group('Discovery')]
class YamlDirectoryDiscoveryTest extends TestCase {
/**
@@ -30,7 +30,7 @@ class YamlDirectoryDiscoveryTest extends TestCase {
/**
* Tests YAML directory discovery.
*
- * @covers ::findAll
+ * @legacy-covers ::findAll
*/
public function testDiscovery(): void {
vfsStream::setup('modules', NULL, [
@@ -102,7 +102,7 @@ class YamlDirectoryDiscoveryTest extends TestCase {
/**
* Tests YAML directory discovery with an alternate ID key.
*
- * @covers ::findAll
+ * @legacy-covers ::findAll
*/
public function testDiscoveryAlternateId(): void {
vfsStream::setup('modules', NULL, [
@@ -124,8 +124,8 @@ class YamlDirectoryDiscoveryTest extends TestCase {
/**
* Tests YAML directory discovery with a missing ID key.
*
- * @covers ::findAll
- * @covers ::getIdentifier
+ * @legacy-covers ::findAll
+ * @legacy-covers ::getIdentifier
*/
public function testDiscoveryNoIdException(): void {
$this->expectException(DiscoveryException::class);
@@ -146,7 +146,7 @@ class YamlDirectoryDiscoveryTest extends TestCase {
/**
* Tests YAML directory discovery with invalid YAML.
*
- * @covers ::findAll
+ * @legacy-covers ::findAll
*/
public function testDiscoveryInvalidYamlException(): void {
$this->expectException(DiscoveryException::class);
diff --git a/core/tests/Drupal/Tests/Component/Discovery/YamlDiscoveryTest.php b/core/tests/Drupal/Tests/Component/Discovery/YamlDiscoveryTest.php
index a592b1cea485..cc662a528cc1 100644
--- a/core/tests/Drupal/Tests/Component/Discovery/YamlDiscoveryTest.php
+++ b/core/tests/Drupal/Tests/Component/Discovery/YamlDiscoveryTest.php
@@ -10,13 +10,13 @@ use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
use org\bovigo\vfs\vfsStream;
use org\bovigo\vfs\vfsStreamDirectory;
use org\bovigo\vfs\vfsStreamWrapper;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* YamlDiscovery component unit tests.
- *
- * @group Discovery
*/
+#[Group('Discovery')]
class YamlDiscoveryTest extends TestCase {
/**
diff --git a/core/tests/Drupal/Tests/Component/DrupalComponentTest.php b/core/tests/Drupal/Tests/Component/DrupalComponentTest.php
index 4ffa430c05b5..3e4295e18abf 100644
--- a/core/tests/Drupal/Tests/Component/DrupalComponentTest.php
+++ b/core/tests/Drupal/Tests/Component/DrupalComponentTest.php
@@ -6,13 +6,14 @@ namespace Drupal\Tests\Component;
use org\bovigo\vfs\vfsStream;
use PHPUnit\Framework\AssertionFailedError;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* General tests for \Drupal\Component that can't go anywhere else.
- *
- * @group Component
*/
+#[Group('Component')]
class DrupalComponentTest extends TestCase {
/**
@@ -40,9 +41,8 @@ class DrupalComponentTest extends TestCase {
*
* @param string $component_path
* The path to the component.
- *
- * @dataProvider getComponents
*/
+ #[DataProvider('getComponents')]
public function testComponentLicense(string $component_path): void {
$this->assertFileExists($component_path . DIRECTORY_SEPARATOR . 'LICENSE.txt');
$this->assertSame('e84dac1d9fbb5a4a69e38654ce644cea769aa76b', hash_file('sha1', $component_path . DIRECTORY_SEPARATOR . 'LICENSE.txt'));
@@ -139,9 +139,9 @@ class DrupalComponentTest extends TestCase {
}
/**
- * @covers \Drupal\Tests\Component\DrupalComponentTest::assertNoCoreUsage
- * @dataProvider providerAssertNoCoreUsage
+ * @legacy-covers \Drupal\Tests\Component\DrupalComponentTest::assertNoCoreUsage
*/
+ #[DataProvider('providerAssertNoCoreUsage')]
public function testAssertNoCoreUsage($expected_pass, $file_data): void {
// Set up a virtual file to read.
$vfs_root = vfsStream::setup('root');
diff --git a/core/tests/Drupal/Tests/Component/FileCache/FileCacheFactoryTest.php b/core/tests/Drupal/Tests/Component/FileCache/FileCacheFactoryTest.php
index 9cae565db968..503a80c4bb2b 100644
--- a/core/tests/Drupal/Tests/Component/FileCache/FileCacheFactoryTest.php
+++ b/core/tests/Drupal/Tests/Component/FileCache/FileCacheFactoryTest.php
@@ -5,15 +5,19 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\FileCache;
use Drupal\Component\FileCache\FileCache;
-use Drupal\Component\FileCache\NullFileCache;
use Drupal\Component\FileCache\FileCacheFactory;
+use Drupal\Component\FileCache\NullFileCache;
use Drupal\Component\Utility\Random;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\FileCache\FileCacheFactory
- * @group FileCache
+ * Tests Drupal\Component\FileCache\FileCacheFactory.
*/
+#[CoversClass(FileCacheFactory::class)]
+#[Group('FileCache')]
class FileCacheFactoryTest extends TestCase {
/**
@@ -36,7 +40,7 @@ class FileCacheFactoryTest extends TestCase {
}
/**
- * @covers ::get
+ * @legacy-covers ::get
*/
public function testGet(): void {
$file_cache = FileCacheFactory::get('test_foo_settings', []);
@@ -57,7 +61,7 @@ class FileCacheFactoryTest extends TestCase {
}
/**
- * @covers ::get
+ * @legacy-covers ::get
*/
public function testGetNoPrefix(): void {
FileCacheFactory::setPrefix(NULL);
@@ -67,7 +71,7 @@ class FileCacheFactoryTest extends TestCase {
}
/**
- * @covers ::get
+ * @legacy-covers ::get
*/
public function testGetDisabledFileCache(): void {
// Ensure the returned FileCache is an instance of FileCache::class.
@@ -84,10 +88,9 @@ class FileCacheFactoryTest extends TestCase {
}
/**
- * @covers ::get
- *
- * @dataProvider configurationDataProvider
+ * @legacy-covers ::get
*/
+ #[DataProvider('configurationDataProvider')]
public function testGetConfigurationOverrides($configuration, $arguments, $class): void {
FileCacheFactory::setConfiguration($configuration);
@@ -154,8 +157,8 @@ class FileCacheFactoryTest extends TestCase {
}
/**
- * @covers ::getConfiguration
- * @covers ::setConfiguration
+ * @legacy-covers ::getConfiguration
+ * @legacy-covers ::setConfiguration
*/
public function testGetSetConfiguration(): void {
$configuration = FileCacheFactory::getConfiguration();
@@ -166,8 +169,8 @@ class FileCacheFactoryTest extends TestCase {
}
/**
- * @covers ::getPrefix
- * @covers ::setPrefix
+ * @legacy-covers ::getPrefix
+ * @legacy-covers ::setPrefix
*/
public function testGetSetPrefix(): void {
// Random generator.
diff --git a/core/tests/Drupal/Tests/Component/FileCache/FileCacheTest.php b/core/tests/Drupal/Tests/Component/FileCache/FileCacheTest.php
index 88aa8e2f34cd..7128514f6543 100644
--- a/core/tests/Drupal/Tests/Component/FileCache/FileCacheTest.php
+++ b/core/tests/Drupal/Tests/Component/FileCache/FileCacheTest.php
@@ -5,12 +5,15 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\FileCache;
use Drupal\Component\FileCache\FileCache;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\FileCache\FileCache
- * @group FileCache
+ * Tests Drupal\Component\FileCache\FileCache.
*/
+#[CoversClass(FileCache::class)]
+#[Group('FileCache')]
class FileCacheTest extends TestCase {
/**
@@ -38,8 +41,8 @@ class FileCacheTest extends TestCase {
}
/**
- * @covers ::get
- * @covers ::__construct
+ * @legacy-covers ::get
+ * @legacy-covers ::__construct
*/
public function testGet(): void {
// Test a cache miss.
@@ -66,7 +69,7 @@ class FileCacheTest extends TestCase {
}
/**
- * @covers ::getMultiple
+ * @legacy-covers ::getMultiple
*/
public function testGetMultiple(): void {
// Test a cache miss.
@@ -101,7 +104,7 @@ class FileCacheTest extends TestCase {
}
/**
- * @covers ::set
+ * @legacy-covers ::set
*/
public function testSet(): void {
$filename = __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'llama-23.txt';
@@ -122,7 +125,7 @@ class FileCacheTest extends TestCase {
}
/**
- * @covers ::delete
+ * @legacy-covers ::delete
*/
public function testDelete(): void {
$filename = __DIR__ . DIRECTORY_SEPARATOR . 'Fixtures' . DIRECTORY_SEPARATOR . 'llama-23.txt';
diff --git a/core/tests/Drupal/Tests/Component/FileSecurity/FileSecurityTest.php b/core/tests/Drupal/Tests/Component/FileSecurity/FileSecurityTest.php
index 60cedeb245cb..693194a66a2b 100644
--- a/core/tests/Drupal/Tests/Component/FileSecurity/FileSecurityTest.php
+++ b/core/tests/Drupal/Tests/Component/FileSecurity/FileSecurityTest.php
@@ -6,18 +6,19 @@ namespace Drupal\Tests\Component\FileSecurity;
use Drupal\Component\FileSecurity\FileSecurity;
use org\bovigo\vfs\vfsStream;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* Tests the file security component.
- *
- * @coversDefaultClass \Drupal\Component\FileSecurity\FileSecurity
- * @group FileSecurity
*/
+#[CoversClass(FileSecurity::class)]
+#[Group('FileSecurity')]
class FileSecurityTest extends TestCase {
/**
- * @covers ::writeHtaccess
+ * @legacy-covers ::writeHtaccess
*/
public function testWriteHtaccessPrivate(): void {
vfsStream::setup('root');
@@ -30,7 +31,7 @@ class FileSecurityTest extends TestCase {
}
/**
- * @covers ::writeHtaccess
+ * @legacy-covers ::writeHtaccess
*/
public function testWriteHtaccessPublic(): void {
vfsStream::setup('root');
@@ -43,7 +44,7 @@ class FileSecurityTest extends TestCase {
}
/**
- * @covers ::writeHtaccess
+ * @legacy-covers ::writeHtaccess
*/
public function testWriteHtaccessForceOverwrite(): void {
vfsStream::setup('root');
@@ -56,7 +57,7 @@ class FileSecurityTest extends TestCase {
}
/**
- * @covers ::writeHtaccess
+ * @legacy-covers ::writeHtaccess
*/
public function testWriteHtaccessFailure(): void {
vfsStream::setup('root');
diff --git a/core/tests/Drupal/Tests/Component/FileSystem/RegexDirectoryIteratorTest.php b/core/tests/Drupal/Tests/Component/FileSystem/RegexDirectoryIteratorTest.php
index 36749ade6dda..621ce108a5bf 100644
--- a/core/tests/Drupal/Tests/Component/FileSystem/RegexDirectoryIteratorTest.php
+++ b/core/tests/Drupal/Tests/Component/FileSystem/RegexDirectoryIteratorTest.php
@@ -6,18 +6,22 @@ namespace Drupal\Tests\Component\FileSystem;
use Drupal\Component\FileSystem\RegexDirectoryIterator;
use org\bovigo\vfs\vfsStream;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\FileSystem\RegexDirectoryIterator
- * @group FileSystem
+ * Tests Drupal\Component\FileSystem\RegexDirectoryIterator.
*/
+#[CoversClass(RegexDirectoryIterator::class)]
+#[Group('FileSystem')]
class RegexDirectoryIteratorTest extends TestCase {
/**
- * @covers ::accept
- * @dataProvider providerTestRegexDirectoryIterator
+ * @legacy-covers ::accept
*/
+ #[DataProvider('providerTestRegexDirectoryIterator')]
public function testRegexDirectoryIterator(array $directory, $regex, array $expected): void {
vfsStream::setup('root', NULL, $directory);
$iterator = new RegexDirectoryIterator(vfsStream::url('root'), $regex);
diff --git a/core/tests/Drupal/Tests/Component/FrontMatter/FrontMatterTest.php b/core/tests/Drupal/Tests/Component/FrontMatter/FrontMatterTest.php
index 90977d85fb60..618ed88d6fe2 100644
--- a/core/tests/Drupal/Tests/Component/FrontMatter/FrontMatterTest.php
+++ b/core/tests/Drupal/Tests/Component/FrontMatter/FrontMatterTest.php
@@ -7,15 +7,16 @@ namespace Drupal\Tests\Component\FrontMatter;
use Drupal\Component\FrontMatter\Exception\FrontMatterParseException;
use Drupal\Component\FrontMatter\FrontMatter;
use Drupal\Component\Serialization\Yaml;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* Tests front matter parsing helper methods.
- *
- * @group FrontMatter
- *
- * @coversDefaultClass \Drupal\Component\FrontMatter\FrontMatter
*/
+#[CoversClass(FrontMatter::class)]
+#[Group('FrontMatter')]
class FrontMatterTest extends TestCase {
/**
@@ -47,8 +48,8 @@ class FrontMatterTest extends TestCase {
/**
* Tests when a passed serializer doesn't implement the proper interface.
*
- * @covers ::__construct
- * @covers ::create
+ * @legacy-covers ::__construct
+ * @legacy-covers ::create
*/
public function testFrontMatterSerializerException(): void {
$this->expectException(\AssertionError::class);
@@ -59,10 +60,10 @@ class FrontMatterTest extends TestCase {
/**
* Tests broken front matter.
*
- * @covers ::__construct
- * @covers ::create
- * @covers ::parse
- * @covers \Drupal\Component\FrontMatter\Exception\FrontMatterParseException
+ * @legacy-covers ::__construct
+ * @legacy-covers ::create
+ * @legacy-covers ::parse
+ * @legacy-covers \Drupal\Component\FrontMatter\Exception\FrontMatterParseException
*/
public function testFrontMatterBroken(): void {
$this->expectException(FrontMatterParseException::class);
@@ -81,15 +82,14 @@ class FrontMatterTest extends TestCase {
* @param string $content
* The content to use for testing purposes.
*
- * @covers ::__construct
- * @covers ::getContent
- * @covers ::getData
- * @covers ::getLine
- * @covers ::create
- * @covers ::parse
- *
- * @dataProvider providerFrontMatterData
+ * @legacy-covers ::__construct
+ * @legacy-covers ::getContent
+ * @legacy-covers ::getData
+ * @legacy-covers ::getLine
+ * @legacy-covers ::create
+ * @legacy-covers ::parse
*/
+ #[DataProvider('providerFrontMatterData')]
public function testFrontMatterData($yaml, $line, $content = self::SOURCE): void {
$source = static::createFrontMatterSource($yaml, $content);
$frontMatter = FrontMatter::create($source);
diff --git a/core/tests/Drupal/Tests/Component/Gettext/PoHeaderTest.php b/core/tests/Drupal/Tests/Component/Gettext/PoHeaderTest.php
index d5c97bdb8c7e..14797ad4b3b7 100644
--- a/core/tests/Drupal/Tests/Component/Gettext/PoHeaderTest.php
+++ b/core/tests/Drupal/Tests/Component/Gettext/PoHeaderTest.php
@@ -5,15 +5,16 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Gettext;
use Drupal\Component\Gettext\PoHeader;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* Unit tests for the Gettext PO file header handling features.
*
* @see Drupal\Component\Gettext\PoHeader.
- *
- * @group Gettext
*/
+#[Group('Gettext')]
class PoHeaderTest extends TestCase {
/**
@@ -26,9 +27,8 @@ class PoHeaderTest extends TestCase {
* The plural expression.
* @param array $expected
* Array of expected plural positions keyed by plural value.
- *
- * @dataProvider providerTestPluralsFormula
*/
+ #[DataProvider('providerTestPluralsFormula')]
public function testPluralsFormula($plural, $expected): void {
$p = new PoHeader();
[, $new_plural] = $p->parsePluralForms($plural);
diff --git a/core/tests/Drupal/Tests/Component/Gettext/PoItemTest.php b/core/tests/Drupal/Tests/Component/Gettext/PoItemTest.php
index 7026a2ceac5a..d8890bac7799 100644
--- a/core/tests/Drupal/Tests/Component/Gettext/PoItemTest.php
+++ b/core/tests/Drupal/Tests/Component/Gettext/PoItemTest.php
@@ -5,12 +5,16 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Gettext;
use Drupal\Component\Gettext\PoItem;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Gettext\PoItem
- * @group Gettext
+ * Tests Drupal\Component\Gettext\PoItem.
*/
+#[CoversClass(PoItem::class)]
+#[Group('Gettext')]
class PoItemTest extends TestCase {
/**
@@ -61,9 +65,7 @@ class PoItemTest extends TestCase {
// cSpell:enable
}
- /**
- * @dataProvider providerStrings
- */
+ #[DataProvider('providerStrings')]
public function testFormat($source, $context, $translation, $expected): void {
$item = new PoItem();
diff --git a/core/tests/Drupal/Tests/Component/Gettext/PoStreamWriterTest.php b/core/tests/Drupal/Tests/Component/Gettext/PoStreamWriterTest.php
index 667c2129770a..d38147f21ed6 100644
--- a/core/tests/Drupal/Tests/Component/Gettext/PoStreamWriterTest.php
+++ b/core/tests/Drupal/Tests/Component/Gettext/PoStreamWriterTest.php
@@ -9,13 +9,17 @@ use Drupal\Component\Gettext\PoItem;
use Drupal\Component\Gettext\PoStreamWriter;
use org\bovigo\vfs\vfsStream;
use org\bovigo\vfs\vfsStreamFile;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
use Prophecy\PhpUnit\ProphecyTrait;
/**
- * @coversDefaultClass \Drupal\Component\Gettext\PoStreamWriter
- * @group Gettext
+ * Tests Drupal\Component\Gettext\PoStreamWriter.
*/
+#[CoversClass(PoStreamWriter::class)]
+#[Group('Gettext')]
class PoStreamWriterTest extends TestCase {
use ProphecyTrait;
@@ -51,7 +55,7 @@ class PoStreamWriterTest extends TestCase {
}
/**
- * @covers ::getURI
+ * @legacy-covers ::getURI
*/
public function testGetUriException(): void {
$this->expectException(\Exception::class);
@@ -61,9 +65,9 @@ class PoStreamWriterTest extends TestCase {
}
/**
- * @covers ::writeItem
- * @dataProvider providerWriteData
+ * @legacy-covers ::writeItem
*/
+ #[DataProvider('providerWriteData')]
public function testWriteItem($poContent, $expected, $long): void {
if ($long) {
$this->expectException(\Exception::class);
@@ -105,7 +109,7 @@ class PoStreamWriterTest extends TestCase {
}
/**
- * @covers ::close
+ * @legacy-covers ::close
*/
public function testCloseException(): void {
$this->expectException(\Exception::class);
diff --git a/core/tests/Drupal/Tests/Component/Graph/GraphTest.php b/core/tests/Drupal/Tests/Component/Graph/GraphTest.php
index 61002b0199b3..cd0f46a3a1a9 100644
--- a/core/tests/Drupal/Tests/Component/Graph/GraphTest.php
+++ b/core/tests/Drupal/Tests/Component/Graph/GraphTest.php
@@ -5,12 +5,15 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Graph;
use Drupal\Component\Graph\Graph;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Graph\Graph
- * @group Graph
+ * Tests Drupal\Component\Graph\Graph.
*/
+#[CoversClass(Graph::class)]
+#[Group('Graph')]
class GraphTest extends TestCase {
/**
diff --git a/core/tests/Drupal/Tests/Component/HttpFoundation/SecuredRedirectResponseTest.php b/core/tests/Drupal/Tests/Component/HttpFoundation/SecuredRedirectResponseTest.php
index 4fa007b1121c..5c5fc82e6339 100644
--- a/core/tests/Drupal/Tests/Component/HttpFoundation/SecuredRedirectResponseTest.php
+++ b/core/tests/Drupal/Tests/Component/HttpFoundation/SecuredRedirectResponseTest.php
@@ -5,23 +5,24 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\HttpFoundation;
use Drupal\Component\HttpFoundation\SecuredRedirectResponse;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\RedirectResponse;
/**
* Test secure redirect base class.
- *
- * @group Routing
- * @coversDefaultClass \Drupal\Component\HttpFoundation\SecuredRedirectResponse
*/
+#[CoversClass(SecuredRedirectResponse::class)]
+#[Group('Routing')]
class SecuredRedirectResponseTest extends TestCase {
/**
* Tests copying of redirect response.
*
- * @covers ::createFromRedirectResponse
- * @covers ::fromResponse
+ * @legacy-covers ::createFromRedirectResponse
+ * @legacy-covers ::fromResponse
*/
public function testRedirectCopy(): void {
$redirect = new RedirectResponse('/magic_redirect_url', 301, ['x-cache-foobar' => 123]);
diff --git a/core/tests/Drupal/Tests/Component/PhpStorage/FileStorageReadOnlyTest.php b/core/tests/Drupal/Tests/Component/PhpStorage/FileStorageReadOnlyTest.php
index 4d4c56ef1ebf..e1c05c7111cd 100644
--- a/core/tests/Drupal/Tests/Component/PhpStorage/FileStorageReadOnlyTest.php
+++ b/core/tests/Drupal/Tests/Component/PhpStorage/FileStorageReadOnlyTest.php
@@ -4,17 +4,19 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\PhpStorage;
-use Drupal\Component\PhpStorage\FileStorage;
use Drupal\Component\PhpStorage\FileReadOnlyStorage;
+use Drupal\Component\PhpStorage\FileStorage;
use Drupal\Component\Utility\Random;
use Drupal\TestTools\Extension\DeprecationBridge\ExpectDeprecationTrait;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
/**
- * @coversDefaultClass \Drupal\Component\PhpStorage\FileReadOnlyStorage
- *
- * @group Drupal
- * @group PhpStorage
+ * Tests Drupal\Component\PhpStorage\FileReadOnlyStorage.
*/
+#[CoversClass(FileReadOnlyStorage::class)]
+#[Group('Drupal')]
+#[Group('PhpStorage')]
class FileStorageReadOnlyTest extends PhpStorageTestBase {
use ExpectDeprecationTrait;
@@ -83,7 +85,7 @@ class FileStorageReadOnlyTest extends PhpStorageTestBase {
}
/**
- * @covers ::deleteAll
+ * @legacy-covers ::deleteAll
*/
public function testDeleteAll(): void {
// Random generator.
diff --git a/core/tests/Drupal/Tests/Component/PhpStorage/FileStorageTest.php b/core/tests/Drupal/Tests/Component/PhpStorage/FileStorageTest.php
index bc0d8e5e908e..e24013cfcc79 100644
--- a/core/tests/Drupal/Tests/Component/PhpStorage/FileStorageTest.php
+++ b/core/tests/Drupal/Tests/Component/PhpStorage/FileStorageTest.php
@@ -8,12 +8,15 @@ use Drupal\Component\PhpStorage\FileStorage;
use Drupal\Component\Utility\Random;
use Drupal\TestTools\Extension\DeprecationBridge\ExpectDeprecationTrait;
use org\bovigo\vfs\vfsStreamDirectory;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
/**
- * @coversDefaultClass \Drupal\Component\PhpStorage\FileStorage
- * @group Drupal
- * @group PhpStorage
+ * Tests Drupal\Component\PhpStorage\FileStorage.
*/
+#[CoversClass(FileStorage::class)]
+#[Group('Drupal')]
+#[Group('PhpStorage')]
class FileStorageTest extends PhpStorageTestBase {
use ExpectDeprecationTrait;
@@ -40,10 +43,10 @@ class FileStorageTest extends PhpStorageTestBase {
/**
* Tests basic load/save/delete operations.
*
- * @covers ::load
- * @covers ::save
- * @covers ::exists
- * @covers ::delete
+ * @legacy-covers ::load
+ * @legacy-covers ::save
+ * @legacy-covers ::exists
+ * @legacy-covers ::delete
*/
public function testCRUD(): void {
$php = new FileStorage($this->standardSettings);
@@ -51,7 +54,7 @@ class FileStorageTest extends PhpStorageTestBase {
}
/**
- * @covers ::deleteAll
+ * @legacy-covers ::deleteAll
*/
public function testDeleteAll(): void {
// Random generator.
@@ -86,7 +89,7 @@ class FileStorageTest extends PhpStorageTestBase {
}
/**
- * @covers ::createDirectory
+ * @legacy-covers ::createDirectory
*/
public function testCreateDirectoryFailWarning(): void {
$directory = new vfsStreamDirectory('permissionDenied', 0200);
diff --git a/core/tests/Drupal/Tests/Component/PhpStorage/MTimeProtectedFastFileStorageTest.php b/core/tests/Drupal/Tests/Component/PhpStorage/MTimeProtectedFastFileStorageTest.php
index 6e65e0ca8dde..90896b95a173 100644
--- a/core/tests/Drupal/Tests/Component/PhpStorage/MTimeProtectedFastFileStorageTest.php
+++ b/core/tests/Drupal/Tests/Component/PhpStorage/MTimeProtectedFastFileStorageTest.php
@@ -4,14 +4,16 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\PhpStorage;
+use Drupal\Component\PhpStorage\MTimeProtectedFastFileStorage;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
+
/**
* Tests the MTimeProtectedFastFileStorage implementation.
- *
- * @coversDefaultClass \Drupal\Component\PhpStorage\MTimeProtectedFastFileStorage
- *
- * @group Drupal
- * @group PhpStorage
*/
+#[CoversClass(MTimeProtectedFastFileStorage::class)]
+#[Group('Drupal')]
+#[Group('PhpStorage')]
class MTimeProtectedFastFileStorageTest extends MTimeProtectedFileStorageBase {
/**
diff --git a/core/tests/Drupal/Tests/Component/PhpStorage/MTimeProtectedFileStorageBase.php b/core/tests/Drupal/Tests/Component/PhpStorage/MTimeProtectedFileStorageBase.php
index e2fea54aeb13..20adb60eb9e8 100644
--- a/core/tests/Drupal/Tests/Component/PhpStorage/MTimeProtectedFileStorageBase.php
+++ b/core/tests/Drupal/Tests/Component/PhpStorage/MTimeProtectedFileStorageBase.php
@@ -7,10 +7,12 @@ namespace Drupal\Tests\Component\PhpStorage;
use Drupal\Component\FileSecurity\FileSecurity;
use Drupal\Component\Utility\Crypt;
use Drupal\Component\Utility\Random;
+use PHPUnit\Framework\Attributes\Medium;
/**
* Base test class for MTime protected storage.
*/
+#[Medium]
abstract class MTimeProtectedFileStorageBase extends PhpStorageTestBase {
/**
@@ -74,8 +76,6 @@ abstract class MTimeProtectedFileStorageBase extends PhpStorageTestBase {
* mtime too.
*
* We need to delay over 1 second for mtime test.
- *
- * @medium
*/
public function testSecurity(): void {
$php = new $this->storageClass($this->settings);
diff --git a/core/tests/Drupal/Tests/Component/PhpStorage/MTimeProtectedFileStorageTest.php b/core/tests/Drupal/Tests/Component/PhpStorage/MTimeProtectedFileStorageTest.php
index 0abed0e1233d..b58c6508af6b 100644
--- a/core/tests/Drupal/Tests/Component/PhpStorage/MTimeProtectedFileStorageTest.php
+++ b/core/tests/Drupal/Tests/Component/PhpStorage/MTimeProtectedFileStorageTest.php
@@ -4,14 +4,16 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\PhpStorage;
+use Drupal\Component\PhpStorage\MTimeProtectedFileStorage;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
+
/**
* Tests the MTimeProtectedFileStorage implementation.
- *
- * @coversDefaultClass \Drupal\Component\PhpStorage\MTimeProtectedFileStorage
- *
- * @group Drupal
- * @group PhpStorage
*/
+#[CoversClass(MTimeProtectedFileStorage::class)]
+#[Group('Drupal')]
+#[Group('PhpStorage')]
class MTimeProtectedFileStorageTest extends MTimeProtectedFileStorageBase {
/**
diff --git a/core/tests/Drupal/Tests/Component/Plugin/Attribute/AttributeBaseTest.php b/core/tests/Drupal/Tests/Component/Plugin/Attribute/AttributeBaseTest.php
index 1dfa467e5998..e43a2c3ce367 100644
--- a/core/tests/Drupal/Tests/Component/Plugin/Attribute/AttributeBaseTest.php
+++ b/core/tests/Drupal/Tests/Component/Plugin/Attribute/AttributeBaseTest.php
@@ -5,17 +5,20 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Plugin\Attribute;
use Drupal\Component\Plugin\Attribute\AttributeBase;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Plugin\Attribute\AttributeBase
- * @group Attribute
+ * Tests Drupal\Component\Plugin\Attribute\AttributeBase.
*/
+#[CoversClass(AttributeBase::class)]
+#[Group('Attribute')]
class AttributeBaseTest extends TestCase {
/**
- * @covers ::getProvider
- * @covers ::setProvider
+ * @legacy-covers ::getProvider
+ * @legacy-covers ::setProvider
*/
public function testSetProvider(): void {
$plugin = new AttributeBaseStub(id: '1');
@@ -24,7 +27,7 @@ class AttributeBaseTest extends TestCase {
}
/**
- * @covers ::getId
+ * @legacy-covers ::getId
*/
public function testGetId(): void {
$plugin = new AttributeBaseStub(id: 'example');
@@ -32,8 +35,8 @@ class AttributeBaseTest extends TestCase {
}
/**
- * @covers ::getClass
- * @covers ::setClass
+ * @legacy-covers ::getClass
+ * @legacy-covers ::setClass
*/
public function testSetClass(): void {
$plugin = new AttributeBaseStub(id: '1');
diff --git a/core/tests/Drupal/Tests/Component/Plugin/Attribute/AttributeClassDiscoveryCachedTest.php b/core/tests/Drupal/Tests/Component/Plugin/Attribute/AttributeClassDiscoveryCachedTest.php
index 92cd1ff1ef81..9fcb6a8f59f5 100644
--- a/core/tests/Drupal/Tests/Component/Plugin/Attribute/AttributeClassDiscoveryCachedTest.php
+++ b/core/tests/Drupal/Tests/Component/Plugin/Attribute/AttributeClassDiscoveryCachedTest.php
@@ -5,16 +5,19 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Plugin\Attribute;
use Composer\Autoload\ClassLoader;
-use Drupal\Component\Plugin\Discovery\AttributeClassDiscovery;
use Drupal\Component\FileCache\FileCacheFactory;
+use Drupal\Component\Plugin\Discovery\AttributeClassDiscovery;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Plugin\Discovery\AttributeClassDiscovery
- * @covers \Drupal\Component\Discovery\MissingClassDetectionClassLoader
- * @group Attribute
- * @runTestsInSeparateProcesses
+ * @legacy-covers \Drupal\Component\Discovery\MissingClassDetectionClassLoader
*/
+#[CoversClass(AttributeClassDiscovery::class)]
+#[Group('Attribute')]
+#[RunTestsInSeparateProcesses]
class AttributeClassDiscoveryCachedTest extends TestCase {
/**
@@ -40,7 +43,7 @@ class AttributeClassDiscoveryCachedTest extends TestCase {
/**
* Tests that getDefinitions() retrieves the file cache correctly.
*
- * @covers ::getDefinitions
+ * @legacy-covers ::getDefinitions
*/
public function testGetDefinitions(): void {
// Path to the classes which we'll discover and parse annotation.
@@ -100,7 +103,7 @@ class AttributeClassDiscoveryCachedTest extends TestCase {
/**
* Tests discovery with missing traits.
*
- * @covers ::getDefinitions
+ * @legacy-covers ::getDefinitions
*/
public function testGetDefinitionsMissingTrait(): void {
// Path to the classes which we'll discover and parse annotation.
diff --git a/core/tests/Drupal/Tests/Component/Plugin/Attribute/AttributeClassDiscoveryTest.php b/core/tests/Drupal/Tests/Component/Plugin/Attribute/AttributeClassDiscoveryTest.php
index aa20f8146f8e..be0664d1f198 100644
--- a/core/tests/Drupal/Tests/Component/Plugin/Attribute/AttributeClassDiscoveryTest.php
+++ b/core/tests/Drupal/Tests/Component/Plugin/Attribute/AttributeClassDiscoveryTest.php
@@ -5,15 +5,19 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Plugin\Attribute;
use Composer\Autoload\ClassLoader;
-use Drupal\Component\Plugin\Discovery\AttributeClassDiscovery;
use Drupal\Component\FileCache\FileCacheFactory;
+use Drupal\Component\Plugin\Discovery\AttributeClassDiscovery;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Plugin\Discovery\AttributeClassDiscovery
- * @group Attribute
- * @runTestsInSeparateProcesses
+ * Tests Drupal\Component\Plugin\Discovery\AttributeClassDiscovery.
*/
+#[CoversClass(AttributeClassDiscovery::class)]
+#[Group('Attribute')]
+#[RunTestsInSeparateProcesses]
class AttributeClassDiscoveryTest extends TestCase {
/**
@@ -36,8 +40,8 @@ class AttributeClassDiscoveryTest extends TestCase {
}
/**
- * @covers ::__construct
- * @covers ::getPluginNamespaces
+ * @legacy-covers ::__construct
+ * @legacy-covers ::getPluginNamespaces
*/
public function testGetPluginNamespaces(): void {
// Path to the classes which we'll discover and parse annotation.
@@ -51,8 +55,8 @@ class AttributeClassDiscoveryTest extends TestCase {
}
/**
- * @covers ::getDefinitions
- * @covers ::prepareAttributeDefinition
+ * @legacy-covers ::getDefinitions
+ * @legacy-covers ::prepareAttributeDefinition
*/
public function testGetDefinitions(): void {
$discovery = new AttributeClassDiscovery(['com\example' => [__DIR__ . "/../../../../../fixtures/plugins/Plugin"]]);
diff --git a/core/tests/Drupal/Tests/Component/Plugin/Attribute/PluginIdTest.php b/core/tests/Drupal/Tests/Component/Plugin/Attribute/PluginIdTest.php
index 2791af3d3f7b..0d1fbb93e6e5 100644
--- a/core/tests/Drupal/Tests/Component/Plugin/Attribute/PluginIdTest.php
+++ b/core/tests/Drupal/Tests/Component/Plugin/Attribute/PluginIdTest.php
@@ -5,16 +5,19 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Plugin\Attribute;
use Drupal\Component\Plugin\Attribute\PluginID;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Plugin\Attribute\PluginID
- * @group Attribute
+ * Tests Drupal\Component\Plugin\Attribute\PluginID.
*/
+#[CoversClass(PluginID::class)]
+#[Group('Attribute')]
class PluginIdTest extends TestCase {
/**
- * @covers ::get
+ * @legacy-covers ::get
*/
public function testGet(): void {
// Assert plugin starts with only an ID.
diff --git a/core/tests/Drupal/Tests/Component/Plugin/Attribute/PluginTest.php b/core/tests/Drupal/Tests/Component/Plugin/Attribute/PluginTest.php
index 5cad2a940673..d241d5509fb3 100644
--- a/core/tests/Drupal/Tests/Component/Plugin/Attribute/PluginTest.php
+++ b/core/tests/Drupal/Tests/Component/Plugin/Attribute/PluginTest.php
@@ -5,17 +5,20 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Plugin\Attribute;
use Drupal\Component\Plugin\Attribute\Plugin;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Plugin\Attribute\Plugin
- * @group Attribute
+ * Tests Drupal\Component\Plugin\Attribute\Plugin.
*/
+#[CoversClass(Plugin::class)]
+#[Group('Attribute')]
class PluginTest extends TestCase {
/**
- * @covers ::__construct
- * @covers ::get
+ * @legacy-covers ::__construct
+ * @legacy-covers ::get
*/
public function testGet(): void {
$plugin = new PluginStub(id: 'example', deriver: 'test');
@@ -28,8 +31,8 @@ class PluginTest extends TestCase {
}
/**
- * @covers ::setProvider
- * @covers ::getProvider
+ * @legacy-covers ::setProvider
+ * @legacy-covers ::getProvider
*/
public function testSetProvider(): void {
$plugin = new Plugin(id: 'example');
@@ -38,7 +41,7 @@ class PluginTest extends TestCase {
}
/**
- * @covers ::getId
+ * @legacy-covers ::getId
*/
public function testGetId(): void {
$plugin = new Plugin(id: 'example');
@@ -46,8 +49,8 @@ class PluginTest extends TestCase {
}
/**
- * @covers ::setClass
- * @covers ::getClass
+ * @legacy-covers ::setClass
+ * @legacy-covers ::getClass
*/
public function testSetClass(): void {
$plugin = new Plugin(id: 'test');
diff --git a/core/tests/Drupal/Tests/Component/Plugin/Context/ContextTest.php b/core/tests/Drupal/Tests/Component/Plugin/Context/ContextTest.php
index 6004e705acf8..fe5413c505f5 100644
--- a/core/tests/Drupal/Tests/Component/Plugin/Context/ContextTest.php
+++ b/core/tests/Drupal/Tests/Component/Plugin/Context/ContextTest.php
@@ -5,12 +5,16 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Plugin\Context;
use Drupal\Component\Plugin\Context\Context;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Plugin\Context\Context
- * @group Plugin
+ * Tests Drupal\Component\Plugin\Context\Context.
*/
+#[CoversClass(Context::class)]
+#[Group('Plugin')]
class ContextTest extends TestCase {
/**
@@ -25,9 +29,9 @@ class ContextTest extends TestCase {
}
/**
- * @covers ::getContextValue
- * @dataProvider providerGetContextValue
+ * @legacy-covers ::getContextValue
*/
+ #[DataProvider('providerGetContextValue')]
public function testGetContextValue($expected, $context_value, $is_required, $data_type): void {
// Mock a Context object.
$mock_context = $this->getMockBuilder('Drupal\Component\Plugin\Context\Context')
@@ -97,9 +101,9 @@ class ContextTest extends TestCase {
}
/**
- * @covers ::hasContextValue
- * @dataProvider providerHasContextValue
+ * @legacy-covers ::hasContextValue
*/
+ #[DataProvider('providerHasContextValue')]
public function testHasContextValue($has_context_value, $default_value): void {
$mock_definition = $this->createMock('Drupal\Component\Plugin\Context\ContextDefinitionInterface');
@@ -114,7 +118,7 @@ class ContextTest extends TestCase {
}
/**
- * @covers ::getContextValue
+ * @legacy-covers ::getContextValue
*/
public function testDefaultValue(): void {
$mock_definition = $this->createMock('Drupal\Component\Plugin\Context\ContextDefinitionInterface');
diff --git a/core/tests/Drupal/Tests/Component/Plugin/DefaultFactoryTest.php b/core/tests/Drupal/Tests/Component/Plugin/DefaultFactoryTest.php
index f92d274cd858..16fa9ad86c4b 100644
--- a/core/tests/Drupal/Tests/Component/Plugin/DefaultFactoryTest.php
+++ b/core/tests/Drupal/Tests/Component/Plugin/DefaultFactoryTest.php
@@ -10,18 +10,21 @@ use Drupal\Component\Plugin\Factory\DefaultFactory;
use Drupal\Tests\Component\Plugin\Fixtures\vegetable\Broccoli;
use Drupal\Tests\Component\Plugin\Fixtures\vegetable\Corn;
use Drupal\Tests\Component\Plugin\Fixtures\vegetable\VegetableInterface;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Plugin\Factory\DefaultFactory
- * @group Plugin
+ * Tests Drupal\Component\Plugin\Factory\DefaultFactory.
*/
+#[CoversClass(DefaultFactory::class)]
+#[Group('Plugin')]
class DefaultFactoryTest extends TestCase {
/**
* Tests getPluginClass() with a valid array plugin definition.
*
- * @covers ::getPluginClass
+ * @legacy-covers ::getPluginClass
*/
public function testGetPluginClassWithValidArrayPluginDefinition(): void {
$plugin_class = Corn::class;
@@ -33,7 +36,7 @@ class DefaultFactoryTest extends TestCase {
/**
* Tests getPluginClass() with a valid object plugin definition.
*
- * @covers ::getPluginClass
+ * @legacy-covers ::getPluginClass
*/
public function testGetPluginClassWithValidObjectPluginDefinition(): void {
$plugin_class = Corn::class;
@@ -49,7 +52,7 @@ class DefaultFactoryTest extends TestCase {
/**
* Tests getPluginClass() with a missing class definition.
*
- * @covers ::getPluginClass
+ * @legacy-covers ::getPluginClass
*/
public function testGetPluginClassWithMissingClassWithArrayPluginDefinition(): void {
$this->expectException(PluginException::class);
@@ -60,7 +63,7 @@ class DefaultFactoryTest extends TestCase {
/**
* Tests getPluginClass() with a missing class definition.
*
- * @covers ::getPluginClass
+ * @legacy-covers ::getPluginClass
*/
public function testGetPluginClassWithMissingClassWithObjectPluginDefinition(): void {
$plugin_definition = $this->getMockBuilder(PluginDefinitionInterface::class)
@@ -73,7 +76,7 @@ class DefaultFactoryTest extends TestCase {
/**
* Tests getPluginClass() with a non-existent class definition.
*
- * @covers ::getPluginClass
+ * @legacy-covers ::getPluginClass
*/
public function testGetPluginClassWithNotExistingClassWithArrayPluginDefinition(): void {
$this->expectException(PluginException::class);
@@ -84,7 +87,7 @@ class DefaultFactoryTest extends TestCase {
/**
* Tests getPluginClass() with a non-existent class definition.
*
- * @covers ::getPluginClass
+ * @legacy-covers ::getPluginClass
*/
public function testGetPluginClassWithNotExistingClassWithObjectPluginDefinition(): void {
$plugin_class = 'Drupal\Tests\Component\Plugin\Fixtures\vegetable\Carrot';
@@ -99,7 +102,7 @@ class DefaultFactoryTest extends TestCase {
/**
* Tests getPluginClass() with a required interface.
*
- * @covers ::getPluginClass
+ * @legacy-covers ::getPluginClass
*/
public function testGetPluginClassWithInterfaceWithArrayPluginDefinition(): void {
$plugin_class = Corn::class;
@@ -111,7 +114,7 @@ class DefaultFactoryTest extends TestCase {
/**
* Tests getPluginClass() with a required interface.
*
- * @covers ::getPluginClass
+ * @legacy-covers ::getPluginClass
*/
public function testGetPluginClassWithInterfaceWithObjectPluginDefinition(): void {
$plugin_class = Corn::class;
@@ -127,7 +130,7 @@ class DefaultFactoryTest extends TestCase {
/**
* Tests getPluginClass() with a required interface but no implementation.
*
- * @covers ::getPluginClass
+ * @legacy-covers ::getPluginClass
*/
public function testGetPluginClassWithInterfaceAndInvalidClassWithArrayPluginDefinition(): void {
$this->expectException(PluginException::class);
@@ -138,7 +141,7 @@ class DefaultFactoryTest extends TestCase {
/**
* Tests getPluginClass() with a required interface but no implementation.
*
- * @covers ::getPluginClass
+ * @legacy-covers ::getPluginClass
*/
public function testGetPluginClassWithInterfaceAndInvalidClassWithObjectPluginDefinition(): void {
$plugin_class = Broccoli::class;
diff --git a/core/tests/Drupal/Tests/Component/Plugin/Discovery/AnnotatedClassDiscoveryTest.php b/core/tests/Drupal/Tests/Component/Plugin/Discovery/AnnotatedClassDiscoveryTest.php
index 483764b3c0ea..8b632acae002 100644
--- a/core/tests/Drupal/Tests/Component/Plugin/Discovery/AnnotatedClassDiscoveryTest.php
+++ b/core/tests/Drupal/Tests/Component/Plugin/Discovery/AnnotatedClassDiscoveryTest.php
@@ -9,14 +9,18 @@ use Drupal\Component\FileCache\FileCacheFactory;
use org\bovigo\vfs\vfsStream;
use org\bovigo\vfs\vfsStreamDirectory;
use org\bovigo\vfs\vfsStreamWrapper;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\CoversNothing;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Annotation\Plugin\Discovery\AnnotatedClassDiscovery
- *
- * @group Annotation
- * @group Plugin
+ * Tests Drupal\Component\Annotation\Plugin\Discovery\AnnotatedClassDiscovery.
*/
+#[CoversClass(AnnotatedClassDiscovery::class)]
+#[Group('Annotation')]
+#[Group('Plugin')]
class AnnotatedClassDiscoveryTest extends TestCase {
/**
@@ -53,11 +57,9 @@ class AnnotatedClassDiscoveryTest extends TestCase {
/**
* Make sure AnnotatedClassDiscovery never tries to autoload bad annotations.
- *
- * @dataProvider provideBadAnnotations
- *
- * @coversNothing
*/
+ #[CoversNothing]
+ #[DataProvider('provideBadAnnotations')]
public function testAutoloadBadAnnotations($annotation): void {
// Set up a class file in vfsStream.
vfsStreamWrapper::register();
diff --git a/core/tests/Drupal/Tests/Component/Plugin/Discovery/AttributeBridgeDecoratorTest.php b/core/tests/Drupal/Tests/Component/Plugin/Discovery/AttributeBridgeDecoratorTest.php
index cc8d2aabcee9..a85c01c7ee63 100644
--- a/core/tests/Drupal/Tests/Component/Plugin/Discovery/AttributeBridgeDecoratorTest.php
+++ b/core/tests/Drupal/Tests/Component/Plugin/Discovery/AttributeBridgeDecoratorTest.php
@@ -4,20 +4,24 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Plugin\Discovery;
+use Drupal\Component\Annotation\Plugin\Discovery\AnnotationBridgeDecorator;
use Drupal\Component\Plugin\Attribute\Plugin;
use Drupal\Component\Plugin\Definition\PluginDefinition;
use Drupal\Component\Plugin\Discovery\AttributeBridgeDecorator;
use Drupal\Component\Plugin\Discovery\DiscoveryInterface;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Annotation\Plugin\Discovery\AnnotationBridgeDecorator
- * @group Plugin
+ * Tests Drupal\Component\Annotation\Plugin\Discovery\AnnotationBridgeDecorator.
*/
+#[CoversClass(AnnotationBridgeDecorator::class)]
+#[Group('Plugin')]
class AttributeBridgeDecoratorTest extends TestCase {
/**
- * @covers ::getDefinitions
+ * @legacy-covers ::getDefinitions
*/
public function testGetDefinitions(): void {
// Normally the attribute classes would be autoloaded.
@@ -47,7 +51,7 @@ class AttributeBridgeDecoratorTest extends TestCase {
/**
* Tests that the decorator of other methods works.
*
- * @covers ::__call
+ * @legacy-covers ::__call
*/
public function testOtherMethod(): void {
// Normally the attribute classes would be autoloaded.
diff --git a/core/tests/Drupal/Tests/Component/Plugin/Discovery/DiscoveryCachedTraitTest.php b/core/tests/Drupal/Tests/Component/Plugin/Discovery/DiscoveryCachedTraitTest.php
index 9db89444c171..3368c9a14ab6 100644
--- a/core/tests/Drupal/Tests/Component/Plugin/Discovery/DiscoveryCachedTraitTest.php
+++ b/core/tests/Drupal/Tests/Component/Plugin/Discovery/DiscoveryCachedTraitTest.php
@@ -5,13 +5,19 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Plugin\Discovery;
use Drupal\Component\Plugin\Discovery\DiscoveryCachedTrait;
+use Drupal\Component\Plugin\Discovery\DiscoveryTrait;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\UsesClass;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Plugin\Discovery\DiscoveryCachedTrait
- * @uses \Drupal\Component\Plugin\Discovery\DiscoveryTrait
- * @group Plugin
+ * Tests Drupal\Component\Plugin\Discovery\DiscoveryCachedTrait.
*/
+#[CoversClass(DiscoveryCachedTrait::class)]
+#[Group('Plugin')]
+#[UsesClass(DiscoveryTrait::class)]
class DiscoveryCachedTraitTest extends TestCase {
/**
@@ -32,9 +38,9 @@ class DiscoveryCachedTraitTest extends TestCase {
}
/**
- * @covers ::getDefinition
- * @dataProvider providerGetDefinition
+ * @legacy-covers ::getDefinition
*/
+ #[DataProvider('providerGetDefinition')]
public function testGetDefinition($expected, $cached_definitions, $get_definitions, $plugin_id): void {
$trait = $this->getMockBuilder(DiscoveryCachedTraitMockableClass::class)
->onlyMethods(['getDefinitions'])
diff --git a/core/tests/Drupal/Tests/Component/Plugin/Discovery/DiscoveryTraitTest.php b/core/tests/Drupal/Tests/Component/Plugin/Discovery/DiscoveryTraitTest.php
index d26a538aad62..f85eeeb193cc 100644
--- a/core/tests/Drupal/Tests/Component/Plugin/Discovery/DiscoveryTraitTest.php
+++ b/core/tests/Drupal/Tests/Component/Plugin/Discovery/DiscoveryTraitTest.php
@@ -6,12 +6,19 @@ namespace Drupal\Tests\Component\Plugin\Discovery;
use Drupal\Component\Plugin\Discovery\DiscoveryTrait;
use Drupal\Component\Plugin\Exception\PluginNotFoundException;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\UsesClass;
use PHPUnit\Framework\TestCase;
/**
- * @group Plugin
- * @coversDefaultClass \Drupal\Component\Plugin\Discovery\DiscoveryTrait
+ * Tests Drupal\Component\Plugin\Discovery\DiscoveryTrait.
*/
+#[CoversClass(DiscoveryTrait::class)]
+#[Group('Plugin')]
+#[UsesClass(PluginNotFoundException::class)]
+#[UsesClass(PluginNotFoundException::class)]
class DiscoveryTraitTest extends TestCase {
/**
@@ -30,9 +37,9 @@ class DiscoveryTraitTest extends TestCase {
}
/**
- * @covers ::doGetDefinition
- * @dataProvider providerDoGetDefinition
+ * @legacy-covers ::doGetDefinition
*/
+ #[DataProvider('providerDoGetDefinition')]
public function testDoGetDefinition($expected, $definitions, $plugin_id): void {
$trait = new DiscoveryTraitMockableClass();
// Un-protect the method using reflection.
@@ -59,10 +66,9 @@ class DiscoveryTraitTest extends TestCase {
}
/**
- * @covers ::doGetDefinition
- * @dataProvider providerDoGetDefinitionException
- * @uses \Drupal\Component\Plugin\Exception\PluginNotFoundException
+ * @legacy-covers ::doGetDefinition
*/
+ #[DataProvider('providerDoGetDefinitionException')]
public function testDoGetDefinitionException($expected, $definitions, $plugin_id): void {
$trait = new DiscoveryTraitMockableClass();
// Un-protect the method using reflection.
@@ -73,9 +79,9 @@ class DiscoveryTraitTest extends TestCase {
}
/**
- * @covers ::getDefinition
- * @dataProvider providerDoGetDefinition
+ * @legacy-covers ::getDefinition
*/
+ #[DataProvider('providerDoGetDefinition')]
public function testGetDefinition($expected, $definitions, $plugin_id): void {
// Since getDefinition is a wrapper around doGetDefinition(), we can re-use
// its data provider. We just have to tell abstract method getDefinitions()
@@ -94,10 +100,9 @@ class DiscoveryTraitTest extends TestCase {
}
/**
- * @covers ::getDefinition
- * @dataProvider providerDoGetDefinitionException
- * @uses \Drupal\Component\Plugin\Exception\PluginNotFoundException
+ * @legacy-covers ::getDefinition
*/
+ #[DataProvider('providerDoGetDefinitionException')]
public function testGetDefinitionException($expected, $definitions, $plugin_id): void {
// Since getDefinition is a wrapper around doGetDefinition(), we can re-use
// its data provider. We just have to tell abstract method getDefinitions()
@@ -128,9 +133,9 @@ class DiscoveryTraitTest extends TestCase {
}
/**
- * @covers ::hasDefinition
- * @dataProvider providerHasDefinition
+ * @legacy-covers ::hasDefinition
*/
+ #[DataProvider('providerHasDefinition')]
public function testHasDefinition($expected, $plugin_id): void {
$trait = $this->getMockBuilder(DiscoveryTraitMockableClass::class)
->onlyMethods(['getDefinition'])
diff --git a/core/tests/Drupal/Tests/Component/Plugin/Discovery/StaticDiscoveryDecoratorTest.php b/core/tests/Drupal/Tests/Component/Plugin/Discovery/StaticDiscoveryDecoratorTest.php
index b2f430416a77..2de43953ea0a 100644
--- a/core/tests/Drupal/Tests/Component/Plugin/Discovery/StaticDiscoveryDecoratorTest.php
+++ b/core/tests/Drupal/Tests/Component/Plugin/Discovery/StaticDiscoveryDecoratorTest.php
@@ -7,12 +7,16 @@ namespace Drupal\Tests\Component\Plugin\Discovery;
use Drupal\Component\Plugin\Discovery\DiscoveryInterface;
use Drupal\Component\Plugin\Discovery\StaticDiscovery;
use Drupal\Component\Plugin\Discovery\StaticDiscoveryDecorator;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @group Plugin
- * @coversDefaultClass \Drupal\Component\Plugin\Discovery\StaticDiscoveryDecorator
+ * Tests Drupal\Component\Plugin\Discovery\StaticDiscoveryDecorator.
*/
+#[CoversClass(StaticDiscoveryDecorator::class)]
+#[Group('Plugin')]
class StaticDiscoveryDecoratorTest extends TestCase {
/**
@@ -58,9 +62,9 @@ class StaticDiscoveryDecoratorTest extends TestCase {
}
/**
- * @covers ::getDefinition
- * @dataProvider providerGetDefinition
+ * @legacy-covers ::getDefinition
*/
+ #[DataProvider('providerGetDefinition')]
public function testGetDefinition($expected, $has_register_definitions, $exception_on_invalid, $definitions, $base_plugin_id): void {
// Mock our StaticDiscoveryDecorator.
$mock_decorator = $this->getMockBuilder(StaticDiscoveryDecorator::class)
@@ -123,9 +127,9 @@ class StaticDiscoveryDecoratorTest extends TestCase {
}
/**
- * @covers ::getDefinitions
- * @dataProvider providerGetDefinitions
+ * @legacy-covers ::getDefinitions
*/
+ #[DataProvider('providerGetDefinitions')]
public function testGetDefinitions($has_register_definitions, $definitions): void {
// Mock our StaticDiscoveryDecorator.
$mock_decorator = $this->getMockBuilder(StaticDiscoveryDecorator::class)
@@ -186,9 +190,9 @@ class StaticDiscoveryDecoratorTest extends TestCase {
}
/**
- * @covers ::__call
- * @dataProvider providerCall
+ * @legacy-covers ::__call
*/
+ #[DataProvider('providerCall')]
public function testCall($method, $args): void {
// Mock a decorated object.
$mock_decorated = $this->getMockBuilder(StaticDiscoveryTestDecoratedClass::class)
diff --git a/core/tests/Drupal/Tests/Component/Plugin/Factory/ReflectionFactoryTest.php b/core/tests/Drupal/Tests/Component/Plugin/Factory/ReflectionFactoryTest.php
index 860c96c6e22a..282b2f4edf37 100644
--- a/core/tests/Drupal/Tests/Component/Plugin/Factory/ReflectionFactoryTest.php
+++ b/core/tests/Drupal/Tests/Component/Plugin/Factory/ReflectionFactoryTest.php
@@ -5,12 +5,16 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Plugin\Factory;
use Drupal\Component\Plugin\Factory\ReflectionFactory;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @group Plugin
- * @coversDefaultClass \Drupal\Component\Plugin\Factory\ReflectionFactory
+ * Tests Drupal\Component\Plugin\Factory\ReflectionFactory.
*/
+#[CoversClass(ReflectionFactory::class)]
+#[Group('Plugin')]
class ReflectionFactoryTest extends TestCase {
/**
@@ -77,9 +81,9 @@ class ReflectionFactoryTest extends TestCase {
}
/**
- * @covers ::createInstance
- * @dataProvider providerGetInstanceArguments
+ * @legacy-covers ::createInstance
*/
+ #[DataProvider('providerGetInstanceArguments')]
public function testCreateInstance($expected, $reflector_name, $plugin_id, $plugin_definition, $configuration): void {
// Create a mock DiscoveryInterface which can return our plugin definition.
$mock_discovery = $this->getMockBuilder('Drupal\Component\Plugin\Discovery\DiscoveryInterface')
@@ -102,9 +106,9 @@ class ReflectionFactoryTest extends TestCase {
}
/**
- * @covers ::getInstanceArguments
- * @dataProvider providerGetInstanceArguments
+ * @legacy-covers ::getInstanceArguments
*/
+ #[DataProvider('providerGetInstanceArguments')]
public function testGetInstanceArguments($expected, $reflector_name, $plugin_id, $plugin_definition, $configuration): void {
$reflection_factory = $this->getMockBuilder('Drupal\Component\Plugin\Factory\ReflectionFactory')
->disableOriginalConstructor()
diff --git a/core/tests/Drupal/Tests/Component/Plugin/PluginManagerBaseTest.php b/core/tests/Drupal/Tests/Component/Plugin/PluginManagerBaseTest.php
index 9842f252a839..d4bd2ff757de 100644
--- a/core/tests/Drupal/Tests/Component/Plugin/PluginManagerBaseTest.php
+++ b/core/tests/Drupal/Tests/Component/Plugin/PluginManagerBaseTest.php
@@ -6,13 +6,17 @@ namespace Drupal\Tests\Component\Plugin;
use Drupal\Component\Plugin\Exception\PluginNotFoundException;
use Drupal\Component\Plugin\Mapper\MapperInterface;
+use Drupal\Component\Plugin\PluginManagerBase;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
use Prophecy\PhpUnit\ProphecyTrait;
/**
- * @coversDefaultClass \Drupal\Component\Plugin\PluginManagerBase
- * @group Plugin
+ * Tests Drupal\Component\Plugin\PluginManagerBase.
*/
+#[CoversClass(PluginManagerBase::class)]
+#[Group('Plugin')]
class PluginManagerBaseTest extends TestCase {
use ProphecyTrait;
@@ -47,7 +51,7 @@ class PluginManagerBaseTest extends TestCase {
/**
* Tests createInstance() with no fallback methods.
*
- * @covers ::createInstance
+ * @legacy-covers ::createInstance
*/
public function testCreateInstance(): void {
$manager = new StubPluginManagerBase();
@@ -66,7 +70,7 @@ class PluginManagerBaseTest extends TestCase {
/**
* Tests createInstance() with a fallback method.
*
- * @covers ::createInstance
+ * @legacy-covers ::createInstance
*/
public function testCreateInstanceFallback(): void {
// We use our special stub class which extends PluginManagerBase and also
@@ -92,7 +96,7 @@ class PluginManagerBaseTest extends TestCase {
}
/**
- * @covers ::getInstance
+ * @legacy-covers ::getInstance
*/
public function testGetInstance(): void {
$options = [
@@ -109,7 +113,7 @@ class PluginManagerBaseTest extends TestCase {
}
/**
- * @covers ::getInstance
+ * @legacy-covers ::getInstance
*/
public function testGetInstanceWithoutMapperShouldThrowException(): void {
$options = [
diff --git a/core/tests/Drupal/Tests/Component/ProxyBuilder/ProxyBuilderTest.php b/core/tests/Drupal/Tests/Component/ProxyBuilder/ProxyBuilderTest.php
index 5545b2e01409..26ab691bf1af 100644
--- a/core/tests/Drupal/Tests/Component/ProxyBuilder/ProxyBuilderTest.php
+++ b/core/tests/Drupal/Tests/Component/ProxyBuilder/ProxyBuilderTest.php
@@ -5,12 +5,15 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\ProxyBuilder;
use Drupal\Component\ProxyBuilder\ProxyBuilder;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\ProxyBuilder\ProxyBuilder
- * @group proxy_builder
+ * Tests Drupal\Component\ProxyBuilder\ProxyBuilder.
*/
+#[CoversClass(ProxyBuilder::class)]
+#[Group('proxy_builder')]
class ProxyBuilderTest extends TestCase {
/**
@@ -30,7 +33,7 @@ class ProxyBuilderTest extends TestCase {
}
/**
- * @covers ::buildProxyClassName
+ * @legacy-covers ::buildProxyClassName
*/
public function testBuildProxyClassName(): void {
$class_name = $this->proxyBuilder->buildProxyClassName('Drupal\Tests\Component\ProxyBuilder\TestServiceNoMethod');
@@ -38,7 +41,7 @@ class ProxyBuilderTest extends TestCase {
}
/**
- * @covers ::buildProxyClassName
+ * @legacy-covers ::buildProxyClassName
*/
public function testBuildProxyClassNameForModule(): void {
$class_name = $this->proxyBuilder->buildProxyClassName('Drupal\views_ui\ParamConverter\ViewUIConverter');
@@ -46,7 +49,7 @@ class ProxyBuilderTest extends TestCase {
}
/**
- * @covers ::buildProxyNamespace
+ * @legacy-covers ::buildProxyNamespace
*/
public function testBuildProxyNamespace(): void {
$class_name = $this->proxyBuilder->buildProxyNamespace('Drupal\Tests\Component\ProxyBuilder\TestServiceNoMethod');
@@ -56,9 +59,9 @@ class ProxyBuilderTest extends TestCase {
/**
* Tests the basic methods like the constructor and the lazyLoadItself method.
*
- * @covers ::build
- * @covers ::buildConstructorMethod
- * @covers ::buildLazyLoadItselfMethod
+ * @legacy-covers ::build
+ * @legacy-covers ::buildConstructorMethod
+ * @legacy-covers ::buildLazyLoadItselfMethod
*/
public function testBuildNoMethod(): void {
$class = 'Drupal\Tests\Component\ProxyBuilder\TestServiceNoMethod';
@@ -68,8 +71,8 @@ class ProxyBuilderTest extends TestCase {
}
/**
- * @covers ::buildMethod
- * @covers ::buildMethodBody
+ * @legacy-covers ::buildMethod
+ * @legacy-covers ::buildMethodBody
*/
public function testBuildSimpleMethod(): void {
$class = 'Drupal\Tests\Component\ProxyBuilder\TestServiceSimpleMethod';
@@ -91,9 +94,9 @@ EOS;
}
/**
- * @covers ::buildMethod
- * @covers ::buildParameter
- * @covers ::buildMethodBody
+ * @legacy-covers ::buildMethod
+ * @legacy-covers ::buildParameter
+ * @legacy-covers ::buildMethodBody
*/
public function testBuildMethodWithParameter(): void {
$class = 'Drupal\Tests\Component\ProxyBuilder\TestServiceMethodWithParameter';
@@ -115,9 +118,9 @@ EOS;
}
/**
- * @covers ::buildMethod
- * @covers ::buildParameter
- * @covers ::buildMethodBody
+ * @legacy-covers ::buildMethod
+ * @legacy-covers ::buildParameter
+ * @legacy-covers ::buildMethodBody
*/
public function testBuildComplexMethod(): void {
$class = 'Drupal\Tests\Component\ProxyBuilder\TestServiceComplexMethod';
@@ -142,7 +145,7 @@ EOS;
}
/**
- * @covers ::buildMethodBody
+ * @legacy-covers ::buildMethodBody
*/
public function testBuildServiceMethodReturnsVoid(): void {
$class = TestServiceMethodReturnsVoid::class;
@@ -166,8 +169,8 @@ EOS;
}
/**
- * @covers ::buildMethod
- * @covers ::buildMethodBody
+ * @legacy-covers ::buildMethod
+ * @legacy-covers ::buildMethodBody
*/
public function testBuildReturnReference(): void {
$class = 'Drupal\Tests\Component\ProxyBuilder\TestServiceReturnReference';
@@ -191,9 +194,9 @@ EOS;
}
/**
- * @covers ::buildMethod
- * @covers ::buildParameter
- * @covers ::buildMethodBody
+ * @legacy-covers ::buildMethod
+ * @legacy-covers ::buildParameter
+ * @legacy-covers ::buildMethodBody
*/
public function testBuildWithInterface(): void {
$class = 'Drupal\Tests\Component\ProxyBuilder\TestServiceWithInterface';
@@ -217,7 +220,7 @@ EOS;
}
/**
- * @covers ::build
+ * @legacy-covers ::build
*/
public function testBuildWithNestedInterface(): void {
$class = 'Drupal\Tests\Component\ProxyBuilder\TestServiceWithChildInterfaces';
@@ -230,9 +233,9 @@ EOS;
}
/**
- * @covers ::buildMethod
- * @covers ::buildParameter
- * @covers ::buildMethodBody
+ * @legacy-covers ::buildMethod
+ * @legacy-covers ::buildParameter
+ * @legacy-covers ::buildMethodBody
*/
public function testBuildWithProtectedAndPrivateMethod(): void {
$class = 'Drupal\Tests\Component\ProxyBuilder\TestServiceWithProtectedMethods';
@@ -255,9 +258,9 @@ EOS;
}
/**
- * @covers ::buildMethod
- * @covers ::buildParameter
- * @covers ::buildMethodBody
+ * @legacy-covers ::buildMethod
+ * @legacy-covers ::buildParameter
+ * @legacy-covers ::buildMethodBody
*/
public function testBuildWithPublicStaticMethod(): void {
$class = 'Drupal\Tests\Component\ProxyBuilder\TestServiceWithPublicStaticMethod';
@@ -281,9 +284,9 @@ EOS;
}
/**
- * @covers ::buildMethod
- * @covers ::buildParameter
- * @covers ::buildMethodBody
+ * @legacy-covers ::buildMethod
+ * @legacy-covers ::buildParameter
+ * @legacy-covers ::buildMethodBody
*/
public function testBuildWithNullableSelfTypeHint(): void {
$class = 'Drupal\Tests\Component\ProxyBuilder\TestServiceNullableTypeHintSelf';
diff --git a/core/tests/Drupal/Tests/Component/Render/FormattableMarkupTest.php b/core/tests/Drupal/Tests/Component/Render/FormattableMarkupTest.php
index 5e82b2daaef1..4547de6b9d39 100644
--- a/core/tests/Drupal/Tests/Component/Render/FormattableMarkupTest.php
+++ b/core/tests/Drupal/Tests/Component/Render/FormattableMarkupTest.php
@@ -6,14 +6,16 @@ namespace Drupal\Tests\Component\Render;
use Drupal\Component\Render\FormattableMarkup;
use Drupal\TestTools\Extension\DeprecationBridge\ExpectDeprecationTrait;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* Tests the TranslatableMarkup class.
- *
- * @coversDefaultClass \Drupal\Component\Render\FormattableMarkup
- * @group utility
*/
+#[CoversClass(FormattableMarkup::class)]
+#[Group('utility')]
class FormattableMarkupTest extends TestCase {
use ExpectDeprecationTrait;
@@ -33,8 +35,8 @@ class FormattableMarkupTest extends TestCase {
protected $lastErrorNumber;
/**
- * @covers ::__toString
- * @covers ::jsonSerialize
+ * @legacy-covers ::__toString
+ * @legacy-covers ::jsonSerialize
*/
public function testToString(): void {
$string = 'Can I have a @replacement';
@@ -46,7 +48,7 @@ class FormattableMarkupTest extends TestCase {
}
/**
- * @covers ::count
+ * @legacy-covers ::count
*/
public function testCount(): void {
$string = 'Can I have a @replacement';
@@ -72,9 +74,9 @@ class FormattableMarkupTest extends TestCase {
}
/**
- * @covers ::__toString
- * @dataProvider providerTestUnexpectedPlaceholder
+ * @legacy-covers ::__toString
*/
+ #[DataProvider('providerTestUnexpectedPlaceholder')]
public function testUnexpectedPlaceholder($string, $arguments, $error_number, $error_message): void {
// We set a custom error handler because of
// https://github.com/sebastianbergmann/phpunit/issues/487
diff --git a/core/tests/Drupal/Tests/Component/Render/HtmlEscapedTextTest.php b/core/tests/Drupal/Tests/Component/Render/HtmlEscapedTextTest.php
index 2b10bbfbd79f..ff5e407d81b0 100644
--- a/core/tests/Drupal/Tests/Component/Render/HtmlEscapedTextTest.php
+++ b/core/tests/Drupal/Tests/Component/Render/HtmlEscapedTextTest.php
@@ -6,23 +6,24 @@ namespace Drupal\Tests\Component\Render;
use Drupal\Component\Render\HtmlEscapedText;
use Drupal\Component\Render\MarkupInterface;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
use Prophecy\Prophet;
/**
* Tests the HtmlEscapedText class.
- *
- * @coversDefaultClass \Drupal\Component\Render\HtmlEscapedText
- * @group utility
*/
+#[CoversClass(HtmlEscapedText::class)]
+#[Group('utility')]
class HtmlEscapedTextTest extends TestCase {
/**
- * @covers ::__toString
- * @covers ::jsonSerialize
- *
- * @dataProvider providerToString
+ * @legacy-covers ::__toString
+ * @legacy-covers ::jsonSerialize
*/
+ #[DataProvider('providerToString')]
public function testToString($text, $expected, $message): void {
$escapable_string = new HtmlEscapedText($text);
$this->assertEquals($expected, (string) $escapable_string, $message);
@@ -58,7 +59,7 @@ class HtmlEscapedTextTest extends TestCase {
}
/**
- * @covers ::count
+ * @legacy-covers ::count
*/
public function testCount(): void {
$string = 'Can I have a <em>kitten</em>';
diff --git a/core/tests/Drupal/Tests/Component/Render/PlainTextOutputTest.php b/core/tests/Drupal/Tests/Component/Render/PlainTextOutputTest.php
index 21e8830fa89c..57d09fddc83d 100644
--- a/core/tests/Drupal/Tests/Component/Render/PlainTextOutputTest.php
+++ b/core/tests/Drupal/Tests/Component/Render/PlainTextOutputTest.php
@@ -4,16 +4,20 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Render;
-use Drupal\Component\Render\PlainTextOutput;
use Drupal\Component\Render\FormattableMarkup;
use Drupal\Component\Render\MarkupInterface;
+use Drupal\Component\Render\PlainTextOutput;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
use Prophecy\Prophet;
/**
- * @coversDefaultClass \Drupal\Component\Render\PlainTextOutput
- * @group Utility
+ * Tests Drupal\Component\Render\PlainTextOutput.
*/
+#[CoversClass(PlainTextOutput::class)]
+#[Group('Utility')]
class PlainTextOutputTest extends TestCase {
/**
@@ -27,9 +31,9 @@ class PlainTextOutputTest extends TestCase {
* (optional) An associative array of replacements to make. Defaults to
* none.
*
- * @covers ::renderFromHtml
- * @dataProvider providerRenderFromHtml
+ * @legacy-covers ::renderFromHtml
*/
+ #[DataProvider('providerRenderFromHtml')]
public function testRenderFromHtml($expected, $string, $args = []): void {
$markup = new FormattableMarkup($string, $args);
$output = PlainTextOutput::renderFromHtml($markup);
diff --git a/core/tests/Drupal/Tests/Component/Serialization/JsonTest.php b/core/tests/Drupal/Tests/Component/Serialization/JsonTest.php
index 9f24283f962f..3e9169c5969b 100644
--- a/core/tests/Drupal/Tests/Component/Serialization/JsonTest.php
+++ b/core/tests/Drupal/Tests/Component/Serialization/JsonTest.php
@@ -5,12 +5,15 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Serialization;
use Drupal\Component\Serialization\Json;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Serialization\Json
- * @group Serialization
+ * Tests Drupal\Component\Serialization\Json.
*/
+#[CoversClass(Json::class)]
+#[Group('Serialization')]
class JsonTest extends TestCase {
/**
diff --git a/core/tests/Drupal/Tests/Component/Serialization/YamlPeclTest.php b/core/tests/Drupal/Tests/Component/Serialization/YamlPeclTest.php
index 8f124a85ba95..35f45159a77f 100644
--- a/core/tests/Drupal/Tests/Component/Serialization/YamlPeclTest.php
+++ b/core/tests/Drupal/Tests/Component/Serialization/YamlPeclTest.php
@@ -6,24 +6,27 @@ namespace Drupal\Tests\Component\Serialization;
use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
use Drupal\Component\Serialization\YamlPecl;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RequiresPhpExtension;
/**
* Tests the YamlPecl serialization implementation.
- *
- * @group Drupal
- * @group Serialization
- * @coversDefaultClass \Drupal\Component\Serialization\YamlPecl
- * @requires extension yaml
*/
+#[CoversClass(YamlPecl::class)]
+#[Group('Drupal')]
+#[Group('Serialization')]
+#[RequiresPhpExtension('yaml')]
class YamlPeclTest extends YamlTestBase {
/**
* Tests encoding and decoding basic data structures.
*
- * @covers ::encode
- * @covers ::decode
- * @dataProvider providerEncodeDecodeTests
+ * @legacy-covers ::encode
+ * @legacy-covers ::decode
*/
+ #[DataProvider('providerEncodeDecodeTests')]
public function testEncodeDecode(array $data): void {
$this->assertEquals($data, YamlPecl::decode(YamlPecl::encode($data)));
}
@@ -41,9 +44,9 @@ class YamlPeclTest extends YamlTestBase {
/**
* Tests decoding YAML node anchors.
*
- * @covers ::decode
- * @dataProvider providerDecodeTests
+ * @legacy-covers ::decode
*/
+ #[DataProvider('providerDecodeTests')]
public function testDecode($string, $data): void {
$this->assertEquals($data, YamlPecl::decode($string));
}
@@ -51,7 +54,7 @@ class YamlPeclTest extends YamlTestBase {
/**
* Tests our encode settings.
*
- * @covers ::encode
+ * @legacy-covers ::encode
*/
public function testEncode(): void {
// cSpell:disable
@@ -71,15 +74,15 @@ foo:
* @param string|bool $expected
* The expected return value.
*
- * @covers ::applyBooleanCallbacks
- * @dataProvider providerBoolTest
+ * @legacy-covers ::applyBooleanCallbacks
*/
+ #[DataProvider('providerBoolTest')]
public function testApplyBooleanCallbacks($string, $expected): void {
$this->assertEquals($expected, YamlPecl::applyBooleanCallbacks($string, 'bool', NULL));
}
/**
- * @covers ::getFileExtension
+ * @legacy-covers ::getFileExtension
*/
public function testGetFileExtension(): void {
$this->assertEquals('yml', YamlPecl::getFileExtension());
@@ -88,7 +91,7 @@ foo:
/**
* Tests that invalid YAML throws an exception.
*
- * @covers ::errorHandler
+ * @legacy-covers ::errorHandler
*/
public function testError(): void {
$this->expectException(InvalidDataTypeException::class);
diff --git a/core/tests/Drupal/Tests/Component/Serialization/YamlTest.php b/core/tests/Drupal/Tests/Component/Serialization/YamlTest.php
index 7980f5845357..ef7e51a5101f 100644
--- a/core/tests/Drupal/Tests/Component/Serialization/YamlTest.php
+++ b/core/tests/Drupal/Tests/Component/Serialization/YamlTest.php
@@ -6,23 +6,25 @@ namespace Drupal\Tests\Component\Serialization;
use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
use Drupal\Component\Serialization\Yaml;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
/**
* Tests the Yaml serialization implementation.
- *
- * @group Drupal
- * @group Serialization
- * @coversDefaultClass \Drupal\Component\Serialization\Yaml
*/
+#[CoversClass(Yaml::class)]
+#[Group('Drupal')]
+#[Group('Serialization')]
class YamlTest extends YamlTestBase {
/**
* Tests encoding and decoding basic data structures.
*
- * @covers ::encode
- * @covers ::decode
- * @dataProvider providerEncodeDecodeTests
+ * @legacy-covers ::encode
+ * @legacy-covers ::decode
*/
+ #[DataProvider('providerEncodeDecodeTests')]
public function testEncodeDecode(array $data): void {
$this->assertSame($data, Yaml::decode(Yaml::encode($data)));
}
@@ -30,9 +32,9 @@ class YamlTest extends YamlTestBase {
/**
* Tests decoding YAML node anchors.
*
- * @covers ::decode
- * @dataProvider providerDecodeTests
+ * @legacy-covers ::decode
*/
+ #[DataProvider('providerDecodeTests')]
public function testDecode($string, $data): void {
$this->assertSame($data, Yaml::decode($string));
}
@@ -40,7 +42,7 @@ class YamlTest extends YamlTestBase {
/**
* Tests our encode settings.
*
- * @covers ::encode
+ * @legacy-covers ::encode
*/
public function testEncode(): void {
// cSpell:disable
@@ -51,7 +53,7 @@ class YamlTest extends YamlTestBase {
}
/**
- * @covers ::getFileExtension
+ * @legacy-covers ::getFileExtension
*/
public function testGetFileExtension(): void {
$this->assertSame('yml', Yaml::getFileExtension());
@@ -60,7 +62,7 @@ class YamlTest extends YamlTestBase {
/**
* Tests that invalid YAML throws an exception.
*
- * @covers ::decode
+ * @legacy-covers ::decode
*/
public function testError(): void {
$this->expectException(InvalidDataTypeException::class);
@@ -70,7 +72,7 @@ class YamlTest extends YamlTestBase {
/**
* Ensures that php object support is disabled.
*
- * @covers ::encode
+ * @legacy-covers ::encode
*/
public function testEncodeObjectSupportDisabled(): void {
$this->expectException(InvalidDataTypeException::class);
@@ -83,7 +85,7 @@ class YamlTest extends YamlTestBase {
/**
* Ensures that decoding PHP objects does not work in Symfony.
*
- * @covers ::decode
+ * @legacy-covers ::decode
*/
public function testDecodeObjectSupportDisabled(): void {
$this->expectException(InvalidDataTypeException::class);
diff --git a/core/tests/Drupal/Tests/Component/Transliteration/PhpTransliterationTest.php b/core/tests/Drupal/Tests/Component/Transliteration/PhpTransliterationTest.php
index 3badd32fab84..aa26390ae785 100644
--- a/core/tests/Drupal/Tests/Component/Transliteration/PhpTransliterationTest.php
+++ b/core/tests/Drupal/Tests/Component/Transliteration/PhpTransliterationTest.php
@@ -7,15 +7,16 @@ namespace Drupal\Tests\Component\Transliteration;
use Drupal\Component\Transliteration\PhpTransliteration;
use Drupal\Component\Utility\Random;
use org\bovigo\vfs\vfsStream;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* Tests Transliteration component functionality.
- *
- * @group Transliteration
- *
- * @coversDefaultClass \Drupal\Component\Transliteration\PhpTransliteration
*/
+#[CoversClass(PhpTransliteration::class)]
+#[Group('Transliteration')]
class PhpTransliterationTest extends TestCase {
/**
@@ -25,9 +26,8 @@ class PhpTransliterationTest extends TestCase {
* The language code to test.
* @param string $expected
* The expected return from PhpTransliteration::removeDiacritics().
- *
- * @dataProvider providerTestPhpTransliterationRemoveDiacritics
*/
+ #[DataProvider('providerTestPhpTransliterationRemoveDiacritics')]
public function testRemoveDiacritics($original, $expected): void {
$transliterator_class = new PhpTransliteration();
$result = $transliterator_class->removeDiacritics($original);
@@ -88,9 +88,8 @@ class PhpTransliterationTest extends TestCase {
* (optional) If provided, return at most this many characters, ensuring
* that the transliteration does not split in the middle of an input
* character's transliteration.
- *
- * @dataProvider providerTestPhpTransliteration
*/
+ #[DataProvider('providerTestPhpTransliteration')]
public function testPhpTransliteration(string $langcode, string $original, string $expected, string $unknown_character = '?', ?int $max_length = NULL): void {
$transliterator_class = new PhpTransliteration();
$actual = $transliterator_class->transliterate($original, $langcode, $unknown_character, $max_length);
@@ -223,7 +222,7 @@ class PhpTransliterationTest extends TestCase {
/**
* Tests inclusion is safe.
*
- * @covers ::readLanguageOverrides
+ * @legacy-covers ::readLanguageOverrides
*/
public function testSafeInclude(): void {
// The overrides in the transliteration data directory transliterates 0x82
diff --git a/core/tests/Drupal/Tests/Component/Utility/ArgumentsResolverTest.php b/core/tests/Drupal/Tests/Component/Utility/ArgumentsResolverTest.php
index d6fadcc9fbeb..438c7e70ae72 100644
--- a/core/tests/Drupal/Tests/Component/Utility/ArgumentsResolverTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/ArgumentsResolverTest.php
@@ -5,19 +5,22 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\ArgumentsResolver;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Utility\ArgumentsResolver
- * @group Access
+ * Tests Drupal\Component\Utility\ArgumentsResolver.
*/
+#[CoversClass(ArgumentsResolver::class)]
+#[Group('Access')]
class ArgumentsResolverTest extends TestCase {
/**
* Tests the getArgument() method.
- *
- * @dataProvider providerTestGetArgument
*/
+ #[DataProvider('providerTestGetArgument')]
public function testGetArgument($callable, $scalars, $objects, $wildcards, $expected): void {
$arguments = (new ArgumentsResolver($scalars, $objects, $wildcards))->getArguments($callable);
$this->assertSame($expected, $arguments);
@@ -164,9 +167,8 @@ class ArgumentsResolverTest extends TestCase {
/**
* Tests handleUnresolvedArgument() for missing arguments.
- *
- * @dataProvider providerTestHandleUnresolvedArgument
*/
+ #[DataProvider('providerTestHandleUnresolvedArgument')]
public function testHandleUnresolvedArgument($callable): void {
$resolver = new ArgumentsResolver([], [], []);
$this->expectException(\RuntimeException::class);
diff --git a/core/tests/Drupal/Tests/Component/Utility/BytesTest.php b/core/tests/Drupal/Tests/Component/Utility/BytesTest.php
index 04c77eb0a71b..3a7d57caa16e 100644
--- a/core/tests/Drupal/Tests/Component/Utility/BytesTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/BytesTest.php
@@ -6,6 +6,9 @@ namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\Bytes;
use Drupal\TestTools\Extension\DeprecationBridge\ExpectDeprecationTrait;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
use Prophecy\Argument;
use Prophecy\PhpUnit\ProphecyTrait;
@@ -13,11 +16,9 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface;
/**
* Tests bytes size parsing helper methods.
- *
- * @group Utility
- *
- * @coversDefaultClass \Drupal\Component\Utility\Bytes
*/
+#[CoversClass(Bytes::class)]
+#[Group('Utility')]
class BytesTest extends TestCase {
use ExpectDeprecationTrait;
@@ -33,9 +34,9 @@ class BytesTest extends TestCase {
* The expected return value from
* \Drupal\Component\Utility\Bytes::toNumber().
*
- * @dataProvider providerTestToNumber
- * @covers ::toNumber
+ * @legacy-covers ::toNumber
*/
+ #[DataProvider('providerTestToNumber')]
public function testToNumber($size, float $expected_number): void {
$this->assertSame($expected_number, Bytes::toNumber($size));
}
@@ -87,10 +88,10 @@ class BytesTest extends TestCase {
* The expected return value from
* \Drupal\Component\Utility\Bytes::validate().
*
- * @dataProvider providerTestValidate
- * @covers ::validate
- * @covers ::validateConstraint
+ * @legacy-covers ::validate
+ * @legacy-covers ::validateConstraint
*/
+ #[DataProvider('providerTestValidate')]
public function testValidate($string, bool $expected_result): void {
$this->assertSame($expected_result, Bytes::validate($string));
diff --git a/core/tests/Drupal/Tests/Component/Utility/ColorTest.php b/core/tests/Drupal/Tests/Component/Utility/ColorTest.php
index d78db87c02d1..3fc7ae24fdb3 100644
--- a/core/tests/Drupal/Tests/Component/Utility/ColorTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/ColorTest.php
@@ -5,25 +5,25 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\Color;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* Tests Color utility class conversions.
- *
- * @group Utility
*/
+#[Group('Utility')]
class ColorTest extends TestCase {
/**
- * @covers \Drupal\Component\Utility\Color::validateHex
*
* @param bool $expected
* The expected result of validation.
* @param string $value
* The hex color value.
- *
- * @dataProvider providerTestValidateHex
+ * @legacy-covers \Drupal\Component\Utility\Color::validateHex
*/
+ #[DataProvider('providerTestValidateHex')]
public function testValidateHex($expected, $value): void {
$this->assertSame($expected, Color::validateHex($value));
}
@@ -77,9 +77,8 @@ class ColorTest extends TestCase {
* The expected rgb color value.
* @param bool $invalid
* Whether this value is invalid and exception should be expected.
- *
- * @dataProvider providerTestHexToRgb
*/
+ #[DataProvider('providerTestHexToRgb')]
public function testHexToRgb($value, $expected, $invalid = FALSE): void {
if ($invalid) {
$this->expectException('InvalidArgumentException');
@@ -138,9 +137,8 @@ class ColorTest extends TestCase {
* The rgb color value.
* @param string $expected
* The expected hex color value.
- *
- * @dataProvider providerTestRbgToHex
*/
+ #[DataProvider('providerTestRbgToHex')]
public function testRgbToHex($value, $expected): void {
$this->assertSame($expected, Color::rgbToHex($value));
}
@@ -205,9 +203,8 @@ class ColorTest extends TestCase {
* The input hex color value.
* @param string $expected
* The expected normalized hex color value.
- *
- * @dataProvider providerTestNormalizeHexLength
*/
+ #[DataProvider('providerTestNormalizeHexLength')]
public function testNormalizeHexLength($value, $expected): void {
$this->assertSame($expected, Color::normalizeHexLength($value));
}
diff --git a/core/tests/Drupal/Tests/Component/Utility/CryptTest.php b/core/tests/Drupal/Tests/Component/Utility/CryptTest.php
index 7aff98aab423..b19f815f67ab 100644
--- a/core/tests/Drupal/Tests/Component/Utility/CryptTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/CryptTest.php
@@ -5,15 +5,16 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\Crypt;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* Tests random byte generation.
- *
- * @group Utility
- *
- * @coversDefaultClass \Drupal\Component\Utility\Crypt
*/
+#[CoversClass(Crypt::class)]
+#[Group('Utility')]
class CryptTest extends TestCase {
/**
@@ -24,9 +25,9 @@ class CryptTest extends TestCase {
* @param string $expected_hash
* Expected result from hashing $data.
*
- * @dataProvider providerTestHashBase64
- * @covers ::hashBase64
+ * @legacy-covers ::hashBase64
*/
+ #[DataProvider('providerTestHashBase64')]
public function testHashBase64($data, $expected_hash): void {
$hash = Crypt::hashBase64($data);
$this->assertEquals($expected_hash, $hash, 'The correct hash was not calculated.');
@@ -42,9 +43,9 @@ class CryptTest extends TestCase {
* @param string $expected_hmac
* Expected result from hashing $data using $key.
*
- * @dataProvider providerTestHmacBase64
- * @covers ::hmacBase64
+ * @legacy-covers ::hmacBase64
*/
+ #[DataProvider('providerTestHmacBase64')]
public function testHmacBase64($data, $key, $expected_hmac): void {
$hmac = Crypt::hmacBase64($data, $key);
$this->assertEquals($expected_hmac, $hmac, 'The correct hmac was not calculated.');
@@ -58,9 +59,9 @@ class CryptTest extends TestCase {
* @param string $key
* Key to use in hashing process.
*
- * @dataProvider providerTestHmacBase64Invalid
- * @covers ::hmacBase64
+ * @legacy-covers ::hmacBase64
*/
+ #[DataProvider('providerTestHmacBase64Invalid')]
public function testHmacBase64Invalid($data, $key): void {
$this->expectException('InvalidArgumentException');
Crypt::hmacBase64($data, $key);
diff --git a/core/tests/Drupal/Tests/Component/Utility/DeprecationHelperTest.php b/core/tests/Drupal/Tests/Component/Utility/DeprecationHelperTest.php
index 2383752bffd6..b720bad1f6d2 100644
--- a/core/tests/Drupal/Tests/Component/Utility/DeprecationHelperTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/DeprecationHelperTest.php
@@ -5,12 +5,16 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\DeprecationHelper;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Utility\DeprecationHelper
- * @group Utility
+ * Tests Drupal\Component\Utility\DeprecationHelper.
*/
+#[CoversClass(DeprecationHelper::class)]
+#[Group('Utility')]
class DeprecationHelperTest extends TestCase {
/**
@@ -18,9 +22,8 @@ class DeprecationHelperTest extends TestCase {
* The core version to test against.
* @param array $tests
* Array of versions and their expected result.
- *
- * @dataProvider deprecatedHelperTestCases
*/
+ #[DataProvider('deprecatedHelperTestCases')]
public function testDeprecationHelper(string $currentVersion, array $tests): void {
foreach ($tests as $deprecatedVersion => $expectedCallable) {
$result = DeprecationHelper::backwardsCompatibleCall(
diff --git a/core/tests/Drupal/Tests/Component/Utility/EmailValidatorTest.php b/core/tests/Drupal/Tests/Component/Utility/EmailValidatorTest.php
index b57f51c8b6a1..e353785fd7d4 100644
--- a/core/tests/Drupal/Tests/Component/Utility/EmailValidatorTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/EmailValidatorTest.php
@@ -6,18 +6,19 @@ namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\EmailValidator;
use Egulias\EmailValidator\Validation\RFCValidation;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* Tests the EmailValidator utility class.
- *
- * @coversDefaultClass \Drupal\Component\Utility\EmailValidator
- * @group Utility
*/
+#[CoversClass(EmailValidator::class)]
+#[Group('Utility')]
class EmailValidatorTest extends TestCase {
/**
- * @covers ::isValid
+ * @legacy-covers ::isValid
*/
public function testIsValid(): void {
// Note that \Drupal\Component\Utility\EmailValidator wraps
@@ -31,7 +32,7 @@ class EmailValidatorTest extends TestCase {
}
/**
- * @covers ::isValid
+ * @legacy-covers ::isValid
*/
public function testIsValidException(): void {
$validator = new EmailValidator();
diff --git a/core/tests/Drupal/Tests/Component/Utility/EnvironmentTest.php b/core/tests/Drupal/Tests/Component/Utility/EnvironmentTest.php
index 6a70b028d34e..fa8cf4912958 100644
--- a/core/tests/Drupal/Tests/Component/Utility/EnvironmentTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/EnvironmentTest.php
@@ -5,15 +5,16 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\Environment;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* Test PHP Environment helper methods.
- *
- * @group Utility
- *
- * @coversDefaultClass \Drupal\Component\Utility\Environment
*/
+#[CoversClass(Environment::class)]
+#[Group('Utility')]
class EnvironmentTest extends TestCase {
/**
@@ -29,9 +30,9 @@ class EnvironmentTest extends TestCase {
* The expected return value from
* \Drupal\Component\Utility\Environment::checkMemoryLimit().
*
- * @dataProvider providerTestCheckMemoryLimit
- * @covers ::checkMemoryLimit
+ * @legacy-covers ::checkMemoryLimit
*/
+ #[DataProvider('providerTestCheckMemoryLimit')]
public function testCheckMemoryLimit($required, $custom_memory_limit, $expected): void {
$actual = Environment::checkMemoryLimit($required, $custom_memory_limit);
$this->assertEquals($expected, $actual);
diff --git a/core/tests/Drupal/Tests/Component/Utility/FilterArrayTest.php b/core/tests/Drupal/Tests/Component/Utility/FilterArrayTest.php
index 289b19bfe824..e766d8ecf61c 100644
--- a/core/tests/Drupal/Tests/Component/Utility/FilterArrayTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/FilterArrayTest.php
@@ -5,23 +5,24 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\FilterArray;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* Test filter array functions.
- *
- * @group Utility
- *
- * @coversDefaultClass \Drupal\Component\Utility\FilterArray
*/
+#[CoversClass(FilterArray::class)]
+#[Group('Utility')]
class FilterArrayTest extends TestCase {
/**
* Tests removing empty strings.
*
- * @dataProvider providerRemoveEmptyStrings
- * @covers ::removeEmptyStrings
+ * @legacy-covers ::removeEmptyStrings
*/
+ #[DataProvider('providerRemoveEmptyStrings')]
public function testRemoveEmptyStrings(array $values, array $expected): void {
$this->assertEquals($expected, array_values(FilterArray::removeEmptyStrings($values)));
}
diff --git a/core/tests/Drupal/Tests/Component/Utility/HtmlTest.php b/core/tests/Drupal/Tests/Component/Utility/HtmlTest.php
index 800483fab501..a01684d768d3 100644
--- a/core/tests/Drupal/Tests/Component/Utility/HtmlTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/HtmlTest.php
@@ -8,17 +8,17 @@ use Drupal\Component\Render\MarkupInterface;
use Drupal\Component\Render\MarkupTrait;
use Drupal\Component\Utility\Html;
use Drupal\Component\Utility\Random;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
// cspell:ignore répét répété
-
/**
* Tests \Drupal\Component\Utility\Html.
- *
- * @group Common
- *
- * @coversDefaultClass \Drupal\Component\Utility\Html
*/
+#[CoversClass(Html::class)]
+#[Group('Common')]
class HtmlTest extends TestCase {
/**
@@ -42,10 +42,9 @@ class HtmlTest extends TestCase {
* (optional) An array of string replacements to use on the identifier. If
* NULL, no filter will be passed and a default will be used.
*
- * @dataProvider providerTestCleanCssIdentifier
- *
- * @covers ::cleanCssIdentifier
+ * @legacy-covers ::cleanCssIdentifier
*/
+ #[DataProvider('providerTestCleanCssIdentifier')]
public function testCleanCssIdentifier($expected, $source, $filter = NULL): void {
if ($filter !== NULL) {
$this->assertSame($expected, Html::cleanCssIdentifier($source, $filter));
@@ -94,7 +93,7 @@ class HtmlTest extends TestCase {
/**
* Tests that Html::getClass() cleans the class name properly.
*
- * @covers ::getClass
+ * @legacy-covers ::getClass
*/
public function testHtmlClass(): void {
// Verify Drupal coding standards are enforced.
@@ -116,10 +115,9 @@ class HtmlTest extends TestCase {
* @param bool $reset
* (optional) If TRUE, reset the list of seen IDs. Defaults to FALSE.
*
- * @dataProvider providerTestHtmlGetUniqueId
- *
- * @covers ::getUniqueId
+ * @legacy-covers ::getUniqueId
*/
+ #[DataProvider('providerTestHtmlGetUniqueId')]
public function testHtmlGetUniqueId($expected, $source, $reset = FALSE): void {
if ($reset) {
Html::resetSeenIds();
@@ -159,10 +157,9 @@ class HtmlTest extends TestCase {
* @param string $source
* The string being transformed to an ID.
*
- * @dataProvider providerTestHtmlGetUniqueIdWithAjaxIds
- *
- * @covers ::getUniqueId
+ * @legacy-covers ::getUniqueId
*/
+ #[DataProvider('providerTestHtmlGetUniqueIdWithAjaxIds')]
public function testHtmlGetUniqueIdWithAjaxIds($expected, $source): void {
Html::setIsAjax(TRUE);
$id = Html::getUniqueId($source);
@@ -203,10 +200,9 @@ class HtmlTest extends TestCase {
* @param string $source
* The string being transformed to an ID.
*
- * @dataProvider providerTestHtmlGetId
- *
- * @covers ::getId
+ * @legacy-covers ::getId
*/
+ #[DataProvider('providerTestHtmlGetId')]
public function testHtmlGetId($expected, $source): void {
Html::setIsAjax(FALSE);
$this->assertSame($expected, Html::getId($source));
@@ -238,9 +234,9 @@ class HtmlTest extends TestCase {
/**
* Tests Html::decodeEntities().
*
- * @dataProvider providerDecodeEntities
- * @covers ::decodeEntities
+ * @legacy-covers ::decodeEntities
*/
+ #[DataProvider('providerDecodeEntities')]
public function testDecodeEntities($text, $expected): void {
$this->assertEquals($expected, Html::decodeEntities($text));
}
@@ -279,9 +275,9 @@ class HtmlTest extends TestCase {
/**
* Tests Html::escape().
*
- * @dataProvider providerEscape
- * @covers ::escape
+ * @legacy-covers ::escape
*/
+ #[DataProvider('providerEscape')]
public function testEscape($expected, $text): void {
$this->assertEquals($expected, Html::escape($text));
}
@@ -313,8 +309,8 @@ class HtmlTest extends TestCase {
/**
* Tests relationship between escaping and decoding HTML entities.
*
- * @covers ::decodeEntities
- * @covers ::escape
+ * @legacy-covers ::decodeEntities
+ * @legacy-covers ::escape
*/
public function testDecodeEntitiesAndEscape(): void {
$string = "<em>répét&eacute;</em>";
@@ -335,7 +331,7 @@ class HtmlTest extends TestCase {
* serialization would cause errors in getElementsByTagName() in the
* serialization function.
*
- * @covers ::serialize
+ * @legacy-covers ::serialize
*/
public function testSerialize(): void {
$document = new \DOMDocument();
@@ -344,17 +340,17 @@ class HtmlTest extends TestCase {
}
/**
- * @covers ::transformRootRelativeUrlsToAbsolute
- * @dataProvider providerTestTransformRootRelativeUrlsToAbsolute
+ * @legacy-covers ::transformRootRelativeUrlsToAbsolute
*/
+ #[DataProvider('providerTestTransformRootRelativeUrlsToAbsolute')]
public function testTransformRootRelativeUrlsToAbsolute($html, $scheme_and_host, $expected_html): void {
$this->assertSame($expected_html ?: $html, Html::transformRootRelativeUrlsToAbsolute($html, $scheme_and_host));
}
/**
- * @covers ::transformRootRelativeUrlsToAbsolute
- * @dataProvider providerTestTransformRootRelativeUrlsToAbsoluteAssertion
+ * @legacy-covers ::transformRootRelativeUrlsToAbsolute
*/
+ #[DataProvider('providerTestTransformRootRelativeUrlsToAbsoluteAssertion')]
public function testTransformRootRelativeUrlsToAbsoluteAssertion($scheme_and_host): void {
$this->expectException(\AssertionError::class);
Html::transformRootRelativeUrlsToAbsolute('', $scheme_and_host);
diff --git a/core/tests/Drupal/Tests/Component/Utility/ImageTest.php b/core/tests/Drupal/Tests/Component/Utility/ImageTest.php
index e67eb9a4d163..2b0bfaab2a8e 100644
--- a/core/tests/Drupal/Tests/Component/Utility/ImageTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/ImageTest.php
@@ -5,19 +5,22 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\Image;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Utility\Image
- * @group Image
+ * Tests Drupal\Component\Utility\Image.
*/
+#[CoversClass(Image::class)]
+#[Group('Image')]
class ImageTest extends TestCase {
/**
* Tests all control flow branches in image_dimensions_scale().
- *
- * @dataProvider providerTestScaleDimensions
*/
+ #[DataProvider('providerTestScaleDimensions')]
public function testScaleDimensions($input, $output): void {
// Process the test dataset.
$return_value = Image::scaleDimensions($input['dimensions'], $input['width'], $input['height'], $input['upscale']);
@@ -158,7 +161,7 @@ class ImageTest extends TestCase {
}
/**
- * @covers ::getKeywordOffset
+ * @legacy-covers ::getKeywordOffset
*/
public function testInvalidGetKeywordOffset(): void {
$this->expectException(\InvalidArgumentException::class);
@@ -167,10 +170,9 @@ class ImageTest extends TestCase {
}
/**
- * @covers ::getKeywordOffset
- *
- * @dataProvider providerTestGetKeywordOffset
+ * @legacy-covers ::getKeywordOffset
*/
+ #[DataProvider('providerTestGetKeywordOffset')]
public function testGetKeywordOffset(array $input, int $expected): void {
$this->assertSame($expected, Image::getKeywordOffset($input['anchor'], $input['current'], $input['new']));
}
diff --git a/core/tests/Drupal/Tests/Component/Utility/NestedArrayTest.php b/core/tests/Drupal/Tests/Component/Utility/NestedArrayTest.php
index 7a43bda8882d..97f42571ca17 100644
--- a/core/tests/Drupal/Tests/Component/Utility/NestedArrayTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/NestedArrayTest.php
@@ -5,12 +5,16 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\NestedArray;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Utility\NestedArray
- * @group Utility
+ * Tests Drupal\Component\Utility\NestedArray.
*/
+#[CoversClass(NestedArray::class)]
+#[Group('Utility')]
class NestedArrayTest extends TestCase {
/**
@@ -45,7 +49,7 @@ class NestedArrayTest extends TestCase {
/**
* Tests getting nested array values.
*
- * @covers ::getValue
+ * @legacy-covers ::getValue
*/
public function testGetValue(): void {
// Verify getting a value of a nested element.
@@ -75,7 +79,7 @@ class NestedArrayTest extends TestCase {
/**
* Tests setting nested array values.
*
- * @covers ::setValue
+ * @legacy-covers ::setValue
*/
public function testSetValue(): void {
$new_value = [
@@ -96,7 +100,7 @@ class NestedArrayTest extends TestCase {
/**
* Tests force-setting values.
*
- * @covers ::setValue
+ * @legacy-covers ::setValue
*/
public function testSetValueForce(): void {
$new_value = [
@@ -111,7 +115,7 @@ class NestedArrayTest extends TestCase {
/**
* Tests unsetting nested array values.
*
- * @covers ::unsetValue
+ * @legacy-covers ::unsetValue
*/
public function testUnsetValue(): void {
// Verify unsetting a non-existing nested element throws no errors and the
@@ -146,8 +150,8 @@ class NestedArrayTest extends TestCase {
/**
* Tests NestedArray::mergeDeepArray().
*
- * @covers ::mergeDeep
- * @covers ::mergeDeepArray
+ * @legacy-covers ::mergeDeep
+ * @legacy-covers ::mergeDeepArray
*/
public function testMergeDeepArray(): void {
$link_options_1 = [
@@ -174,7 +178,7 @@ class NestedArrayTest extends TestCase {
/**
* Tests that arrays with implicit keys are appended, not merged.
*
- * @covers ::mergeDeepArray
+ * @legacy-covers ::mergeDeepArray
*/
public function testMergeImplicitKeys(): void {
$a = [
@@ -195,7 +199,7 @@ class NestedArrayTest extends TestCase {
/**
* Tests that even with explicit keys, values are appended, not merged.
*
- * @covers ::mergeDeepArray
+ * @legacy-covers ::mergeDeepArray
*/
public function testMergeExplicitKeys(): void {
$a = [
@@ -231,7 +235,7 @@ class NestedArrayTest extends TestCase {
* before those in the first one, they are still appended, and the keys on
* the first array are deleted and regenerated.
*
- * @covers ::mergeDeepArray
+ * @legacy-covers ::mergeDeepArray
*/
public function testMergeOutOfSequenceKeys(): void {
$a = [
@@ -261,9 +265,9 @@ class NestedArrayTest extends TestCase {
}
/**
- * @covers ::filter
- * @dataProvider providerTestFilter
+ * @legacy-covers ::filter
*/
+ #[DataProvider('providerTestFilter')]
public function testFilter($array, $callable, $expected): void {
$this->assertEquals($expected, NestedArray::filter($array, $callable));
}
diff --git a/core/tests/Drupal/Tests/Component/Utility/NumberTest.php b/core/tests/Drupal/Tests/Component/Utility/NumberTest.php
index 2055eecde647..fdac9baf7965 100644
--- a/core/tests/Drupal/Tests/Component/Utility/NumberTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/NumberTest.php
@@ -6,17 +6,19 @@ namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\Number;
use Drupal\TestTools\Extension\DeprecationBridge\ExpectDeprecationTrait;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\IgnoreDeprecations;
use PHPUnit\Framework\TestCase;
/**
* Tests number manipulation utilities.
*
- * @group Utility
- *
- * @coversDefaultClass \Drupal\Component\Utility\Number
- *
* @see \Drupal\Component\Utility\Number
*/
+#[CoversClass(Number::class)]
+#[Group('Utility')]
class NumberTest extends TestCase {
use ExpectDeprecationTrait;
@@ -31,9 +33,9 @@ class NumberTest extends TestCase {
* @param bool $expected
* Expected return value from Number::validStep().
*
- * @dataProvider providerTestValidStep
- * @covers ::validStep
+ * @legacy-covers ::validStep
*/
+ #[DataProvider('providerTestValidStep')]
public function testValidStep($value, $step, $expected): void {
$return = Number::validStep($value, $step);
$this->assertEquals($expected, $return);
@@ -51,9 +53,9 @@ class NumberTest extends TestCase {
* @param bool $expected
* Expected return value from Number::validStep().
*
- * @dataProvider providerTestValidStepOffset
- * @covers ::validStep
+ * @legacy-covers ::validStep
*/
+ #[DataProvider('providerTestValidStepOffset')]
public function testValidStepOffset($value, $step, $offset, $expected): void {
$return = Number::validStep($value, $step, $offset);
$this->assertEquals($expected, $return);
@@ -129,10 +131,10 @@ class NumberTest extends TestCase {
* @param string $expected
* The expected alphadecimal value.
*
- * @dataProvider providerTestConversions
- * @covers ::intToAlphadecimal
- * @covers ::alphadecimalToInt
+ * @legacy-covers ::intToAlphadecimal
+ * @legacy-covers ::alphadecimalToInt
*/
+ #[DataProvider('providerTestConversions')]
public function testConversions($value, $expected): void {
$this->assertSame(Number::intToAlphadecimal($value), $expected);
$this->assertSame($value, Number::alphadecimalToInt($expected));
@@ -166,7 +168,7 @@ class NumberTest extends TestCase {
* Number::alphadecimalToInt() must throw an exception
* when non-alphanumeric characters are passed as input.
*
- * @covers ::alphadecimalToInt
+ * @legacy-covers ::alphadecimalToInt
*/
public function testAlphadecimalToIntThrowsExceptionWithMalformedStrings(): void {
$this->expectException(\InvalidArgumentException::class);
@@ -180,9 +182,9 @@ class NumberTest extends TestCase {
* Many tests and code rely on Number::alphadecimalToInt() returning 0
* for degenerate values '' and NULL. We must ensure they are accepted.
*
- * @group legacy
- * @covers ::alphadecimalToInt
+ * @legacy-covers ::alphadecimalToInt
*/
+ #[IgnoreDeprecations]
public function testAlphadecimalToIntReturnsZeroWithNullAndEmptyString(): void {
$deprecationMessage = 'Passing NULL or an empty string to Drupal\Component\Utility\Number::alphadecimalToInt() is deprecated in drupal:11.2.0 and will be removed in drupal:12.0.0. See https://www.drupal.org/node/3494472';
$this->expectDeprecation($deprecationMessage);
diff --git a/core/tests/Drupal/Tests/Component/Utility/RandomTest.php b/core/tests/Drupal/Tests/Component/Utility/RandomTest.php
index 64de3b2061a4..f46b0cd9b557 100644
--- a/core/tests/Drupal/Tests/Component/Utility/RandomTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/RandomTest.php
@@ -5,15 +5,15 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\Random;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* Tests random data generation.
- *
- * @group Utility
- *
- * @coversDefaultClass \Drupal\Component\Utility\Random
*/
+#[CoversClass(Random::class)]
+#[Group('Utility')]
class RandomTest extends TestCase {
/**
@@ -28,7 +28,7 @@ class RandomTest extends TestCase {
/**
* Tests unique random string generation.
*
- * @covers ::string
+ * @legacy-covers ::string
*/
public function testRandomStringUniqueness(): void {
$strings = [];
@@ -43,7 +43,7 @@ class RandomTest extends TestCase {
/**
* Tests unique random name generation.
*
- * @covers ::name
+ * @legacy-covers ::name
*/
public function testRandomNamesUniqueness(): void {
$names = [];
@@ -58,7 +58,7 @@ class RandomTest extends TestCase {
/**
* Tests infinite loop prevention whilst generating random names.
*
- * @covers ::name
+ * @legacy-covers ::name
*/
public function testRandomNameException(): void {
// There are fewer than 100 possibilities so an exception should occur to
@@ -74,7 +74,7 @@ class RandomTest extends TestCase {
/**
* Tests infinite loop prevention whilst generating random strings.
*
- * @covers ::string
+ * @legacy-covers ::string
*/
public function testRandomStringException(): void {
// There are fewer than 100 possibilities so an exception should occur to
@@ -90,7 +90,7 @@ class RandomTest extends TestCase {
/**
* Tests random name generation if uniqueness is not enforced.
*
- * @covers ::name
+ * @legacy-covers ::name
*/
public function testRandomNameNonUnique(): void {
// There are fewer than 100 possibilities if we were forcing uniqueness so
@@ -105,7 +105,7 @@ class RandomTest extends TestCase {
/**
* Tests random string if uniqueness is not enforced.
*
- * @covers ::string
+ * @legacy-covers ::string
*/
public function testRandomStringNonUnique(): void {
// There are fewer than 100 possibilities if we were forcing uniqueness so
@@ -120,7 +120,7 @@ class RandomTest extends TestCase {
/**
* Tests unique random name generation.
*
- * @covers ::machineName
+ * @legacy-covers ::machineName
*/
public function testRandomMachineNamesUniqueness(): void {
$names = [];
@@ -135,7 +135,7 @@ class RandomTest extends TestCase {
/**
* Tests infinite loop prevention whilst generating random names.
*
- * @covers ::machineName
+ * @legacy-covers ::machineName
*/
public function testRandomMachineNameException(): void {
// There are fewer than 100 possibilities so an exception should occur to
@@ -150,7 +150,7 @@ class RandomTest extends TestCase {
/**
* Tests random name generation if uniqueness is not enforced.
*
- * @covers ::machineName
+ * @legacy-covers ::machineName
*/
public function testRandomMachineNameNonUnique(): void {
// There are fewer than 100 possibilities meaning if uniqueness was
@@ -165,7 +165,7 @@ class RandomTest extends TestCase {
/**
* Tests random object generation to ensure the expected number of properties.
*
- * @covers ::object
+ * @legacy-covers ::object
*/
public function testRandomObject(): void {
// For values of 0 and 1 \Drupal\Component\Utility\Random::object() will
@@ -180,7 +180,7 @@ class RandomTest extends TestCase {
/**
* Tests random string validation callbacks.
*
- * @covers ::string
+ * @legacy-covers ::string
*/
public function testRandomStringValidator(): void {
$random = new Random();
@@ -192,7 +192,7 @@ class RandomTest extends TestCase {
/**
* Tests random word.
*
- * @covers ::word
+ * @legacy-covers ::word
*/
public function testRandomWordValidator(): void {
$random = new Random();
diff --git a/core/tests/Drupal/Tests/Component/Utility/RectangleTest.php b/core/tests/Drupal/Tests/Component/Utility/RectangleTest.php
index 5635173a6de6..45942f226fa3 100644
--- a/core/tests/Drupal/Tests/Component/Utility/RectangleTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/RectangleTest.php
@@ -5,18 +5,22 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\Rectangle;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Utility\Rectangle
- * @group Image
+ * Tests Drupal\Component\Utility\Rectangle.
*/
+#[CoversClass(Rectangle::class)]
+#[Group('Image')]
class RectangleTest extends TestCase {
/**
* Tests wrong rectangle width.
*
- * @covers ::rotate
+ * @legacy-covers ::rotate
*/
public function testWrongWidth(): void {
$this->expectException(\InvalidArgumentException::class);
@@ -26,7 +30,7 @@ class RectangleTest extends TestCase {
/**
* Tests wrong rectangle height.
*
- * @covers ::rotate
+ * @legacy-covers ::rotate
*/
public function testWrongHeight(): void {
$this->expectException(\InvalidArgumentException::class);
@@ -47,12 +51,11 @@ class RectangleTest extends TestCase {
* @param int $exp_height
* The expected height of the rotated rectangle.
*
- * @covers ::rotate
- * @covers ::getBoundingWidth
- * @covers ::getBoundingHeight
- *
- * @dataProvider providerPhp55RotateDimensions
+ * @legacy-covers ::rotate
+ * @legacy-covers ::getBoundingWidth
+ * @legacy-covers ::getBoundingHeight
*/
+ #[DataProvider('providerPhp55RotateDimensions')]
public function testRotateDimensions($width, $height, $angle, $exp_width, $exp_height): void {
$rect = new Rectangle($width, $height);
$rect->rotate($angle);
diff --git a/core/tests/Drupal/Tests/Component/Utility/ReflectionTest.php b/core/tests/Drupal/Tests/Component/Utility/ReflectionTest.php
index 4a0a6fb4b854..f498157f08b8 100644
--- a/core/tests/Drupal/Tests/Component/Utility/ReflectionTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/ReflectionTest.php
@@ -5,12 +5,16 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\Reflection;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Utility\Reflection
- * @group Utility
+ * Tests Drupal\Component\Utility\Reflection.
*/
+#[CoversClass(Reflection::class)]
+#[Group('Utility')]
class ReflectionTest extends TestCase {
/**
@@ -19,9 +23,9 @@ class ReflectionTest extends TestCase {
* @param \ReflectionParameter $parameter
* The reflection parameter.
*
- * @covers ::getParameterClassName
- * @dataProvider providerGetParameterClassName
+ * @legacy-covers ::getParameterClassName
*/
+ #[DataProvider('providerGetParameterClassName')]
public function testGetParameterClassName(?string $expected, \ReflectionParameter $parameter): void {
$this->assertEquals($expected, Reflection::getParameterClassName($parameter));
}
diff --git a/core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php b/core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php
index 9cc47d17d965..37a431411b34 100644
--- a/core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php
@@ -5,15 +5,16 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\SortArray;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* Tests the SortArray component.
- *
- * @group Utility
- *
- * @coversDefaultClass \Drupal\Component\Utility\SortArray
*/
+#[CoversClass(SortArray::class)]
+#[Group('Utility')]
class SortArrayTest extends TestCase {
/**
@@ -26,11 +27,10 @@ class SortArrayTest extends TestCase {
* @param int $expected
* The expected output from calling the method.
*
- * @covers ::sortByWeightElement
- * @covers ::sortByKeyInt
- *
- * @dataProvider providerSortByWeightElement
+ * @legacy-covers ::sortByWeightElement
+ * @legacy-covers ::sortByKeyInt
*/
+ #[DataProvider('providerSortByWeightElement')]
public function testSortByWeightElement($a, $b, $expected): void {
$result = SortArray::sortByWeightElement($a, $b);
$this->assertBothNegativePositiveOrZero($expected, $result);
@@ -103,10 +103,10 @@ class SortArrayTest extends TestCase {
* @param int $expected
* The expected output from calling the method.
*
- * @dataProvider providerSortByWeightProperty
- * @covers ::sortByWeightProperty
- * @covers ::sortByKeyInt
+ * @legacy-covers ::sortByWeightProperty
+ * @legacy-covers ::sortByKeyInt
*/
+ #[DataProvider('providerSortByWeightProperty')]
public function testSortByWeightProperty($a, $b, $expected): void {
$result = SortArray::sortByWeightProperty($a, $b);
$this->assertBothNegativePositiveOrZero($expected, $result);
@@ -179,10 +179,10 @@ class SortArrayTest extends TestCase {
* @param int $expected
* The expected output from calling the method.
*
- * @dataProvider providerSortByTitleElement
- * @covers ::sortByTitleElement
- * @covers ::sortByKeyString
+ * @legacy-covers ::sortByTitleElement
+ * @legacy-covers ::sortByKeyString
*/
+ #[DataProvider('providerSortByTitleElement')]
public function testSortByTitleElement($a, $b, $expected): void {
$result = SortArray::sortByTitleElement($a, $b);
$this->assertBothNegativePositiveOrZero($expected, $result);
@@ -248,10 +248,10 @@ class SortArrayTest extends TestCase {
* @param int $expected
* The expected output from calling the method.
*
- * @dataProvider providerSortByTitleProperty
- * @covers ::sortByTitleProperty
- * @covers ::sortByKeyString
+ * @legacy-covers ::sortByTitleProperty
+ * @legacy-covers ::sortByKeyString
*/
+ #[DataProvider('providerSortByTitleProperty')]
public function testSortByTitleProperty($a, $b, $expected): void {
$result = SortArray::sortByTitleProperty($a, $b);
$this->assertBothNegativePositiveOrZero($expected, $result);
diff --git a/core/tests/Drupal/Tests/Component/Utility/TimerTest.php b/core/tests/Drupal/Tests/Component/Utility/TimerTest.php
index 470ff1de13fe..12996f564f4b 100644
--- a/core/tests/Drupal/Tests/Component/Utility/TimerTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/TimerTest.php
@@ -5,23 +5,23 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\Timer;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* Tests the Timer system.
- *
- * @group Utility
- *
- * @coversDefaultClass \Drupal\Component\Utility\Timer
*/
+#[CoversClass(Timer::class)]
+#[Group('Utility')]
class TimerTest extends TestCase {
/**
* Tests Timer::read() time accumulation accuracy across multiple restarts.
*
- * @covers ::start
- * @covers ::stop
- * @covers ::read
+ * @legacy-covers ::start
+ * @legacy-covers ::stop
+ * @legacy-covers ::read
*/
public function testTimer(): void {
Timer::start('test');
diff --git a/core/tests/Drupal/Tests/Component/Utility/UnicodeTest.php b/core/tests/Drupal/Tests/Component/Utility/UnicodeTest.php
index c0dbfa92d757..06e6e1ef7d4c 100644
--- a/core/tests/Drupal/Tests/Component/Utility/UnicodeTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/UnicodeTest.php
@@ -6,24 +6,25 @@ namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\Unicode;
use Drupal\TestTools\Extension\DeprecationBridge\ExpectDeprecationTrait;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* Test unicode handling features implemented in Unicode component.
- *
- * @group Utility
- *
- * @coversDefaultClass \Drupal\Component\Utility\Unicode
*/
+#[CoversClass(Unicode::class)]
+#[Group('Utility')]
class UnicodeTest extends TestCase {
use ExpectDeprecationTrait;
/**
* Tests multibyte ucfirst.
*
- * @dataProvider providerUcfirst
- * @covers ::ucfirst
+ * @legacy-covers ::ucfirst
*/
+ #[DataProvider('providerUcfirst')]
public function testUcfirst($text, $expected): void {
$this->assertEquals($expected, Unicode::ucfirst($text));
}
@@ -52,9 +53,9 @@ class UnicodeTest extends TestCase {
/**
* Tests multibyte lcfirst.
*
- * @dataProvider providerLcfirst
- * @covers ::lcfirst
+ * @legacy-covers ::lcfirst
*/
+ #[DataProvider('providerLcfirst')]
public function testLcfirst($text, $expected): void {
$this->assertEquals($expected, Unicode::lcfirst($text));
}
@@ -83,9 +84,9 @@ class UnicodeTest extends TestCase {
/**
* Tests multibyte ucwords.
*
- * @dataProvider providerUcwords
- * @covers ::ucwords
+ * @legacy-covers ::ucwords
*/
+ #[DataProvider('providerUcwords')]
public function testUcwords($text, $expected): void {
$this->assertEquals($expected, Unicode::ucwords($text));
}
@@ -116,9 +117,9 @@ class UnicodeTest extends TestCase {
/**
* Tests multibyte truncate.
*
- * @dataProvider providerTruncate
- * @covers ::truncate
+ * @legacy-covers ::truncate
*/
+ #[DataProvider('providerTruncate')]
public function testTruncate($text, $max_length, $expected, $wordsafe = FALSE, $add_ellipsis = FALSE): void {
$this->assertEquals($expected, Unicode::truncate($text, $max_length, $wordsafe, $add_ellipsis));
}
@@ -215,9 +216,9 @@ EOF;
* @param string $expected
* The expected return from Unicode::truncateBytes().
*
- * @dataProvider providerTestTruncateBytes
- * @covers ::truncateBytes
+ * @legacy-covers ::truncateBytes
*/
+ #[DataProvider('providerTestTruncateBytes')]
public function testTruncateBytes($text, $max_length, $expected): void {
$this->assertEquals($expected, Unicode::truncateBytes($text, $max_length), 'The string was not correctly truncated.');
}
@@ -250,9 +251,9 @@ EOF;
* @param string $message
* The message to display on failure.
*
- * @dataProvider providerTestValidateUtf8
- * @covers ::validateUtf8
+ * @legacy-covers ::validateUtf8
*/
+ #[DataProvider('providerTestValidateUtf8')]
public function testValidateUtf8($text, $expected, $message): void {
$this->assertEquals($expected, Unicode::validateUtf8($text), $message);
}
@@ -290,9 +291,9 @@ EOF;
* @param string|bool $expected
* The expected result.
*
- * @dataProvider providerTestConvertToUtf8
- * @covers ::convertToUtf8
+ * @legacy-covers ::convertToUtf8
*/
+ #[DataProvider('providerTestConvertToUtf8')]
public function testConvertToUtf8($data, $encoding, $expected): void {
$this->assertEquals($expected, Unicode::convertToUtf8($data, $encoding));
}
diff --git a/core/tests/Drupal/Tests/Component/Utility/UrlHelperTest.php b/core/tests/Drupal/Tests/Component/Utility/UrlHelperTest.php
index 0d5eb029d07b..571009cf539a 100644
--- a/core/tests/Drupal/Tests/Component/Utility/UrlHelperTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/UrlHelperTest.php
@@ -5,13 +5,17 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\UrlHelper;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunInSeparateProcess;
use PHPUnit\Framework\TestCase;
/**
- * @group Utility
- *
- * @coversDefaultClass \Drupal\Component\Utility\UrlHelper
+ * Tests Drupal\Component\Utility\UrlHelper.
*/
+#[CoversClass(UrlHelper::class)]
+#[Group('Utility')]
class UrlHelperTest extends TestCase {
/**
@@ -43,9 +47,9 @@ class UrlHelperTest extends TestCase {
* @param string $message
* The assertion message.
*
- * @dataProvider providerTestBuildQuery
- * @covers ::buildQuery
+ * @legacy-covers ::buildQuery
*/
+ #[DataProvider('providerTestBuildQuery')]
public function testBuildQuery($query, $expected, $message): void {
$this->assertEquals(UrlHelper::buildQuery($query), $expected, $message);
}
@@ -91,9 +95,9 @@ class UrlHelperTest extends TestCase {
* @param string $scheme
* The scheme to test.
*
- * @dataProvider providerTestValidAbsoluteData
- * @covers ::isValid
+ * @legacy-covers ::isValid
*/
+ #[DataProvider('providerTestValidAbsoluteData')]
public function testValidAbsolute(string $url, string $scheme): void {
$test_url = $scheme . '://' . $url;
$valid_url = UrlHelper::isValid($test_url, TRUE);
@@ -147,9 +151,9 @@ class UrlHelperTest extends TestCase {
* @param string $scheme
* The scheme to test.
*
- * @dataProvider providerTestInvalidAbsolute
- * @covers ::isValid
+ * @legacy-covers ::isValid
*/
+ #[DataProvider('providerTestInvalidAbsolute')]
public function testInvalidAbsolute(string $url, string $scheme): void {
$test_url = $scheme . '://' . $url;
$valid_url = UrlHelper::isValid($test_url, TRUE);
@@ -182,9 +186,9 @@ class UrlHelperTest extends TestCase {
* @param string $prefix
* The prefix to test.
*
- * @dataProvider providerTestValidRelativeData
- * @covers ::isValid
+ * @legacy-covers ::isValid
*/
+ #[DataProvider('providerTestValidRelativeData')]
public function testValidRelative(string $url, string $prefix): void {
$test_url = $prefix . $url;
$valid_url = UrlHelper::isValid($test_url);
@@ -215,9 +219,9 @@ class UrlHelperTest extends TestCase {
* @param string $prefix
* The prefix to test.
*
- * @dataProvider providerTestInvalidRelativeData
- * @covers ::isValid
+ * @legacy-covers ::isValid
*/
+ #[DataProvider('providerTestInvalidRelativeData')]
public function testInvalidRelative(string $url, string $prefix): void {
$test_url = $prefix . $url;
$valid_url = UrlHelper::isValid($test_url);
@@ -235,9 +239,9 @@ class UrlHelperTest extends TestCase {
* @param array $expected
* An array containing query parameters.
*
- * @dataProvider providerTestFilterQueryParameters
- * @covers ::filterQueryParameters
+ * @legacy-covers ::filterQueryParameters
*/
+ #[DataProvider('providerTestFilterQueryParameters')]
public function testFilterQueryParameters($query, $exclude, $expected): void {
$filtered = UrlHelper::filterQueryParameters($query, $exclude);
$this->assertEquals($expected, $filtered, 'The query was not properly filtered.');
@@ -274,9 +278,9 @@ class UrlHelperTest extends TestCase {
* @param array $expected
* Associative array with expected parameters.
*
- * @dataProvider providerTestParse
- * @covers ::parse
+ * @legacy-covers ::parse
*/
+ #[DataProvider('providerTestParse')]
public function testParse($url, $expected): void {
$parsed = UrlHelper::parse($url);
$this->assertEquals($expected, $parsed, 'The URL was not properly parsed.');
@@ -405,9 +409,9 @@ class UrlHelperTest extends TestCase {
* @param string $expected
* The expected encoded path.
*
- * @dataProvider providerTestEncodePath
- * @covers ::encodePath
+ * @legacy-covers ::encodePath
*/
+ #[DataProvider('providerTestEncodePath')]
public function testEncodePath($path, $expected): void {
$encoded = UrlHelper::encodePath($path);
$this->assertEquals($expected, $encoded);
@@ -434,9 +438,9 @@ class UrlHelperTest extends TestCase {
* @param bool $expected
* Expected result.
*
- * @dataProvider providerTestIsExternal
- * @covers ::isExternal
+ * @legacy-covers ::isExternal
*/
+ #[DataProvider('providerTestIsExternal')]
public function testIsExternal($path, $expected): void {
$isExternal = UrlHelper::isExternal($path);
$this->assertEquals($expected, $isExternal);
@@ -494,11 +498,11 @@ class UrlHelperTest extends TestCase {
* @param array $protocols
* Protocols to allow.
*
- * @dataProvider providerTestFilterBadProtocol
- * @covers ::setAllowedProtocols
- * @covers ::filterBadProtocol
- * @runInSeparateProcess
+ * @legacy-covers ::setAllowedProtocols
+ * @legacy-covers ::filterBadProtocol
*/
+ #[DataProvider('providerTestFilterBadProtocol')]
+ #[RunInSeparateProcess]
public function testFilterBadProtocol($uri, $expected, $protocols): void {
UrlHelper::setAllowedProtocols($protocols);
$this->assertEquals($expected, UrlHelper::filterBadProtocol($uri));
@@ -535,11 +539,11 @@ class UrlHelperTest extends TestCase {
* @param array $protocols
* Protocols to allow.
*
- * @dataProvider providerTestStripDangerousProtocols
- * @covers ::setAllowedProtocols
- * @covers ::stripDangerousProtocols
- * @runInSeparateProcess
+ * @legacy-covers ::setAllowedProtocols
+ * @legacy-covers ::stripDangerousProtocols
*/
+ #[DataProvider('providerTestStripDangerousProtocols')]
+ #[RunInSeparateProcess]
public function testStripDangerousProtocols($uri, $expected, $protocols): void {
UrlHelper::setAllowedProtocols($protocols);
$stripped = UrlHelper::stripDangerousProtocols($uri);
@@ -615,9 +619,9 @@ class UrlHelperTest extends TestCase {
* TRUE if an external URL points to this installation as determined by the
* base URL.
*
- * @covers ::externalIsLocal
- * @dataProvider providerTestExternalIsLocal
+ * @legacy-covers ::externalIsLocal
*/
+ #[DataProvider('providerTestExternalIsLocal')]
public function testExternalIsLocal($url, $base_url, $expected): void {
$this->assertSame($expected, UrlHelper::externalIsLocal($url, $base_url));
}
@@ -667,9 +671,9 @@ class UrlHelperTest extends TestCase {
* @param string $base_url
* The base URL.
*
- * @covers ::externalIsLocal
- * @dataProvider providerTestExternalIsLocalInvalid
+ * @legacy-covers ::externalIsLocal
*/
+ #[DataProvider('providerTestExternalIsLocalInvalid')]
public function testExternalIsLocalInvalid($url, $base_url): void {
$this->expectException(\InvalidArgumentException::class);
UrlHelper::externalIsLocal($url, $base_url);
diff --git a/core/tests/Drupal/Tests/Component/Utility/UserAgentTest.php b/core/tests/Drupal/Tests/Component/Utility/UserAgentTest.php
index 601b31956968..467d65d4d36a 100644
--- a/core/tests/Drupal/Tests/Component/Utility/UserAgentTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/UserAgentTest.php
@@ -6,17 +6,17 @@ namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\Random;
use Drupal\Component\Utility\UserAgent;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
// cspell:ignore Teletubbies
-
/**
* Tests bytes size parsing helper methods.
- *
- * @group Utility
- *
- * @coversDefaultClass \Drupal\Component\Utility\UserAgent
*/
+#[CoversClass(UserAgent::class)]
+#[Group('Utility')]
class UserAgentTest extends TestCase {
/**
@@ -71,9 +71,9 @@ class UserAgentTest extends TestCase {
/**
* Tests matching language from user agent.
*
- * @dataProvider providerTestGetBestMatchingLangcode
- * @covers ::getBestMatchingLangcode
+ * @legacy-covers ::getBestMatchingLangcode
*/
+ #[DataProvider('providerTestGetBestMatchingLangcode')]
public function testGetBestMatchingLangcode($accept_language, $expected): void {
$result = UserAgent::getBestMatchingLangcode($accept_language, $this->getLanguages(), $this->getMappings());
$this->assertSame($expected, $result);
diff --git a/core/tests/Drupal/Tests/Component/Utility/VariableTest.php b/core/tests/Drupal/Tests/Component/Utility/VariableTest.php
index 172a9b038781..d00203bfe9cf 100644
--- a/core/tests/Drupal/Tests/Component/Utility/VariableTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/VariableTest.php
@@ -5,16 +5,17 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\Variable;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* Test variable export functionality in Variable component.
- *
- * @group Variable
- * @group Utility
- *
- * @coversDefaultClass \Drupal\Component\Utility\Variable
*/
+#[CoversClass(Variable::class)]
+#[Group('Variable')]
+#[Group('Utility')]
class VariableTest extends TestCase {
/**
@@ -75,10 +76,9 @@ class VariableTest extends TestCase {
* @param string $expected_name
* The expected human-readable name of the callable.
*
- * @dataProvider providerCallableToString
- *
- * @covers ::callableToString
+ * @legacy-covers ::callableToString
*/
+ #[DataProvider('providerCallableToString')]
public function testCallableToString($callable, string $expected_name): void {
$this->assertSame($expected_name, Variable::callableToString($callable));
}
@@ -171,9 +171,9 @@ class VariableTest extends TestCase {
* @param mixed $variable
* The variable to be exported.
*
- * @covers ::export
- * @dataProvider providerTestExport
+ * @legacy-covers ::export
*/
+ #[DataProvider('providerTestExport')]
public function testExport($expected, $variable): void {
$this->assertEquals($expected, Variable::export($variable));
}
diff --git a/core/tests/Drupal/Tests/Component/Utility/XssTest.php b/core/tests/Drupal/Tests/Component/Utility/XssTest.php
index 32f345ac0160..693a75d6f928 100644
--- a/core/tests/Drupal/Tests/Component/Utility/XssTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/XssTest.php
@@ -7,12 +7,15 @@ namespace Drupal\Tests\Component\Utility;
use Drupal\Component\Utility\Html;
use Drupal\Component\Utility\UrlHelper;
use Drupal\Component\Utility\Xss;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
use PHPUnit\Framework\TestCase;
// cspell:ignore ascript barbaz ckers cript CVEs dynsrc fooÿñ msgbox ncript
// cspell:ignore nfocus nmedi nosuchscheme nosuchtag onmediaerror scrscriptipt
// cspell:ignore tascript vbscript
-
/**
* XSS Filtering tests.
*
@@ -21,11 +24,10 @@ use PHPUnit\Framework\TestCase;
* Relevant CVEs:
* - CVE-2002-1806, ~CVE-2005-0682, ~CVE-2005-2106, CVE-2005-3973,
* CVE-2006-1226 (= rev. 1.112?), CVE-2008-0273, CVE-2008-3740.
- *
- * @group Utility
- * @coversDefaultClass \Drupal\Component\Utility\Xss
- * @runTestsInSeparateProcesses
*/
+#[CoversClass(Xss::class)]
+#[Group('Utility')]
+#[RunTestsInSeparateProcesses]
class XssTest extends TestCase {
/**
@@ -66,9 +68,8 @@ class XssTest extends TestCase {
* @param array $allowed_tags
* (optional) The allowed HTML tags to be passed to
* \Drupal\Component\Utility\Xss::filter().
- *
- * @dataProvider providerTestFilterXssNormalized
*/
+ #[DataProvider('providerTestFilterXssNormalized')]
public function testFilterXssNormalized($value, $expected, $message, ?array $allowed_tags = NULL): void {
if ($allowed_tags === NULL) {
$value = Xss::filter($value);
@@ -134,9 +135,8 @@ class XssTest extends TestCase {
* @param array $allowed_tags
* (optional) The allowed HTML tags to be passed to
* \Drupal\Component\Utility\Xss::filter().
- *
- * @dataProvider providerTestFilterXssNotNormalized
*/
+ #[DataProvider('providerTestFilterXssNotNormalized')]
public function testFilterXssNotNormalized($value, $expected, $message, ?array $allowed_tags = NULL): void {
if ($allowed_tags === NULL) {
$value = Xss::filter($value);
@@ -453,9 +453,8 @@ class XssTest extends TestCase {
* The expected result.
* @param string $message
* The assertion message to display upon failure.
- *
- * @dataProvider providerTestInvalidMultiByte
*/
+ #[DataProvider('providerTestInvalidMultiByte')]
public function testInvalidMultiByte($value, $expected, $message): void {
$this->assertEquals(Xss::filter($value), $expected, $message);
}
@@ -490,9 +489,9 @@ class XssTest extends TestCase {
/**
* Check that strings in HTML attributes are correctly processed.
*
- * @covers ::attributes
- * @dataProvider providerTestAttributes
+ * @legacy-covers ::attributes
*/
+ #[DataProvider('providerTestAttributes')]
public function testAttribute($value, $expected, $message, $allowed_tags = NULL): void {
$value = Xss::filter($value, $allowed_tags);
$this->assertEquals($expected, $value, $message);
@@ -589,9 +588,8 @@ class XssTest extends TestCase {
* The expected result.
* @param string $message
* The assertion message to display upon failure.
- *
- * @dataProvider providerTestFilterXssAdminNotNormalized
*/
+ #[DataProvider('providerTestFilterXssAdminNotNormalized')]
public function testFilterXssAdminNotNormalized($value, $expected, $message): void {
$this->assertNotNormalized(Xss::filterAdmin($value), $expected, $message);
}
diff --git a/core/tests/Drupal/Tests/Component/Uuid/UuidTest.php b/core/tests/Drupal/Tests/Component/Uuid/UuidTest.php
index 1d1f0b402322..26eeed78544d 100644
--- a/core/tests/Drupal/Tests/Component/Uuid/UuidTest.php
+++ b/core/tests/Drupal/Tests/Component/Uuid/UuidTest.php
@@ -4,34 +4,33 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Uuid;
-use Drupal\Component\Uuid\Uuid;
-use Drupal\Component\Uuid\UuidInterface;
use Drupal\Component\Uuid\Com;
use Drupal\Component\Uuid\Pecl;
use Drupal\Component\Uuid\Php;
+use Drupal\Component\Uuid\Uuid;
+use Drupal\Component\Uuid\UuidInterface;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
* Tests the handling of Universally Unique Identifiers (UUIDs).
- *
- * @group Uuid
*/
+#[Group('Uuid')]
class UuidTest extends TestCase {
/**
* Tests generating valid UUIDs.
- *
- * @dataProvider providerUuidInstances
*/
+ #[DataProvider('providerUuidInstances')]
public function testGenerateUuid(UuidInterface $instance): void {
$this->assertTrue(Uuid::isValid($instance->generate()), sprintf('UUID generation for %s works.', get_class($instance)));
}
/**
* Tests that generated UUIDs are unique.
- *
- * @dataProvider providerUuidInstances
*/
+ #[DataProvider('providerUuidInstances')]
public function testUuidIsUnique(UuidInterface $instance): void {
$this->assertNotEquals($instance->generate(), $instance->generate(), sprintf('Same UUID was not generated twice with %s.', get_class($instance)));
}
@@ -69,9 +68,8 @@ class UuidTest extends TestCase {
* Whether the uuid is valid or not.
* @param string $message
* The message to display on failure.
- *
- * @dataProvider providerTestValidation
*/
+ #[DataProvider('providerTestValidation')]
public function testValidation($uuid, $is_valid, $message): void {
$this->assertSame($is_valid, Uuid::isValid($uuid), $message);
}
diff --git a/core/tests/Drupal/Tests/Component/Version/ConstraintTest.php b/core/tests/Drupal/Tests/Component/Version/ConstraintTest.php
index 78109e573f0a..566a2d207a1e 100644
--- a/core/tests/Drupal/Tests/Component/Version/ConstraintTest.php
+++ b/core/tests/Drupal/Tests/Component/Version/ConstraintTest.php
@@ -5,18 +5,22 @@ declare(strict_types=1);
namespace Drupal\Tests\Component\Version;
use Drupal\Component\Version\Constraint;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\DataProvider;
+use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;
/**
- * @coversDefaultClass \Drupal\Component\Version\Constraint
- * @group Version
+ * Tests Drupal\Component\Version\Constraint.
*/
+#[CoversClass(Constraint::class)]
+#[Group('Version')]
class ConstraintTest extends TestCase {
/**
- * @covers ::isCompatible
- * @dataProvider providerIsCompatible
+ * @legacy-covers ::isCompatible
*/
+ #[DataProvider('providerIsCompatible')]
public function testIsCompatible(Constraint $version_info, string $current_version, bool $result): void {
$this->assertSame($result, $version_info->isCompatible($current_version));
}