<?php

$inputFile = __DIR__ . '/start1.php';
$outputFile = __DIR__ . '/start1.phpunit.php';
$source = file_get_contents($inputFile);

// 插入 Xdebug 启动代码（不要重复 use/require）
$xdebugInitCode = <<<'PHP'

// 启动覆盖率
xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);

PHP;

// 插入到 `require_once` 后面（仅首次）
$patched = preg_replace(
    '/^\s*use\s+Workerman\\\Worker\s*;/m',
    $xdebugInitCode . "\n" . '$0',
    $source,
    1
);

// 重写 onWorkerStopping 函数
$xdebugShutdownFunc = <<<'PHP'
function onWorkerStopping()
{
    echo "\nWorker is stopping...\n";

    // 停止并保存 Xdebug 覆盖率
    $coverage = xdebug_get_code_coverage();
    xdebug_stop_code_coverage();

    $filename = __DIR__ . '/coverage.json';
    file_put_contents($filename, json_encode($coverage, JSON_PRETTY_PRINT));
    echo "✅ 覆盖率已保存到 $filename\n";
}
PHP;

$patched = preg_replace(
    '/function onWorkerStopping\(\)\s*\{.*?\}/s',
    $xdebugShutdownFunc,
    $patched
);

// 保存输出文件
file_put_contents($outputFile, $patched);
echo "✅ 已生成文件：$outputFile\n";
