Skip to content

Commit df08b7b

Browse files
nikophilsebastianbergmann
authored andcommitted
tests: add tests for #[IgnorePHPUnitWarnings]
1 parent afb35c9 commit df08b7b

File tree

7 files changed

+173
-2
lines changed

7 files changed

+173
-2
lines changed

src/Event/Emitter/DispatchingEmitter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1014,7 +1014,7 @@ public function testTriggeredPhpunitWarning(Code\Test $test, string $message): v
10141014
if (
10151015
$test->isTestMethod() &&
10161016
class_exists($test->className()) &&
1017-
($metadata = Registry::parser()->forMethod($test->className(), $test->methodName())->isIgnoreWarnings())->isNotEmpty() &&
1017+
($metadata = Registry::parser()->forMethod($test->className(), $test->methodName())->isIgnorePHPUnitWarnings())->isNotEmpty() &&
10181018
($ignoreWarnings = $metadata->asArray()[0] ?? null) !== null &&
10191019
$ignoreWarnings instanceof IgnorePHPUnitWarnings &&
10201020
$ignoreWarnings->shouldIgnore($message)

src/Metadata/MetadataCollection.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -641,7 +641,7 @@ public function isWithoutErrorHandler(): self
641641
);
642642
}
643643

644-
public function isIgnoreWarnings(): self
644+
public function isIgnorePHPUnitWarnings(): self
645645
{
646646
return new self(
647647
...array_filter(
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php declare(strict_types=1);
2+
/*
3+
* This file is part of PHPUnit.
4+
*
5+
* (c) Sebastian Bergmann <[email protected]>
6+
*
7+
* For the full copyright and license information, please view the LICENSE
8+
* file that was distributed with this source code.
9+
*/
10+
namespace PHPUnit\TestFixture\Metadata\Attribute;
11+
12+
use PHPUnit\Framework\Attributes\IgnorePHPUnitWarnings;
13+
use PHPUnit\Framework\TestCase;
14+
15+
final class IgnorePHPUnitWarningsTest extends TestCase
16+
{
17+
#[IgnorePHPUnitWarnings]
18+
public function testOne(): void
19+
{
20+
$this->assertTrue(true);
21+
}
22+
23+
#[IgnorePHPUnitWarnings('warning.*pattern')]
24+
public function testTwo(): void
25+
{
26+
$this->assertTrue(true);
27+
}
28+
29+
#[IgnorePHPUnitWarnings('exact message')]
30+
public function testThree(): void
31+
{
32+
$this->assertTrue(true);
33+
}
34+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php declare(strict_types=1);
2+
/*
3+
* This file is part of PHPUnit.
4+
*
5+
* (c) Sebastian Bergmann <[email protected]>
6+
*
7+
* For the full copyright and license information, please view the LICENSE
8+
* file that was distributed with this source code.
9+
*/
10+
namespace PHPUnit\Metadata;
11+
12+
use PHPUnit\Framework\Attributes\CoversClass;
13+
use PHPUnit\Framework\Attributes\DataProvider;
14+
use PHPUnit\Framework\Attributes\Small;
15+
use PHPUnit\Framework\TestCase;
16+
17+
#[CoversClass(IgnorePHPUnitWarnings::class)]
18+
#[Small]
19+
final class IgnorePHPUnitWarningsTest extends TestCase
20+
{
21+
public static function shouldIgnoreProvider(): array
22+
{
23+
return [
24+
'null pattern ignores any message' => [null, 'any warning message', true],
25+
'pattern matches message' => ['warning.*message', 'warning test message', true],
26+
'pattern does not match different message' => ['warning.*message', 'different message', false],
27+
'exact match works' => ['exact warning message', 'exact warning message', true],
28+
'exact match does not match different' => ['exact warning message', 'different warning message', false],
29+
];
30+
}
31+
32+
#[DataProvider('shouldIgnoreProvider')]
33+
public function testShouldIgnore(?string $messagePattern, string $message, bool $expected): void
34+
{
35+
$metadata = Metadata::ignorePHPUnitWarnings($messagePattern);
36+
37+
$this->assertSame($expected, $metadata->shouldIgnore($message));
38+
}
39+
}

tests/unit/Metadata/MetadataTest.php

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ public function testCanBeAfter(): void
8080
$this->assertFalse($metadata->isUsesMethod());
8181
$this->assertFalse($metadata->isUsesTrait());
8282
$this->assertFalse($metadata->isWithoutErrorHandler());
83+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
8384

8485
$this->assertTrue($metadata->isMethodLevel());
8586
$this->assertFalse($metadata->isClassLevel());
@@ -141,6 +142,7 @@ public function testCanBeAfterClass(): void
141142
$this->assertFalse($metadata->isUsesMethod());
142143
$this->assertFalse($metadata->isUsesTrait());
143144
$this->assertFalse($metadata->isWithoutErrorHandler());
145+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
144146

145147
$this->assertTrue($metadata->isMethodLevel());
146148
$this->assertFalse($metadata->isClassLevel());
@@ -202,6 +204,7 @@ public function testCanBeBackupGlobalsOnClass(): void
202204
$this->assertFalse($metadata->isUsesMethod());
203205
$this->assertFalse($metadata->isUsesTrait());
204206
$this->assertFalse($metadata->isWithoutErrorHandler());
207+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
205208

206209
$this->assertFalse($metadata->enabled());
207210
$this->assertTrue($metadata->isClassLevel());
@@ -264,6 +267,7 @@ public function testCanBeBackupGlobalsOnMethod(): void
264267
$this->assertFalse($metadata->isUsesMethod());
265268
$this->assertFalse($metadata->isUsesTrait());
266269
$this->assertFalse($metadata->isWithoutErrorHandler());
270+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
267271

268272
$this->assertFalse($metadata->enabled());
269273
$this->assertTrue($metadata->isMethodLevel());
@@ -326,6 +330,7 @@ public function testCanBeBackupStaticPropertiesOnClass(): void
326330
$this->assertFalse($metadata->isUsesMethod());
327331
$this->assertFalse($metadata->isUsesTrait());
328332
$this->assertFalse($metadata->isWithoutErrorHandler());
333+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
329334

330335
$this->assertFalse($metadata->enabled());
331336
$this->assertTrue($metadata->isClassLevel());
@@ -388,6 +393,7 @@ public function testCanBeBackupStaticPropertiesOnMethod(): void
388393
$this->assertFalse($metadata->isUsesMethod());
389394
$this->assertFalse($metadata->isUsesTrait());
390395
$this->assertFalse($metadata->isWithoutErrorHandler());
396+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
391397

392398
$this->assertFalse($metadata->enabled());
393399
$this->assertTrue($metadata->isMethodLevel());
@@ -450,6 +456,7 @@ public function testCanBeBeforeClass(): void
450456
$this->assertFalse($metadata->isUsesMethod());
451457
$this->assertFalse($metadata->isUsesTrait());
452458
$this->assertFalse($metadata->isWithoutErrorHandler());
459+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
453460

454461
$this->assertTrue($metadata->isMethodLevel());
455462
$this->assertFalse($metadata->isClassLevel());
@@ -510,6 +517,7 @@ public function testCanBeBefore(): void
510517
$this->assertFalse($metadata->isUsesMethod());
511518
$this->assertFalse($metadata->isUsesTrait());
512519
$this->assertFalse($metadata->isWithoutErrorHandler());
520+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
513521

514522
$this->assertTrue($metadata->isMethodLevel());
515523
$this->assertFalse($metadata->isClassLevel());
@@ -571,6 +579,7 @@ public function testCanBeCoversClass(): void
571579
$this->assertFalse($metadata->isUsesMethod());
572580
$this->assertFalse($metadata->isUsesTrait());
573581
$this->assertFalse($metadata->isWithoutErrorHandler());
582+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
574583

575584
$this->assertSame(self::class, $metadata->className());
576585

@@ -636,6 +645,7 @@ public function testCanBeCoversNamespace(): void
636645
$this->assertFalse($metadata->isUsesMethod());
637646
$this->assertFalse($metadata->isUsesTrait());
638647
$this->assertFalse($metadata->isWithoutErrorHandler());
648+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
639649

640650
$this->assertSame($namespace, $metadata->namespace());
641651

@@ -699,6 +709,7 @@ public function testCanBeCoversClassesThatExtendClass(): void
699709
$this->assertFalse($metadata->isUsesMethod());
700710
$this->assertFalse($metadata->isUsesTrait());
701711
$this->assertFalse($metadata->isWithoutErrorHandler());
712+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
702713

703714
$this->assertSame(self::class, $metadata->className());
704715

@@ -762,6 +773,7 @@ public function testCanBeCoversClassesThatImplementInterface(): void
762773
$this->assertFalse($metadata->isUsesMethod());
763774
$this->assertFalse($metadata->isUsesTrait());
764775
$this->assertFalse($metadata->isWithoutErrorHandler());
776+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
765777

766778
$this->assertSame(self::class, $metadata->interfaceName());
767779

@@ -784,6 +796,7 @@ public function testCanBeCoversFunction(): void
784796
$this->assertFalse($metadata->isCoversClassesThatExtendClass());
785797
$this->assertFalse($metadata->isCoversClassesThatImplementInterface());
786798
$this->assertTrue($metadata->isCoversFunction());
799+
$this->assertFalse($metadata->isCoversMethod());
787800
$this->assertFalse($metadata->isCoversNothing());
788801
$this->assertFalse($metadata->isCoversTrait());
789802
$this->assertFalse($metadata->isDataProvider());
@@ -824,6 +837,7 @@ public function testCanBeCoversFunction(): void
824837
$this->assertFalse($metadata->isUsesMethod());
825838
$this->assertFalse($metadata->isUsesTrait());
826839
$this->assertFalse($metadata->isWithoutErrorHandler());
840+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
827841

828842
$this->assertSame('f', $metadata->functionName());
829843

@@ -887,6 +901,7 @@ public function testCanBeCoversMethod(): void
887901
$this->assertFalse($metadata->isUsesMethod());
888902
$this->assertFalse($metadata->isUsesTrait());
889903
$this->assertFalse($metadata->isWithoutErrorHandler());
904+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
890905

891906
$this->assertSame(self::class, $metadata->className());
892907
$this->assertSame('testCanBeCoversMethod', $metadata->methodName());
@@ -912,6 +927,7 @@ public function testCanBeCoversNothingOnMethod(): void
912927
$this->assertFalse($metadata->isCoversFunction());
913928
$this->assertFalse($metadata->isCoversMethod());
914929
$this->assertTrue($metadata->isCoversNothing());
930+
$this->assertFalse($metadata->isCoversTrait());
915931
$this->assertFalse($metadata->isDataProvider());
916932
$this->assertFalse($metadata->isDependsOnClass());
917933
$this->assertFalse($metadata->isDependsOnMethod());
@@ -950,6 +966,7 @@ public function testCanBeCoversNothingOnMethod(): void
950966
$this->assertFalse($metadata->isUsesMethod());
951967
$this->assertFalse($metadata->isUsesTrait());
952968
$this->assertFalse($metadata->isWithoutErrorHandler());
969+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
953970

954971
$this->assertTrue($metadata->isMethodLevel());
955972
$this->assertFalse($metadata->isClassLevel());
@@ -972,6 +989,7 @@ public function testCanBeCoversNothingOnClass(): void
972989
$this->assertFalse($metadata->isCoversFunction());
973990
$this->assertFalse($metadata->isCoversMethod());
974991
$this->assertTrue($metadata->isCoversNothing());
992+
$this->assertFalse($metadata->isCoversTrait());
975993
$this->assertFalse($metadata->isDataProvider());
976994
$this->assertFalse($metadata->isDependsOnClass());
977995
$this->assertFalse($metadata->isDependsOnMethod());
@@ -1010,6 +1028,7 @@ public function testCanBeCoversNothingOnClass(): void
10101028
$this->assertFalse($metadata->isUsesMethod());
10111029
$this->assertFalse($metadata->isUsesTrait());
10121030
$this->assertFalse($metadata->isWithoutErrorHandler());
1031+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
10131032

10141033
$this->assertTrue($metadata->isClassLevel());
10151034
$this->assertFalse($metadata->isMethodLevel());
@@ -1071,6 +1090,7 @@ public function testCanBeCoversTrait(): void
10711090
$this->assertFalse($metadata->isUsesMethod());
10721091
$this->assertFalse($metadata->isUsesTrait());
10731092
$this->assertFalse($metadata->isWithoutErrorHandler());
1093+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
10741094

10751095
$this->assertSame(ExampleTrait::class, $metadata->traitName());
10761096

@@ -1134,6 +1154,7 @@ public function testCanBeDataProvider(): void
11341154
$this->assertFalse($metadata->isUsesMethod());
11351155
$this->assertFalse($metadata->isUsesTrait());
11361156
$this->assertFalse($metadata->isWithoutErrorHandler());
1157+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
11371158

11381159
$this->assertSame(self::class, $metadata->className());
11391160
$this->assertSame('method', $metadata->methodName());
@@ -1198,6 +1219,7 @@ public function testCanBeDependsOnClass(): void
11981219
$this->assertFalse($metadata->isUsesMethod());
11991220
$this->assertFalse($metadata->isUsesTrait());
12001221
$this->assertFalse($metadata->isWithoutErrorHandler());
1222+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
12011223

12021224
$this->assertSame(self::class, $metadata->className());
12031225
$this->assertFalse($metadata->deepClone());
@@ -1263,6 +1285,7 @@ public function testCanBeDependsOnMethod(): void
12631285
$this->assertFalse($metadata->isUsesMethod());
12641286
$this->assertFalse($metadata->isUsesTrait());
12651287
$this->assertFalse($metadata->isWithoutErrorHandler());
1288+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
12661289

12671290
$this->assertSame(self::class, $metadata->className());
12681291
$this->assertSame('method', $metadata->methodName());
@@ -1329,6 +1352,7 @@ public function testCanBeDisableReturnValueGenerationForTestDoubles(): void
13291352
$this->assertFalse($metadata->isUsesMethod());
13301353
$this->assertFalse($metadata->isUsesTrait());
13311354
$this->assertFalse($metadata->isWithoutErrorHandler());
1355+
$this->assertFalse($metadata->isIgnorePHPUnitWarnings());
13321356

13331357
$this->assertTrue($metadata->isClassLevel());
13341358
$this->assertFalse($metadata->isMethodLevel());
@@ -4759,6 +4783,68 @@ public function testCanBeUsesTrait(): void
47594783
$this->assertFalse($metadata->isMethodLevel());
47604784
}
47614785

4786+
public function testCanBeIgnorePHPUnitWarnings(): void
4787+
{
4788+
$metadata = Metadata::ignorePHPUnitWarnings(null);
4789+
4790+
$this->assertFalse($metadata->isAfter());
4791+
$this->assertFalse($metadata->isAfterClass());
4792+
$this->assertFalse($metadata->isBackupGlobals());
4793+
$this->assertFalse($metadata->isBackupStaticProperties());
4794+
$this->assertFalse($metadata->isBeforeClass());
4795+
$this->assertFalse($metadata->isBefore());
4796+
$this->assertFalse($metadata->isCoversNamespace());
4797+
$this->assertFalse($metadata->isCoversClass());
4798+
$this->assertFalse($metadata->isCoversClassesThatExtendClass());
4799+
$this->assertFalse($metadata->isCoversClassesThatImplementInterface());
4800+
$this->assertFalse($metadata->isCoversFunction());
4801+
$this->assertFalse($metadata->isCoversMethod());
4802+
$this->assertFalse($metadata->isCoversNothing());
4803+
$this->assertFalse($metadata->isCoversTrait());
4804+
$this->assertFalse($metadata->isDataProvider());
4805+
$this->assertFalse($metadata->isDependsOnClass());
4806+
$this->assertFalse($metadata->isDependsOnMethod());
4807+
$this->assertFalse($metadata->isDisableReturnValueGenerationForTestDoubles());
4808+
$this->assertFalse($metadata->isDoesNotPerformAssertions());
4809+
$this->assertFalse($metadata->isExcludeGlobalVariableFromBackup());
4810+
$this->assertFalse($metadata->isExcludeStaticPropertyFromBackup());
4811+
$this->assertFalse($metadata->isGroup());
4812+
$this->assertFalse($metadata->isIgnoreDeprecations());
4813+
$this->assertFalse($metadata->isIgnorePhpunitDeprecations());
4814+
$this->assertFalse($metadata->isRunClassInSeparateProcess());
4815+
$this->assertFalse($metadata->isRunInSeparateProcess());
4816+
$this->assertFalse($metadata->isRunTestsInSeparateProcesses());
4817+
$this->assertFalse($metadata->isTest());
4818+
$this->assertFalse($metadata->isPreCondition());
4819+
$this->assertFalse($metadata->isPostCondition());
4820+
$this->assertFalse($metadata->isPreserveGlobalState());
4821+
$this->assertFalse($metadata->isRequiresMethod());
4822+
$this->assertFalse($metadata->isRequiresFunction());
4823+
$this->assertFalse($metadata->isRequiresOperatingSystem());
4824+
$this->assertFalse($metadata->isRequiresOperatingSystemFamily());
4825+
$this->assertFalse($metadata->isRequiresPhp());
4826+
$this->assertFalse($metadata->isRequiresPhpExtension());
4827+
$this->assertFalse($metadata->isRequiresPhpunit());
4828+
$this->assertFalse($metadata->isRequiresPhpunitExtension());
4829+
$this->assertFalse($metadata->isRequiresEnvironmentVariable());
4830+
$this->assertFalse($metadata->isWithEnvironmentVariable());
4831+
$this->assertFalse($metadata->isRequiresSetting());
4832+
$this->assertFalse($metadata->isTestDox());
4833+
$this->assertFalse($metadata->isTestWith());
4834+
$this->assertFalse($metadata->isUsesNamespace());
4835+
$this->assertFalse($metadata->isUsesClass());
4836+
$this->assertFalse($metadata->isUsesClassesThatExtendClass());
4837+
$this->assertFalse($metadata->isUsesClassesThatImplementInterface());
4838+
$this->assertFalse($metadata->isUsesFunction());
4839+
$this->assertFalse($metadata->isUsesMethod());
4840+
$this->assertFalse($metadata->isUsesTrait());
4841+
$this->assertFalse($metadata->isWithoutErrorHandler());
4842+
$this->assertTrue($metadata->isIgnorePHPUnitWarnings());
4843+
4844+
$this->assertTrue($metadata->isMethodLevel());
4845+
$this->assertFalse($metadata->isClassLevel());
4846+
}
4847+
47624848
public function testCanBeWithoutErrorHandler(): void
47634849
{
47644850
$metadata = Metadata::withoutErrorHandler();

tests/unit/Metadata/Parser/AttributeParserTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
use PHPUnit\Framework\Attributes\ExcludeGlobalVariableFromBackup;
3939
use PHPUnit\Framework\Attributes\ExcludeStaticPropertyFromBackup;
4040
use PHPUnit\Framework\Attributes\Group;
41+
use PHPUnit\Framework\Attributes\IgnorePHPUnitWarnings;
4142
use PHPUnit\Framework\Attributes\Large;
4243
use PHPUnit\Framework\Attributes\Medium;
4344
use PHPUnit\Framework\Attributes\PostCondition;
@@ -139,6 +140,7 @@
139140
#[CoversClass(UsesTrait::class)]
140141
#[CoversClass(WithEnvironmentVariable::class)]
141142
#[CoversClass(WithoutErrorHandler::class)]
143+
#[CoversClass(IgnorePHPUnitWarnings::class)]
142144
#[Small]
143145
#[Group('metadata')]
144146
#[Group('metadata/attributes')]

tests/unit/Metadata/Parser/AttributeParserTestCase.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
use PHPUnit\TestFixture\Metadata\Attribute\IgnoreDeprecationsMethodTest;
4242
use PHPUnit\TestFixture\Metadata\Attribute\IgnorePhpunitDeprecationsClassTest;
4343
use PHPUnit\TestFixture\Metadata\Attribute\IgnorePhpunitDeprecationsMethodTest;
44+
use PHPUnit\TestFixture\Metadata\Attribute\IgnorePHPUnitWarningsTest;
4445
use PHPUnit\TestFixture\Metadata\Attribute\LargeTest;
4546
use PHPUnit\TestFixture\Metadata\Attribute\MediumTest;
4647
use PHPUnit\TestFixture\Metadata\Attribute\NonPhpunitAttributeTest;
@@ -834,6 +835,15 @@ public function test_parses_IgnorePhpunitDeprecations_attribute_on_method(): voi
834835
$this->assertTrue($metadata->asArray()[0]->isIgnorePhpunitDeprecations());
835836
}
836837

838+
#[TestDox('Parses #[IgnorePHPUnitWarnings] attribute on method')]
839+
public function test_parses_IgnorePHPUnitWarnings_attribute_on_method(): void
840+
{
841+
$metadata = $this->parser()->forMethod(IgnorePHPUnitWarningsTest::class, 'testOne')->isIgnorePHPUnitWarnings();
842+
843+
$this->assertCount(1, $metadata);
844+
$this->assertTrue($metadata->asArray()[0]->isIgnorePHPUnitWarnings());
845+
}
846+
837847
#[TestDox('Parses #[PostCondition] attribute on method')]
838848
public function test_parses_PostCondition_attribute_on_method(): void
839849
{

0 commit comments

Comments
 (0)