fix: PHPUnit test Process() format
\Symfony\Component\Process\Process refuses being passed a string with version > 5, which is installed with PHP > 7.2.5. It also refuses being passed an array with version < 3.3, which is installed with PHP < 5.5.9. Solved by checking if Process::fromShellCommandLine() exists, which was introduced in version 4.2.0.
This commit is contained in:
parent
d423e9bb57
commit
072c3bfdb3
|
|
@ -26,7 +26,26 @@ abstract class AbstractWebServerEmbeddedTest extends \PHPUnit\Framework\TestCase
|
|||
public static function setUpBeforeClass()
|
||||
{
|
||||
if (self::isBuiltinServerSupported()) {
|
||||
self::$httpServer = new Process('php -S localhost:8080 -t tests/PhpWord/_files');
|
||||
$commandLine = 'php -S localhost:8080 -t tests/PhpWord/_files';
|
||||
|
||||
/*
|
||||
* Make sure to invoke \Symfony\Component\Process\Process correctly
|
||||
* regardless of PHP version used.
|
||||
*
|
||||
* In Process version >= 5 / PHP >= 7.2.5, the constructor requires
|
||||
* an array, while in version < 3.3 / PHP < 5.5.9 it requires a string.
|
||||
* In between, it can accept both.
|
||||
*
|
||||
* Process::fromShellCommandLine() was introduced in version 4.2.0,
|
||||
* to enable recent versions of Process to parse a command string,
|
||||
* so if it is not available it means it is still possible to pass
|
||||
* a string to the constructor.
|
||||
*/
|
||||
if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandLine')) {
|
||||
self::$httpServer = Process::fromShellCommandline($commandLine);
|
||||
} else {
|
||||
self::$httpServer = new Process($commandLine);
|
||||
}
|
||||
self::$httpServer->start();
|
||||
while (!self::$httpServer->isRunning()) {
|
||||
usleep(1000);
|
||||
|
|
|
|||
Loading…
Reference in New Issue