/dev/null || echo 0) echo \$((count + 1)) > "{$dir}/pulls" [ "\$count" -ge {$failures} ] } sleep() { :; } {$log[0]} {$pullImage[0]} pull_image ghcr.io/coollabsio/coolify-helper:1.0.14 BASH; exec('bash -c '.escapeshellarg($harness).' >/dev/null 2>&1', result_code: $exitCode); $pulls = (int) @file_get_contents("{$dir}/pulls"); exec('rm -rf '.escapeshellarg($dir)); return ['exitCode' => $exitCode, 'pulls' => $pulls]; } it('retries a rate limited image pull until it succeeds', function (string $script) { expect(runUpgradeScriptPullImage($script, failures: 2))->toBe(['exitCode' => 0, 'pulls' => 3]); })->with(['scripts/upgrade.sh']); it('fails the image pull after five attempts', function (string $script) { expect(runUpgradeScriptPullImage($script, failures: 10))->toBe(['exitCode' => 1, 'pulls' => 5]); })->with(['scripts/upgrade.sh']);