minor #17198 [Process] Clean tested process on tear down (nicolas-grekas)
This PR was merged into the 2.3 branch.
Discussion
----------
[Process] Clean tested process on tear down
| Q | A
| ------------- | ---
| Bug fix? | no
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | -
| License | MIT
| Doc PR | -
As show on this failing test (https://travis-ci.org/symfony/symfony/jobs/99569782#L2690) and confirmed locally, some tested process objects remain in memory until the global destructor shutdown stage.
This PR forces processes to be cleaned right after their test case.
Commits
-------
80e1107
[Process] Clean tested process on tear down
This commit is contained in:
commit
e9dcc04ace
@ -23,6 +23,7 @@ use Symfony\Component\Process\ProcessPipes;
|
|||||||
class ProcessTest extends \PHPUnit_Framework_TestCase
|
class ProcessTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
private static $phpBin;
|
private static $phpBin;
|
||||||
|
private static $process;
|
||||||
private static $sigchild;
|
private static $sigchild;
|
||||||
private static $notEnhancedSigchild = false;
|
private static $notEnhancedSigchild = false;
|
||||||
|
|
||||||
@ -42,6 +43,14 @@ class ProcessTest extends \PHPUnit_Framework_TestCase
|
|||||||
self::$sigchild = false !== strpos(ob_get_clean(), '--enable-sigchild');
|
self::$sigchild = false !== strpos(ob_get_clean(), '--enable-sigchild');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function tearDown()
|
||||||
|
{
|
||||||
|
if (self::$process) {
|
||||||
|
self::$process->stop(0);
|
||||||
|
self::$process = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function testThatProcessDoesNotThrowWarningDuringRun()
|
public function testThatProcessDoesNotThrowWarningDuringRun()
|
||||||
{
|
{
|
||||||
@trigger_error('Test Error', E_USER_NOTICE);
|
@trigger_error('Test Error', E_USER_NOTICE);
|
||||||
@ -122,9 +131,9 @@ class ProcessTest extends \PHPUnit_Framework_TestCase
|
|||||||
$h = new \ReflectionProperty($p, 'process');
|
$h = new \ReflectionProperty($p, 'process');
|
||||||
$h->setAccessible(true);
|
$h->setAccessible(true);
|
||||||
$h = $h->getValue($p);
|
$h = $h->getValue($p);
|
||||||
$s = proc_get_status($h);
|
$s = @proc_get_status($h);
|
||||||
|
|
||||||
while ($s['running']) {
|
while (!empty($s['running'])) {
|
||||||
usleep(1000);
|
usleep(1000);
|
||||||
$s = proc_get_status($h);
|
$s = proc_get_status($h);
|
||||||
}
|
}
|
||||||
@ -1012,7 +1021,11 @@ class ProcessTest extends \PHPUnit_Framework_TestCase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $process;
|
if (self::$process) {
|
||||||
|
self::$process->stop(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::$process = $process;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function skipIfNotEnhancedSigchild($expectException = true)
|
private function skipIfNotEnhancedSigchild($expectException = true)
|
||||||
|
Reference in New Issue
Block a user