From bc38f77794157cc83571e0d451b3cd39949ba8ad Mon Sep 17 00:00:00 2001 From: Worma Date: Sat, 2 Aug 2025 10:20:38 +0200 Subject: [PATCH] setAccessible() has no effect as of PHP 8.1 --- src/DnsConnector.php | 4 +++- src/SecureConnector.php | 4 +++- tests/ConnectorTest.php | 20 ++++++++++++---- tests/FunctionalTcpServerTest.php | 8 +++++-- tests/HappyEyeBallsConnectionBuilderTest.php | 24 +++++++++++++++----- tests/HappyEyeBallsConnectorTest.php | 4 +++- tests/SecureConnectorTest.php | 24 +++++++++++++++----- tests/SecureServerTest.php | 24 +++++++++++++++----- tests/SocketServerTest.php | 12 +++++++--- tests/TcpConnectorTest.php | 4 +++- tests/TcpServerTest.php | 4 +++- tests/TimeoutConnectorTest.php | 4 +++- tests/UnixConnectorTest.php | 4 +++- tests/UnixServerTest.php | 4 +++- 14 files changed, 108 insertions(+), 36 deletions(-) diff --git a/src/DnsConnector.php b/src/DnsConnector.php index 0165a2b..4a8d1a0 100644 --- a/src/DnsConnector.php +++ b/src/DnsConnector.php @@ -68,7 +68,9 @@ function ($resolve, $reject) use (&$promise, &$resolved, $uri, $host, $parts) { // avoid garbage references by replacing all closures in call stack. // what a lovely piece of code! $r = new \ReflectionProperty(\Exception::class, 'trace'); - $r->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $r->setAccessible(true); + } $trace = $r->getValue($e); // Exception trace arguments are not available on some PHP 7.4 installs diff --git a/src/SecureConnector.php b/src/SecureConnector.php index b7dd5fd..7626b0a 100644 --- a/src/SecureConnector.php +++ b/src/SecureConnector.php @@ -74,7 +74,9 @@ public function connect($uri) // avoid garbage references by replacing all closures in call stack. // what a lovely piece of code! $r = new \ReflectionProperty(\Exception::class, 'trace'); - $r->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $r->setAccessible(true); + } $trace = $r->getValue($e); // Exception trace arguments are not available on some PHP 7.4 installs diff --git a/tests/ConnectorTest.php b/tests/ConnectorTest.php index dd2f87b..afb1469 100644 --- a/tests/ConnectorTest.php +++ b/tests/ConnectorTest.php @@ -15,11 +15,15 @@ public function testConstructWithoutLoopAssignsLoopAutomatically() $connector = new Connector(); $ref = new \ReflectionProperty($connector, 'connectors'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $connectors = $ref->getValue($connector); $ref = new \ReflectionProperty($connectors['tcp'], 'loop'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $loop = $ref->getValue($connectors['tcp']); $this->assertInstanceOf(LoopInterface::class, $loop); @@ -32,11 +36,15 @@ public function testConstructWithLoopAssignsGivenLoop() $connector = new Connector([], $loop); $ref = new \ReflectionProperty($connector, 'connectors'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $connectors = $ref->getValue($connector); $ref = new \ReflectionProperty($connectors['tcp'], 'loop'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $loop = $ref->getValue($connectors['tcp']); $this->assertInstanceOf(LoopInterface::class, $loop); @@ -53,7 +61,9 @@ public function testConstructWithContextAssignsGivenContext() ]); $ref = new \ReflectionProperty($connector, 'connectors'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $connectors = $ref->getValue($connector); $this->assertSame($tcp, $connectors['tcp']); diff --git a/tests/FunctionalTcpServerTest.php b/tests/FunctionalTcpServerTest.php index 3a08b48..a3aa4be 100644 --- a/tests/FunctionalTcpServerTest.php +++ b/tests/FunctionalTcpServerTest.php @@ -334,7 +334,9 @@ public function testServerPassesContextOptionsToSocket() ]); $ref = new \ReflectionProperty($server, 'master'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $socket = $ref->getValue($server); $context = stream_context_get_options($socket); @@ -349,7 +351,9 @@ public function testServerPassesDefaultBacklogSizeViaContextOptionsToSocket() $server = new TcpServer(0); $ref = new \ReflectionProperty($server, 'master'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $socket = $ref->getValue($server); $context = stream_context_get_options($socket); diff --git a/tests/HappyEyeBallsConnectionBuilderTest.php b/tests/HappyEyeBallsConnectionBuilderTest.php index 60b5ead..95b9a9e 100644 --- a/tests/HappyEyeBallsConnectionBuilderTest.php +++ b/tests/HappyEyeBallsConnectionBuilderTest.php @@ -845,13 +845,17 @@ public function testCheckCallsRejectFunctionImmediateWithoutLeavingDanglingPromi $builder = new HappyEyeBallsConnectionBuilder($loop, $connector, $resolver, $uri, $host, $parts); $ref = new \ReflectionProperty($builder, 'connectQueue'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $ref->setValue($builder, ['::1']); $builder->check($this->expectCallableNever(), function () { }); $ref = new \ReflectionProperty($builder, 'connectionPromises'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $promises = $ref->getValue($builder); $this->assertEquals([], $promises); @@ -877,7 +881,9 @@ public function testCleanUpCancelsAllPendingConnectionAttempts() $builder = new HappyEyeBallsConnectionBuilder($loop, $connector, $resolver, $uri, $host, $parts); $ref = new \ReflectionProperty($builder, 'connectQueue'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $ref->setValue($builder, ['::1', '::1']); $builder->check($this->expectCallableNever(), function () { }); @@ -905,7 +911,9 @@ public function testCleanUpCancelsAllPendingConnectionAttemptsWithoutStartingNew $builder = new HappyEyeBallsConnectionBuilder($loop, $connector, $resolver, $uri, $host, $parts); $ref = new \ReflectionProperty($builder, 'connectQueue'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $ref->setValue($builder, ['::1', '::1']); $builder->check($this->expectCallableNever(), function () { }); @@ -928,7 +936,9 @@ public function testMixIpsIntoConnectQueueSometimesAssignsInOriginalOrder() $builder->mixIpsIntoConnectQueue(['::1', '::2']); $ref = new \ReflectionProperty($builder, 'connectQueue'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $value = $ref->getValue($builder); if ($value === ['::1', '::2']) { @@ -954,7 +964,9 @@ public function testMixIpsIntoConnectQueueSometimesAssignsInReverseOrder() $builder->mixIpsIntoConnectQueue(['::1', '::2']); $ref = new \ReflectionProperty($builder, 'connectQueue'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $value = $ref->getValue($builder); if ($value === ['::2', '::1']) { diff --git a/tests/HappyEyeBallsConnectorTest.php b/tests/HappyEyeBallsConnectorTest.php index 068aefc..9310974 100644 --- a/tests/HappyEyeBallsConnectorTest.php +++ b/tests/HappyEyeBallsConnectorTest.php @@ -40,7 +40,9 @@ public function testConstructWithoutLoopAssignsLoopAutomatically() $connector = new HappyEyeBallsConnector(null, $this->tcp, $this->resolver); $ref = new \ReflectionProperty($connector, 'loop'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $loop = $ref->getValue($connector); $this->assertInstanceOf(LoopInterface::class, $loop); diff --git a/tests/SecureConnectorTest.php b/tests/SecureConnectorTest.php index b96d3c3..230660b 100644 --- a/tests/SecureConnectorTest.php +++ b/tests/SecureConnectorTest.php @@ -35,11 +35,15 @@ public function testConstructWithoutLoopAssignsLoopAutomatically() $connector = new SecureConnector($this->tcp); $ref = new \ReflectionProperty($connector, 'streamEncryption'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $streamEncryption = $ref->getValue($connector); $ref = new \ReflectionProperty($streamEncryption, 'loop'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $loop = $ref->getValue($streamEncryption); $this->assertInstanceOf(LoopInterface::class, $loop); @@ -183,7 +187,9 @@ public function testStreamEncryptionWillBeEnabledAfterConnecting() $encryption->expects($this->once())->method('enable')->with($connection)->willReturn(new Promise(function () { })); $ref = new \ReflectionProperty($this->connector, 'streamEncryption'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $ref->setValue($this->connector, $encryption); $this->tcp->expects($this->once())->method('connect')->with('example.com:80')->willReturn(resolve($connection)); @@ -200,7 +206,9 @@ public function testConnectionWillBeRejectedIfStreamEncryptionFailsAndClosesConn $encryption->expects($this->once())->method('enable')->willReturn(reject(new \RuntimeException('TLS error', 123))); $ref = new \ReflectionProperty($this->connector, 'streamEncryption'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $ref->setValue($this->connector, $encryption); $this->tcp->expects($this->once())->method('connect')->with('example.com:80')->willReturn(resolve($connection)); @@ -232,7 +240,9 @@ public function testCancelDuringStreamEncryptionCancelsEncryptionAndClosesConnec $encryption->expects($this->once())->method('enable')->willReturn($pending); $ref = new \ReflectionProperty($this->connector, 'streamEncryption'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $ref->setValue($this->connector, $encryption); $deferred = new Deferred(); @@ -299,7 +309,9 @@ public function testRejectionDuringTlsHandshakeShouldNotCreateAnyGarbageReferenc $encryption->expects($this->once())->method('enable')->willReturn($tls->promise()); $ref = new \ReflectionProperty($this->connector, 'streamEncryption'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $ref->setValue($this->connector, $encryption); $promise = $this->connector->connect('example.com:80'); diff --git a/tests/SecureServerTest.php b/tests/SecureServerTest.php index 07c238e..dbc5c2b 100644 --- a/tests/SecureServerTest.php +++ b/tests/SecureServerTest.php @@ -21,11 +21,15 @@ public function testConstructWithoutLoopAssignsLoopAutomatically() $server = new SecureServer($tcp); $ref = new \ReflectionProperty($server, 'encryption'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $encryption = $ref->getValue($server); $ref = new \ReflectionProperty($encryption, 'loop'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $loop = $ref->getValue($encryption); $this->assertInstanceOf(LoopInterface::class, $loop); @@ -125,11 +129,15 @@ public function testConnectionWillTryToEnableEncryptionAndWaitForHandshake() $encryption->expects($this->once())->method('enable')->willReturn($pending); $ref = new \ReflectionProperty($server, 'encryption'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $ref->setValue($server, $encryption); $ref = new \ReflectionProperty($server, 'context'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $ref->setValue($server, []); $server->on('error', $this->expectCallableNever()); @@ -156,11 +164,15 @@ public function testConnectionWillBeClosedWithErrorIfEnablingEncryptionFails() $encryption->expects($this->once())->method('enable')->willReturn(reject($error)); $ref = new \ReflectionProperty($server, 'encryption'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $ref->setValue($server, $encryption); $ref = new \ReflectionProperty($server, 'context'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $ref->setValue($server, []); $error = null; diff --git a/tests/SocketServerTest.php b/tests/SocketServerTest.php index 537a2ce..dec6562 100644 --- a/tests/SocketServerTest.php +++ b/tests/SocketServerTest.php @@ -22,11 +22,15 @@ public function testConstructWithoutLoopAssignsLoopAutomatically() $socket->close(); $ref = new \ReflectionProperty($socket, 'server'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $tcp = $ref->getValue($socket); $ref = new \ReflectionProperty($tcp, 'loop'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $loop = $ref->getValue($tcp); $this->assertInstanceOf(LoopInterface::class, $loop); @@ -140,7 +144,9 @@ public function testEmitsErrorWhenUnderlyingTcpServerEmitsError() $socket = new SocketServer('127.0.0.1:0', []); $ref = new \ReflectionProperty($socket, 'server'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $tcp = $ref->getvalue($socket); $error = new \RuntimeException(); diff --git a/tests/TcpConnectorTest.php b/tests/TcpConnectorTest.php index 9858beb..8fb675c 100644 --- a/tests/TcpConnectorTest.php +++ b/tests/TcpConnectorTest.php @@ -22,7 +22,9 @@ public function testConstructWithoutLoopAssignsLoopAutomatically() $connector = new TcpConnector(); $ref = new \ReflectionProperty($connector, 'loop'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $loop = $ref->getValue($connector); $this->assertInstanceOf(LoopInterface::class, $loop); diff --git a/tests/TcpServerTest.php b/tests/TcpServerTest.php index 1adf91b..9007ff3 100644 --- a/tests/TcpServerTest.php +++ b/tests/TcpServerTest.php @@ -36,7 +36,9 @@ public function testConstructWithoutLoopAssignsLoopAutomatically() $server = new TcpServer(0); $ref = new \ReflectionProperty($server, 'loop'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $loop = $ref->getValue($server); $this->assertInstanceOf(LoopInterface::class, $loop); diff --git a/tests/TimeoutConnectorTest.php b/tests/TimeoutConnectorTest.php index e121cab..2e5a177 100644 --- a/tests/TimeoutConnectorTest.php +++ b/tests/TimeoutConnectorTest.php @@ -22,7 +22,9 @@ public function testConstructWithoutLoopAssignsLoopAutomatically() $connector = new TimeoutConnector($base, 0.01); $ref = new \ReflectionProperty($connector, 'loop'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $loop = $ref->getValue($connector); $this->assertInstanceOf(LoopInterface::class, $loop); diff --git a/tests/UnixConnectorTest.php b/tests/UnixConnectorTest.php index ad6b757..51abda4 100644 --- a/tests/UnixConnectorTest.php +++ b/tests/UnixConnectorTest.php @@ -25,7 +25,9 @@ public function testConstructWithoutLoopAssignsLoopAutomatically() $connector = new UnixConnector(); $ref = new \ReflectionProperty($connector, 'loop'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $loop = $ref->getValue($connector); $this->assertInstanceOf(LoopInterface::class, $loop); diff --git a/tests/UnixServerTest.php b/tests/UnixServerTest.php index 0e71cef..c63f031 100644 --- a/tests/UnixServerTest.php +++ b/tests/UnixServerTest.php @@ -40,7 +40,9 @@ public function testConstructWithoutLoopAssignsLoopAutomatically() $server = new UnixServer($this->uds); $ref = new \ReflectionProperty($server, 'loop'); - $ref->setAccessible(true); + if (\PHP_VERSION_ID < 80100) { + $ref->setAccessible(true); + } $loop = $ref->getValue($server); $this->assertInstanceOf(LoopInterface::class, $loop);