Files
glastree/vendor/laravel/pao/src/Autoload.php
T

72 lines
1.7 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
/** @codeCoverageIgnoreStart */
namespace Laravel\Pao;
use Laravel\AgentDetector\AgentDetector;
/** @var array<int, string>|null $argv */
$argv = $_SERVER['argv'] ?? null;
if (! is_array($argv) || $argv === []) {
return;
}
if (isset($_SERVER['PAO_DISABLE'])) {
return;
}
$agent = AgentDetector::detect();
if (! $agent->isAgent) {
return;
}
if (array_intersect($argv, ['--version', '--help', '-h', 'worker'])) {
return;
}
unset($_SERVER['COLLISION_PRINTER']);
$_SERVER['PEST_PARALLEL_NO_OUTPUT'] = '1';
register_shutdown_function(function (): void {
if (! Execution::running()) {
return;
}
$execution = Execution::current();
$result = $execution->driver->parse() ?: [];
$captured = trim(UserFilters\CaptureFilter::output());
$execution->restoreStdout();
if ($captured !== '') {
$captured = OutputCleaner::clean($captured);
$lines = array_values(array_filter(
array_map(trim(...), explode("\n", $captured)),
fn (string $line): bool => $line !== ''
&& ! preg_match('/^[.st!]+$/', $line)
&& ! preg_match('/^(Tests:|Duration:|Parallel:|Time:|Generating code coverage)\s/', $line)
&& ! str_ends_with($line, 'by Sebastian Bergmann and contributors.'),
));
if ($lines !== []) {
$result['raw'] = $lines;
}
}
if ($result !== []) {
$result = ['tool' => $execution->driver->name()] + $result;
fwrite(STDOUT, json_encode($result, JSON_UNESCAPED_SLASHES | JSON_INVALID_UTF8_SUBSTITUTE | JSON_THROW_ON_ERROR).PHP_EOL);
}
});
Execution::start($agent, $argv);