Skip to content

Commit e0b3d78

Browse files
authored
Merge pull request #47 from clue-labs/php8.5
Run tests on PHP 8.5 and update test environment
2 parents dfca094 + b7632b4 commit e0b3d78

5 files changed

Lines changed: 95 additions & 34 deletions

File tree

‎.github/workflows/ci.yml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ jobs:
1111
strategy:
1212
matrix:
1313
php:
14+
- 8.5
1415
- 8.4
1516
- 8.3
1617
- 8.2

‎composer.json‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313
"require": {
1414
"php": ">=5.3",
1515
"clue/socks-react": "^1.5",
16-
"react/child-process": "^0.6.6",
17-
"react/event-loop": "^1.2",
18-
"react/promise": "^3.2 || ^2.11 || ^1.3",
19-
"react/socket": "^1.16",
16+
"react/child-process": "^0.6.7",
17+
"react/event-loop": "^1.6",
18+
"react/promise": "^3.3 || ^2.11 || ^1.3",
19+
"react/socket": "^1.17",
2020
"react/stream": "^1.4"
2121
},
2222
"require-dev": {

‎tests/IntegrationSshProcessConnectorTest.php‎

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ public function testConnectWillResolveWithConnectionInterfaceWhenProcessOutputsC
1313
$connector = new SshProcessConnector('host');
1414

1515
$ref = new \ReflectionProperty($connector, 'cmd');
16-
$ref->setAccessible(true);
16+
if (PHP_VERSION_ID < 80100) {
17+
$ref->setAccessible(true);
18+
}
1719
$ref->setValue($connector, 'echo "debug2: channel 0: open confirm rwindow 2097152 rmax 32768" >&2; #');
1820

1921
$promise = $connector->connect('example.com:80');
@@ -27,7 +29,9 @@ public function testConnectWillRejectWithExceptionWhenProcessOutputsChannelOpenF
2729
$connector = new SshProcessConnector('host');
2830

2931
$ref = new \ReflectionProperty($connector, 'cmd');
30-
$ref->setAccessible(true);
32+
if (PHP_VERSION_ID < 80100) {
33+
$ref->setAccessible(true);
34+
}
3135
$ref->setValue($connector, 'echo "channel 0: open failed: administratively prohibited: open failed" >&2; #');
3236

3337
$promise = $connector->connect('example.com:80');
@@ -41,7 +45,9 @@ public function testConnectWillRejectWithExceptionWhenProcessOutputsEndsWithoutC
4145
$connector = new SshProcessConnector('host');
4246

4347
$ref = new \ReflectionProperty($connector, 'cmd');
44-
$ref->setAccessible(true);
48+
if (PHP_VERSION_ID < 80100) {
49+
$ref->setAccessible(true);
50+
}
4551
$ref->setValue($connector, 'echo foo >&2; #');
4652

4753
$promise = $connector->connect('example.com:80');
@@ -55,7 +61,9 @@ public function testConnectWillResolveWithConnectionThatWillEmitImmediateDataFro
5561
$connector = new SshProcessConnector('host');
5662

5763
$ref = new \ReflectionProperty($connector, 'cmd');
58-
$ref->setAccessible(true);
64+
if (PHP_VERSION_ID < 80100) {
65+
$ref->setAccessible(true);
66+
}
5967
$ref->setValue($connector, 'echo "debug2: channel 0: open confirm rwindow 2097152 rmax 32768" >&2; echo foo #');
6068

6169
$promise = $connector->connect('example.com:80');

‎tests/SshProcessConnectorTest.php‎

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ public function testConstructWithoutLoopAssignsLoopAutomatically()
1111
$connector = new SshProcessConnector('host');
1212

1313
$ref = new \ReflectionProperty($connector, 'loop');
14-
$ref->setAccessible(true);
14+
if (PHP_VERSION_ID < 80100) {
15+
$ref->setAccessible(true);
16+
}
1517
$loop = $ref->getValue($connector);
1618

1719
$this->assertInstanceOf('React\EventLoop\LoopInterface', $loop);
@@ -23,7 +25,9 @@ public function testConstructorAcceptsUri()
2325
$connector = new SshProcessConnector('host', $loop);
2426

2527
$ref = new \ReflectionProperty($connector, 'cmd');
26-
$ref->setAccessible(true);
28+
if (PHP_VERSION_ID < 80100) {
29+
$ref->setAccessible(true);
30+
}
2731

2832
$this->assertEquals('exec ssh -vv -o BatchMode=yes \'host\'', $ref->getValue($connector));
2933
}
@@ -34,7 +38,9 @@ public function testConstructorAcceptsUriWithDefaultPortWillNotBeAddedToCommand(
3438
$connector = new SshProcessConnector('host:22', $loop);
3539

3640
$ref = new \ReflectionProperty($connector, 'cmd');
37-
$ref->setAccessible(true);
41+
if (PHP_VERSION_ID < 80100) {
42+
$ref->setAccessible(true);
43+
}
3844

3945
$this->assertEquals('exec ssh -vv -o BatchMode=yes \'host\'', $ref->getValue($connector));
4046
}
@@ -45,7 +51,9 @@ public function testConstructorAcceptsUriWithUserAndCustomPort()
4551
$connector = new SshProcessConnector('user@host:2222', $loop);
4652

