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:
Nicolas Grekas 2015-12-31 11:58:59 +01:00
commit e9dcc04ace
1 changed files with 16 additions and 3 deletions

View File

@ -23,6 +23,7 @@ use Symfony\Component\Process\ProcessPipes;
class ProcessTest extends \PHPUnit_Framework_TestCase
{
private static $phpBin;
private static $process;
private static $sigchild;
private static $notEnhancedSigchild = false;
@ -42,6 +43,14 @@ class ProcessTest extends \PHPUnit_Framework_TestCase
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()
{
@trigger_error('Test Error', E_USER_NOTICE);
@ -122,9 +131,9 @@ class ProcessTest extends \PHPUnit_Framework_TestCase
$h = new \ReflectionProperty($p, 'process');
$h->setAccessible(true);
$h = $h->getValue($p);
$s = proc_get_status($h);
$s = @proc_get_status($h);
while ($s['running']) {
while (!empty($s['running'])) {
usleep(1000);
$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)