merge($part); } } if ($coverage === null) { throw new RuntimeException('No PHP coverage collected'); } (new SebastianBergmann\CodeCoverage\Report\Cobertura)->process($coverage, '.quality/php-coverage.xml'); $report = $coverage->getReport(); $total = $report->numberOfExecutableLines(); $covered = $report->numberOfExecutedLines(); echo "PHP coverage: $covered/$total executable lines\n"; exit($total > 0 && $covered / $total >= 0.8 ? 0 : 1);