4753
$ref = new \ReflectionProperty($connector, 'cmd');
48-
$ref->setAccessible(true);
54+
if (PHP_VERSION_ID < 80100) {
55+
$ref->setAccessible(true);
56+
}
4957

5058
$this->assertEquals('exec ssh -vv -o BatchMode=yes -p 2222 \'user@host\'', $ref->getValue($connector));
5159
}
@@ -56,7 +64,9 @@ public function testConstructorAcceptsUriWithPasswordWillPrefixSshCommandWithSsh
5664
$connector = new SshProcessConnector('user:pass@host', $loop);
5765

5866
$ref = new \ReflectionProperty($connector, 'cmd');
59-
$ref->setAccessible(true);
67+
if (PHP_VERSION_ID < 80100) {
68+
$ref->setAccessible(true);
69+
}
6070

6171
$this->assertEquals('exec sshpass -p \'pass\' ssh -vv \'user@host\'', $ref->getValue($connector));
6272
}

‎tests/SshSocksConnectorTest.php‎

Lines changed: 63 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ public function testConstructWithoutLoopAssignsLoopAutomatically()
1212
$connector = new SshSocksConnector('host');
1313

1414
$ref = new \ReflectionProperty($connector, 'loop');
15-
$ref->setAccessible(true);
15+
if (PHP_VERSION_ID < 80100) {
16+
$ref->setAccessible(true);
17+
}
1618
$loop = $ref->getValue($connector);
1719

1820
$this->assertInstanceOf('React\EventLoop\LoopInterface', $loop);
@@ -24,7 +26,9 @@ public function testConstructorAcceptsUri()
2426
$connector = new SshSocksConnector('host', $loop);
2527

2628
$ref = new \ReflectionProperty($connector, 'cmd');
27-
$ref->setAccessible(true);
29+
if (PHP_VERSION_ID < 80100) {
30+
$ref->setAccessible(true);
31+
}
2832

2933
$this->assertEquals('exec ssh -v -o ExitOnForwardFailure=yes -N -o BatchMode=yes -D \'127.0.0.1:1080\' \'host\'', $ref->getValue($connector));
3034
}
@@ -35,7 +39,9 @@ public function testConstructorAcceptsUriWithDefaultPortWillNotBeAddedToCommand(
3539
$connector = new SshSocksConnector('host:22', $loop);
3640

3741
$ref = new \ReflectionProperty($connector, 'cmd');
38-
$ref->setAccessible(true);
42+
if (PHP_VERSION_ID < 80100) {
43+
$ref->setAccessible(true);
44+
}
3945

4046
$this->assertEquals('exec ssh -v -o ExitOnForwardFailure=yes -N -o BatchMode=yes -D \'127.0.0.1:1080\' \'host\'', $ref->getValue($connector));
4147
}
@@ -46,7 +52,9 @@ public function testConstructorAcceptsUriWithUserAndCustomPort()
4652
$connector = new SshSocksConnector('user@host:2222', $loop);
4753

4854
$ref = new \ReflectionProperty($connector, 'cmd');
49-
$ref->setAccessible(true);
55+
if (PHP_VERSION_ID < 80100) {
56+
$ref->setAccessible(true);
57+
}
5058

5159
$this->assertEquals('exec ssh -v -o ExitOnForwardFailure=yes -N -o BatchMode=yes -p 2222 -D \'127.0.0.1:1080\' \'user@host\'', $ref->getValue($connector));
5260
}
@@ -57,7 +65,9 @@ public function testConstructorAcceptsUriWithPasswordWillPrefixSshCommandWithSsh
5765
$connector = new SshSocksConnector('user:pass@host', $loop);
5866

5967
$ref = new \ReflectionProperty($connector, 'cmd');
60-
$ref->setAccessible(true);
68+
if (PHP_VERSION_ID < 80100) {
69+
$ref->setAccessible(true);
70+
}
6171

