mirror of
https://github.com/pestphp/pest.git
synced 2026-09-05 14:23:34 +02:00
Prevent memory exhaustion when generating TIA graphs with PCOV (#1875)
* fix(tia): preserve memory limit during pcov restart * chore: update test expectations * fix: stabilize tia replay test in ci
This commit is contained in:
@@ -2051,6 +2051,9 @@
|
||||
✓ preset invalid name
|
||||
✓ preset → myFramework
|
||||
|
||||
PASS Tests\Unit\Restarters\PcovRestarter
|
||||
✓ it preserves the active memory limit in the restarted process
|
||||
|
||||
PASS Tests\Unit\Support\Arr
|
||||
✓ last → it should return false for an empty arary
|
||||
✓ last → it should return the last element for an array with a single element
|
||||
@@ -2234,4 +2237,4 @@
|
||||
✓ pass with dataset with ('my-datas-set-value')
|
||||
✓ within describe → pass with dataset with ('my-datas-set-value')
|
||||
|
||||
Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 40 todos, 35 skipped, 1581 passed (3434 assertions)
|
||||
Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 40 todos, 35 skipped, 1582 passed (3435 assertions)
|
||||
@@ -56,6 +56,7 @@ it('does not run user hooks when replaying cached skipped and incomplete results
|
||||
'PARATEST' => 0,
|
||||
'PAO_DISABLE' => '1',
|
||||
'HOME' => $home,
|
||||
'CI_DEFAULT_BRANCH' => $branch,
|
||||
],
|
||||
);
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Pest\Restarters\PcovRestarter;
|
||||
use Symfony\Component\Process\Process;
|
||||
|
||||
it('preserves the active memory limit in the restarted process', function (): void {
|
||||
$originalMemoryLimit = ini_get('memory_limit');
|
||||
|
||||
try {
|
||||
ini_set('memory_limit', '1234M');
|
||||
|
||||
$command = new ReflectionMethod(PcovRestarter::class, 'command')
|
||||
->invoke(new PcovRestarter, __DIR__, ['-r', 'fwrite(STDOUT, (string) ini_get("memory_limit"));']);
|
||||
|
||||
assert(is_array($command));
|
||||
|
||||
$process = new Process($command);
|
||||
$process->mustRun();
|
||||
|
||||
expect($process->getOutput())->toBe('1234M');
|
||||
} finally {
|
||||
ini_set('memory_limit', (string) $originalMemoryLimit);
|
||||
}
|
||||
});
|
||||
@@ -26,13 +26,13 @@ test('parallel', function () use ($run): void {
|
||||
$file = file_get_contents(__FILE__);
|
||||
$file = preg_replace(
|
||||
'/\$expected = \'.*?\';/',
|
||||
"\$expected = '2 deprecated, 4 warnings, 5 incomplete, 3 notices, 40 todos, 27 skipped, 1563 passed (3379 assertions)';",
|
||||
"\$expected = '2 deprecated, 4 warnings, 5 incomplete, 3 notices, 40 todos, 27 skipped, 1564 passed (3380 assertions)';",
|
||||
$file,
|
||||
);
|
||||
file_put_contents(__FILE__, $file);
|
||||
}
|
||||
|
||||
$expected = '2 deprecated, 4 warnings, 5 incomplete, 3 notices, 40 todos, 27 skipped, 1563 passed (3379 assertions)';
|
||||
$expected = '2 deprecated, 4 warnings, 5 incomplete, 3 notices, 40 todos, 27 skipped, 1564 passed (3380 assertions)';
|
||||
|
||||
expect($output)
|
||||
->toContain("Tests: {$expected}")
|
||||
|
||||
Reference in New Issue
Block a user