Skip to content

Commit 300af89

Browse files
committed
Upgrade Psalm to v6, mark classes in src as soft @final and test classes as final.
Expands baseline with possibly false-able calls to `ini_get` Signed-off-by: George Steel <[email protected]>
1 parent ab7cafd commit 300af89

File tree

7 files changed

+99
-77
lines changed

7 files changed

+99
-77
lines changed

psalm-baseline.xml

Lines changed: 47 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<files psalm-version="5.11.0@c9b192ab8400fdaf04b2b13d110575adc879aa90">
2+
<files psalm-version="6.13.1@1e3b7f0a8ab32b23197b91107adc0a7ed8a05b51">
33
<file src="src/PhpSessionPersistence.php">
44
<MixedArgument>
55
<code><![CDATA[$session->getId()]]></code>
@@ -8,8 +8,20 @@
88
<code><![CDATA[$session->toArray()]]></code>
99
</MixedArgumentTypeCoercion>
1010
<MixedAssignment>
11-
<code>$id</code>
11+
<code><![CDATA[$id]]></code>
1212
</MixedAssignment>
13+
<PossiblyFalsePropertyAssignmentValue>
14+
<code><![CDATA[$sessionConfig['cache_limiter'] ?? ini_get('session.cache_limiter')]]></code>
15+
<code><![CDATA[$sessionConfig['cookie_domain'] ?? ini_get('session.cookie_domain')]]></code>
16+
<code><![CDATA[$sessionConfig['cookie_path'] ?? ini_get('session.cookie_path')]]></code>
17+
<code><![CDATA[$sessionConfig['cookie_samesite'] ?? ini_get('session.cookie_samesite')]]></code>
18+
<code><![CDATA[$sessionConfig['name'] ?? ini_get('session.name')]]></code>
19+
<code><![CDATA[ini_get('session.cache_limiter')]]></code>
20+
<code><![CDATA[ini_get('session.cookie_domain')]]></code>
21+
<code><![CDATA[ini_get('session.cookie_path')]]></code>
22+
<code><![CDATA[ini_get('session.cookie_samesite')]]></code>
23+
<code><![CDATA[ini_get('session.name')]]></code>
24+
</PossiblyFalsePropertyAssignmentValue>
1325
<PossiblyNullPropertyAssignmentValue>
1426
<code><![CDATA[filter_var(
1527
ini_get('session.cookie_httponly'),
@@ -23,78 +35,71 @@
2335
)]]></code>
2436
</PossiblyNullPropertyAssignmentValue>
2537
<UndefinedInterfaceMethod>
26-
<code>getId</code>
27-
<code>getId</code>
38+
<code><![CDATA[getId]]></code>
39+
<code><![CDATA[getId]]></code>
2840
</UndefinedInterfaceMethod>
2941
</file>
3042
<file src="test/ConfigProviderTest.php">
3143
<RedundantCondition>
32-
<code>assertIsArray</code>
44+
<code><![CDATA[assertIsArray]]></code>
3345
</RedundantCondition>
3446
</file>
3547
<file src="test/PhpSessionPersistenceFactoryTest.php">
3648
<InternalMethod>
37-
<code>isDeleteCookieOnEmptySession</code>
38-
<code>isNonLocking</code>
49+
<code><![CDATA[isDeleteCookieOnEmptySession]]></code>
50+
<code><![CDATA[isNonLocking]]></code>
3951
</InternalMethod>
40-
<PossiblyUnusedMethod>
41-
<code>configProvider</code>
42-
</PossiblyUnusedMethod>
4352
</file>
4453
<file src="test/PhpSessionPersistenceTest.php">
45-
<InternalMethod>
46-
<code>PhpSessionPersistence::fromConfigArray($session)</code>
47-
<code>PhpSessionPersistence::fromConfigArray($session)</code>
48-
<code>PhpSessionPersistence::fromConfigArray($session)</code>
49-
<code>PhpSessionPersistence::fromConfigArray($session)</code>
50-
<code>PhpSessionPersistence::fromConfigArray($session)</code>
51-
</InternalMethod>
5254
<ArgumentTypeCoercion>
53-
<code>$request</code>
54-
<code>$request</code>
55+
<code><![CDATA[$request]]></code>
56+
<code><![CDATA[$request]]></code>
5557
</ArgumentTypeCoercion>
58+
<InternalMethod>
59+
<code><![CDATA[PhpSessionPersistence::fromConfigArray($session)]]></code>
60+
<code><![CDATA[PhpSessionPersistence::fromConfigArray($session)]]></code>
61+
<code><![CDATA[PhpSessionPersistence::fromConfigArray($session)]]></code>
62+
<code><![CDATA[PhpSessionPersistence::fromConfigArray($session)]]></code>
63+
<code><![CDATA[PhpSessionPersistence::fromConfigArray($session)]]></code>
64+
</InternalMethod>
5665
<InvalidArgument>
57-
<code>$originalLifetime</code>
66+
<code><![CDATA[$originalLifetime]]></code>
5867
</InvalidArgument>
5968
<MixedArgument>
6069
<code><![CDATA[$setCookie->getValue()]]></code>
6170
<code><![CDATA[$setCookie->getValue()]]></code>
62-
<code>$value</code>
71+
<code><![CDATA[$value]]></code>
6372
</MixedArgument>
6473
<MixedArgumentTypeCoercion>
65-
<code>$key</code>
74+
<code><![CDATA[$key]]></code>
6675
</MixedArgumentTypeCoercion>
6776
<MixedAssignment>
68-
<code>$setCookie</code>
69-
<code>$value</code>
70-
<code>$value</code>
77+
<code><![CDATA[$setCookie]]></code>
78+
<code><![CDATA[$value]]></code>
79+
<code><![CDATA[$value]]></code>
7180
</MixedAssignment>
7281
<MixedMethodCall>
73-
<code>getHttpOnly</code>
74-
<code>getSecure</code>
75-
<code>getValue</code>
76-
<code>getValue</code>
82+
<code><![CDATA[getHttpOnly]]></code>
83+
<code><![CDATA[getSecure]]></code>
84+
<code><![CDATA[getValue]]></code>
85+
<code><![CDATA[getValue]]></code>
7786
</MixedMethodCall>
7887
<NullArgument>
79-
<code>$_SESSION</code>
88+
<code><![CDATA[$_SESSION]]></code>
8089
</NullArgument>
8190
<NullArrayAccess>
82-
<code>$_SESSION[$name]</code>
91+
<code><![CDATA[$_SESSION[$name]]]></code>
8392
</NullArrayAccess>
84-
<PossiblyUnusedMethod>
85-
<code>cookieSettingsProvider</code>
86-
<code>sameSitePossibleValues</code>
87-
</PossiblyUnusedMethod>
8893
<TypeDoesNotContainType>
89-
<code>assertSame</code>
94+
<code><![CDATA[assertSame]]></code>
9095
</TypeDoesNotContainType>
9196
<UndefinedInterfaceMethod>
92-
<code>getId</code>
93-
<code>getId</code>
94-
<code>getId</code>
95-
<code>getId</code>
96-
<code>persistSessionFor</code>
97-
<code>persistSessionFor</code>
97+
<code><![CDATA[getId]]></code>
98+
<code><![CDATA[getId]]></code>
99+
<code><![CDATA[getId]]></code>
100+
<code><![CDATA[getId]]></code>
101+
<code><![CDATA[persistSessionFor]]></code>
102+
<code><![CDATA[persistSessionFor]]></code>
98103
</UndefinedInterfaceMethod>
99104
</file>
100105
</files>