6272
$this->assertEquals('exec sshpass -p \'pass\' ssh -v -o ExitOnForwardFailure=yes -N -D \'127.0.0.1:1080\' \'user@host\'', $ref->getValue($connector));
6373
}
@@ -68,7 +78,9 @@ public function testConstructorAcceptsUriWithCustomBindUrl()
6878
$connector = new SshSocksConnector('host?bind=127.1.0.1:2711', $loop);
6979

7080
$ref = new \ReflectionProperty($connector, 'cmd');
71-
$ref->setAccessible(true);
81+
if (PHP_VERSION_ID < 80100) {
82+
$ref->setAccessible(true);
83+
}
7284

7385
$this->assertEquals('exec ssh -v -o ExitOnForwardFailure=yes -N -o BatchMode=yes -D \'127.1.0.1:2711\' \'host\'', $ref->getValue($connector));
7486
}
@@ -79,7 +91,9 @@ public function testConstructorAcceptsUriWithCustomBindUrlIpv6()
7991
$connector = new SshSocksConnector('host?bind=[::1]:2711', $loop);
8092

8193
$ref = new \ReflectionProperty($connector, 'cmd');
82-
$ref->setAccessible(true);
94+
if (PHP_VERSION_ID < 80100) {
95+
$ref->setAccessible(true);
96+
}
8397

8498
$this->assertEquals('exec ssh -v -o ExitOnForwardFailure=yes -N -o BatchMode=yes -D \'[::1]:2711\' \'host\'', $ref->getValue($connector));
8599
}
@@ -200,7 +214,9 @@ public function testConnectWillCancelPendingIdleTimerAndWaitForSshListener()
200214

201215
$timer = $this->getMockBuilder('React\EventLoop\TimerInterface')->getMock();
202216
$ref = new \ReflectionProperty($connector, 'idleTimer');
203-
$ref->setAccessible(true);
217+
if (PHP_VERSION_ID < 80100) {
218+
$ref->setAccessible(true);
219+
}
204220
$ref->setValue($connector, $timer);
205221

206222
$connector->connect('google.com:80');
@@ -214,7 +230,9 @@ public function testConnectWithFailingSshListenerShouldReturnRejectedPromise()
214230

215231
$deferred = new Deferred();
216232
$ref = new \ReflectionProperty($connector, 'listen');
217-
$ref->setAccessible(true);
233+
if (PHP_VERSION_ID < 80100) {
234+
$ref->setAccessible(true);
235+
}
218236
$ref->setValue($connector, $deferred->promise());
219237

220238
$promise = $connector->connect('google.com:80');
@@ -238,7 +256,9 @@ public function testConnectTwiceWithFailingSshListenerShouldRejectBothPromises()
238256

239257
$deferred = new Deferred();
240258
$ref = new \ReflectionProperty($connector, 'listen');
241-
$ref->setAccessible(true);
259+
if (PHP_VERSION_ID < 80100) {
260+
$ref->setAccessible(true);
261+
}
242262
$ref->setValue($connector, $deferred->promise());
243263

