1
0
mirror of https://github.com/danog/parallel.git synced 2024-12-02 09:37:57 +01:00
parallel/test/Context/ProcessTest.php

107 lines
2.9 KiB
PHP
Raw Normal View History

<?php
namespace Amp\Parallel\Test\Context;
use Amp\Loop;
use Amp\Parallel\Context\Process;
use Amp\PHPUnit\TestCase;
2018-10-07 16:50:45 +02:00
class ProcessTest extends TestCase
{
public function testBasicProcess()
{
Loop::run(function () {
$process = new Process([
__DIR__ . "/test-process.php",
"Test"
]);
yield $process->start();
$this->assertSame("Test", yield $process->join());
});
}
/**
* @expectedException \Amp\Parallel\Sync\PanicError
* @expectedExceptionMessage No string provided
*/
2018-10-07 16:50:45 +02:00
public function testFailingProcess()
{
Loop::run(function () {
$process = new Process(__DIR__ . "/test-process.php");
yield $process->start();
yield $process->join();
});
}
/**
* @expectedException \Amp\Parallel\Sync\PanicError
* @expectedExceptionMessage No script found at '../test-process.php'
*/
2018-10-07 16:50:45 +02:00
public function testInvalidScriptPath()
{
Loop::run(function () {
$process = new Process("../test-process.php");
yield $process->start();
yield $process->join();
});
}
/**
* @expectedException \Amp\Parallel\Sync\PanicError
* @expectedExceptionMessage The given data cannot be sent because it is not serializable
*/
2018-10-07 16:50:45 +02:00
public function testInvalidResult()
{
Loop::run(function () {
$process = new Process(__DIR__ . "/invalid-result-process.php");
yield $process->start();
2018-10-07 16:50:45 +02:00
\var_dump(yield $process->join());
});
}
/**
* @expectedException \Amp\Parallel\Sync\PanicError
2018-03-21 13:56:19 +01:00
* @expectedExceptionMessage did not return a callable function
*/
2018-10-07 16:50:45 +02:00
public function testNoCallbackReturned()
{
Loop::run(function () {
$process = new Process(__DIR__ . "/no-callback-process.php");
yield $process->start();
2018-10-07 16:50:45 +02:00
\var_dump(yield $process->join());
});
}
/**
* @expectedException \Amp\Parallel\Sync\PanicError
* @expectedExceptionMessage Uncaught ParseError in execution context
*/
2018-10-07 16:50:45 +02:00
public function testParseError()
{
Loop::run(function () {
$process = new Process(__DIR__ . "/parse-error-process.inc");
yield $process->start();
2018-10-07 16:50:45 +02:00
\var_dump(yield $process->join());
});
}
/**
* @expectedException \Amp\Parallel\Context\ContextException
* @expectedExceptionMessage Failed to receive result from process
*/
public function testKillWhenJoining()
{
Loop::run(function () {
$process = new Process([
__DIR__ . "/sleep-process.php",
5,
]);
yield $process->start();
$promise = $process->join();
$process->kill();
$this->assertFalse($process->isRunning());
yield $promise;
});
}
}