psalm.xml

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,12 @@
1818
</projectFiles>
1919

2020
<issueHandlers>
21-
<InternalMethod>
21+
<MissingOverrideAttribute>
2222
<errorLevel type="suppress">
23-
<referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::method"/>
23+
<directory name="src" />
24+
<directory name="test" />
2425
</errorLevel>
25-
<errorLevel type="suppress">
26-
<referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::willReturn"/>
27-
</errorLevel>
28-
<errorLevel type="suppress">
29-
<referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::with"/>
30-
</errorLevel>
31-
</InternalMethod>
26+
</MissingOverrideAttribute>
3227
</issueHandlers>
3328
<plugins>
3429
<pluginClass class="Psalm\PhpUnitPlugin\Plugin"/>

src/ConfigProvider.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use Mezzio\Session\SessionPersistenceInterface;
88

9+
/** @final */
910
class ConfigProvider
1011
{
1112
public function __invoke(): array

src/PhpSessionPersistence.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
* cookie_httponly?: bool,
5858
* cookie_samesite?: string,
5959
* }
60+
* @final
6061
*/
6162
class PhpSessionPersistence implements InitializePersistenceIdInterface, SessionPersistenceInterface
6263
{

test/ConfigProviderTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use PHPUnit\Framework\Attributes\Depends;
99
use PHPUnit\Framework\TestCase;
1010

11-
class ConfigProviderTest extends TestCase
11+
final class ConfigProviderTest extends TestCase
1212
{
1313
private ConfigProvider $provider;
1414

test/PhpSessionPersistenceFactoryTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
use PHPUnit\Framework\TestCase;
1111
use Psr\Container\ContainerInterface;
1212

13-
class PhpSessionPersistenceFactoryTest extends TestCase
13+
final class PhpSessionPersistenceFactoryTest extends TestCase
1414
{
1515
public function testFactoryProducesPhpSessionPersistenceServiceWithDefaultsInAbsenceOfConfig(): void
1616
{
@@ -30,6 +30,7 @@ public function testFactoryProducesPhpSessionPersistenceServiceWithDefaultsInAbs
3030
$this->assertFalse($persistence->isDeleteCookieOnEmptySession());
3131
}
3232

33+
/** @return iterable<string, array{config: array, expected: bool, methodToTest: string}> */
3334
public static function configProvider(): iterable
3435
{
3536
yield 'non_locking disabled' => [

0 commit comments

Comments
 (0)