244264
$first = $connector->connect('google.com:80');
@@ -259,7 +279,9 @@ public function testConnectCancellationWithFailingSshListenerShouldAddTimerOnce(
259279

260280
$deferred = new Deferred();
261281
$ref = new \ReflectionProperty($connector, 'listen');
262-
$ref->setAccessible(true);
282+
if (PHP_VERSION_ID < 80100) {
283+
$ref->setAccessible(true);
284+
}
263285
$ref->setValue($connector, $deferred->promise());
264286

265287
$promise = $connector->connect('google.com:80');
@@ -275,15 +297,19 @@ public function testConnectWithSuccessfulSshListenerWillInvokeSocksConnector()
275297
$connector = new SshSocksConnector('host', $loop);
276298

277299
$ref = new \ReflectionProperty($connector, 'listen');
278-
$ref->setAccessible(true);
300+
if (PHP_VERSION_ID < 80100) {
301+
$ref->setAccessible(true);
302+
}
279303
$ref->setValue($connector, \React\Promise\resolve(null));
280304

281305
$deferred = new Deferred();
282306
$socks = $this->getMockBuilder('React\Socket\ConnectorInterface')->getMock();
283307
$socks->expects($this->once())->method('connect')->with('google.com:80')->willReturn($deferred->promise());
284308

285309
$ref = new \ReflectionProperty($connector, 'socks');
286-
$ref->setAccessible(true);
310+
if (PHP_VERSION_ID < 80100) {
311+
$ref->setAccessible(true);
312+
}
287313
$ref->setValue($connector, $socks);
288314

289315
$promise = $connector->connect('google.com:80');
@@ -297,7 +323,9 @@ public function testConnectCancellationWithSuccessfulSshListenerWillCancelSocksC
297323
$connector = new SshSocksConnector('host', $loop);
298324

299325
$ref = new \ReflectionProperty($connector, 'listen');
300-
$ref->setAccessible(true);
326+
if (PHP_VERSION_ID < 80100) {
327+
$ref->setAccessible(true);
328+
}
301329
$ref->setValue($connector, \React\Promise\resolve(null));
302330

303331
$deferred = new Deferred(function () {
@@ -307,7 +335,9 @@ public function testConnectCancellationWithSuccessfulSshListenerWillCancelSocksC
307335
$socks->expects($this->once())->method('connect')->willReturn($deferred->promise());
308336

309337
$ref = new \ReflectionProperty($connector, 'socks');
310-
$ref->setAccessible(true);
338+
if (PHP_VERSION_ID < 80100) {
339+
$ref->setAccessible(true);
340+
}
311341
$ref->setValue($connector, $socks);
312342

313343
$promise = $connector->connect('google.com:80');
@@ -330,15 +360,19 @@ public function testConnectWithSuccessfulSshListenerButFailingSocksConnectorShou
330360
$connector = new SshSocksConnector('host', $loop);
331361

332362
$ref = new \ReflectionProperty($connector, 'listen');
333-
$ref->setAccessible(true);
363+
if (PHP_VERSION_ID < 80100) {
364+
$ref->setAccessible(true);
365+
}
334366
$ref->setValue($connector, \React\Promise\resolve(null));
335367

336368
$deferred = new Deferred();
337369
$socks = $this->getMockBuilder('React\Socket\ConnectorInterface')->getMock();
338370
$socks->expects($this->once())->method('connect')->willReturn($deferred->promise());
339371

340372
$ref = new \ReflectionProperty($connector, 'socks');
341-
$ref->setAccessible(true);
373+
if (PHP_VERSION_ID < 80100) {
374+
$ref->setAccessible(true);
375+
}
342376
$ref->setValue($connector, $socks);
343377

344378
$promise = $connector->connect('google.com:80');
@@ -361,7 +395,9 @@ public function testConnectWithSuccessfulSshListenerAndSuccessfulSocksConnectorS
361395
$connector = new SshSocksConnector('host', $loop);
362396

363397
$ref = new \ReflectionProperty($connector, 'listen');
364-
$ref->setAccessible(true);
398+
if (PHP_VERSION_ID < 80100) {
399+
$ref->setAccessible(true);
400+
}
365401
$ref->setValue($connector, \React\Promise\resolve(null));
366402

367403
$connection = $this->getMockBuilder('React\Socket\ConnectionInterface')->getMock();
@@ -372,7 +408,9 @@ public function testConnectWithSuccessfulSshListenerAndSuccessfulSocksConnectorS
372408
$socks->expects($this->once())->method('connect')->willReturn($deferred->promise());
373409

374410
$ref = new \ReflectionProperty($connector, 'socks');
375-
$ref->setAccessible(true);
411+
if (PHP_VERSION_ID < 80100) {
412+
$ref->setAccessible(true);
413+
}
376414
$ref->setValue($connector, $socks);
377415

378416
$promise = $connector->connect('google.com:80');
@@ -388,7 +426,9 @@ public function testConnectWithSuccessfulSshListenerAndSuccessfulSocksConnectorW
388426
$connector = new SshSocksConnector('host', $loop);
389427

390428
$ref = new \ReflectionProperty($connector, 'listen');
391-
$ref->setAccessible(true);
429+
if (PHP_VERSION_ID < 80100) {
430+
$ref->setAccessible(true);
431+
}
392432
$ref->setValue($connector, \React\Promise\resolve(null));
393433

394434
$connection = $this->getMockBuilder('React\Socket\Connection')->disableOriginalConstructor()->setMethods(array('close'))->getMock();
@@ -399,7 +439,9 @@ public function testConnectWithSuccessfulSshListenerAndSuccessfulSocksConnectorW
399439
$socks->expects($this->once())->method('connect')->willReturn($deferred->promise());
400440

401441
$ref = new \ReflectionProperty($connector, 'socks');
402-
$ref->setAccessible(true);
442+
if (PHP_VERSION_ID < 80100) {
443+
$ref->setAccessible(true);
444+
}
403445
$ref->setValue($connector, $socks);
404446

405447
$promise = $connector->connect('google.com:80');

0 commit comments

Comments
 (0)