diff --git a/composer.json b/composer.json index ad61329..63c3095 100644 --- a/composer.json +++ b/composer.json @@ -15,10 +15,10 @@ }, "require": { "php": ">=5.3", - "react/promise": "~1.0|~2.0", - "react/child-process": "~0.3.0|~0.4.0", - "react/stream": "~0.3.0|~0.4.0", - "react/event-loop": "~0.3.0|~0.4.0" + "react/child-process": "^0.5 || ^0.4 || ^0.3", + "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3", + "react/stream": "^1.0 || ^0.7 || ^0.6 || ^0.5 || ^0.4.6", + "react/promise": "^2.0 || ^1.0" }, "require-dev": { "phpunit/phpunit": "^7.0 || ^6.0 || ^5.0 || ^4.8.35" diff --git a/src/DeferredShell.php b/src/DeferredShell.php index 7c2446e..8ec1194 100644 --- a/src/DeferredShell.php +++ b/src/DeferredShell.php @@ -3,7 +3,7 @@ namespace Clue\React\Shell; use React\Promise\Deferred; -use React\Stream\CompositeStream; +use React\Stream\DuplexStreamInterface; use RuntimeException; class DeferredShell @@ -21,7 +21,7 @@ class DeferredShell private $buffer = ''; private $started = false; - public function __construct(CompositeStream $stream) + public function __construct(DuplexStreamInterface $stream) { $this->stream = $stream; diff --git a/tests/DeferredShellTest.php b/tests/DeferredShellTest.php index 9db4a13..8fd8ad4 100644 --- a/tests/DeferredShellTest.php +++ b/tests/DeferredShellTest.php @@ -8,7 +8,7 @@ class DeferredShellTest extends TestCase public function setUp() { - $this->stream = $this->getMockBuilder('React\Stream\CompositeStream')->disableOriginalConstructor()->getMock(); + $this->stream = $this->getMockBuilder('React\Stream\DuplexStreamInterface')->getMock(); } public function testExecuteWritesToStream() diff --git a/tests/ProcessLauncherTest.php b/tests/ProcessLauncherTest.php index b6bac57..89f912f 100644 --- a/tests/ProcessLauncherTest.php +++ b/tests/ProcessLauncherTest.php @@ -1,7 +1,6 @@ getMockBuilder('React\ChildProcess\Process')->disableOriginalConstructor()->getMock(); - $process->stdout = new ReadableStream(); + $process->stdout = $this->getMockBuilder('React\Stream\ReadableStreamInterface')->getMock(); $process->stdin = $this->getMockBuilder('React\Stream\WritableStreamInterface')->getMock(); + $process->stdout->expects($this->any())->method('isReadable')->willReturn(true); + $process->stdin->expects($this->any())->method('isWritable')->willReturn(true); + $process->expects($this->once())->method('isRunning')->will($this->returnValue(true)); $process->expects($this->once())->method('terminate')->with($this->equalTo(SIGKILL)); @@ -44,9 +46,12 @@ public function testClosingStreamTerminatesRunningProcess() public function testClosingStreamOfNonRunningProcessWillNotTerminate() { $process = $this->getMockBuilder('React\ChildProcess\Process')->disableOriginalConstructor()->getMock(); - $process->stdout = new ReadableStream(); + $process->stdout = $this->getMockBuilder('React\Stream\ReadableStreamInterface')->getMock(); $process->stdin = $this->getMockBuilder('React\Stream\WritableStreamInterface')->getMock(); + $process->stdout->expects($this->any())->method('isReadable')->willReturn(true); + $process->stdin->expects($this->any())->method('isWritable')->willReturn(true); + $process->expects($this->once())->method('isRunning')->will($this->returnValue(false)); $process->expects($this->never())->method('terminate');