@@ -22,8 +22,8 @@ class DeprecationProviderTest extends PHPStanTestCase
2222
2323 public function testCustomDeprecations (): void
2424 {
25- if (PHP_VERSION_ID < 80100 ) {
26- self ::markTestSkipped ('PHP 8.1 + is required to test enums . ' );
25+ if (PHP_VERSION_ID < 80000 ) {
26+ self ::markTestSkipped ('PHP 8.0 + is required as CustomDeprecationProvider uses unions . ' );
2727 }
2828
2929 require __DIR__ . '/data/deprecations.php ' ;
@@ -59,24 +59,6 @@ public function testCustomDeprecations(): void
5959 $ scopeForDoubleDeprecatedClassOnlyNativeMessage = $ scopeFactory ->create (ScopeContext::create ('dummy.php ' )->enterClass ($ doubleDeprecatedClassOnlyPhpDocMessage ));
6060 $ scopeForDoubleDeprecatedClassOnlyCustomMessage = $ scopeFactory ->create (ScopeContext::create ('dummy.php ' )->enterClass ($ doubleDeprecatedClassOnlyAttributeMessage ));
6161
62- // enum cases
63- $ myEnum = $ reflectionProvider ->getClass (MyDeprecatedEnum::class);
64-
65- self ::assertTrue ($ myEnum ->isDeprecated ());
66- self ::assertNull ($ myEnum ->getDeprecatedDescription ());
67-
68- self ::assertTrue ($ myEnum ->getEnumCase ('CustomDeprecated ' )->isDeprecated ()->yes ());
69- self ::assertSame ('custom ' , $ myEnum ->getEnumCase ('CustomDeprecated ' )->getDeprecatedDescription ());
70-
71- self ::assertTrue ($ myEnum ->getEnumCase ('NativeDeprecated ' )->isDeprecated ()->yes ());
72- self ::assertSame ('native ' , $ myEnum ->getEnumCase ('NativeDeprecated ' )->getDeprecatedDescription ());
73-
74- self ::assertTrue ($ myEnum ->getEnumCase ('PhpDocDeprecated ' )->isDeprecated ()->yes ());
75- self ::assertNull ($ myEnum ->getEnumCase ('PhpDocDeprecated ' )->getDeprecatedDescription ()); // this should not be null
76-
77- self ::assertFalse ($ myEnum ->getEnumCase ('NotDeprecated ' )->isDeprecated ()->yes ());
78- self ::assertNull ($ myEnum ->getEnumCase ('NotDeprecated ' )->getDeprecatedDescription ());
79-
8062 // class
8163 self ::assertFalse ($ notDeprecatedClass ->isDeprecated ());
8264 self ::assertNull ($ notDeprecatedClass ->getDeprecatedDescription ());
@@ -203,6 +185,34 @@ public function testCustomDeprecations(): void
203185 self ::assertSame ('attribute ' , $ doubleDeprecatedFunctionOnlyAttributeMessage ->getDeprecatedDescription ());
204186 }
205187
188+ public function testCustomDeprecationsOfEnumCases (): void
189+ {
190+ if (PHP_VERSION_ID < 80100 ) {
191+ self ::markTestSkipped ('PHP 8.1+ is required to test enums. ' );
192+ }
193+
194+ require __DIR__ . '/data/deprecations-enums.php ' ;
195+
196+ $ reflectionProvider = self ::createReflectionProvider ();
197+
198+ $ myEnum = $ reflectionProvider ->getClass (MyDeprecatedEnum::class);
199+
200+ self ::assertTrue ($ myEnum ->isDeprecated ());
201+ self ::assertNull ($ myEnum ->getDeprecatedDescription ());
202+
203+ self ::assertTrue ($ myEnum ->getEnumCase ('CustomDeprecated ' )->isDeprecated ()->yes ());
204+ self ::assertSame ('custom ' , $ myEnum ->getEnumCase ('CustomDeprecated ' )->getDeprecatedDescription ());
205+
206+ self ::assertTrue ($ myEnum ->getEnumCase ('NativeDeprecated ' )->isDeprecated ()->yes ());
207+ self ::assertSame ('native ' , $ myEnum ->getEnumCase ('NativeDeprecated ' )->getDeprecatedDescription ());
208+
209+ self ::assertTrue ($ myEnum ->getEnumCase ('PhpDocDeprecated ' )->isDeprecated ()->yes ());
210+ self ::assertNull ($ myEnum ->getEnumCase ('PhpDocDeprecated ' )->getDeprecatedDescription ()); // this should not be null
211+
212+ self ::assertFalse ($ myEnum ->getEnumCase ('NotDeprecated ' )->isDeprecated ()->yes ());
213+ self ::assertNull ($ myEnum ->getEnumCase ('NotDeprecated ' )->getDeprecatedDescription ());
214+ }
215+
206216 public static function getAdditionalConfigFiles (): array
207217 {
208218 return [
0 commit comments