Skip to content

Commit f4c242a

Browse files
committed
fix(ci): exclude DiscoveryException from PCOV coverage tracking
Root cause: DiscoveryException extends \RuntimeException (a native PHP class). PCOV cannot properly instrument classes whose constructor chain leads into native C-extension methods, causing PHPUnit 12 to emit 'not a valid target for code coverage' warnings on every test in DiscoveryExceptionTest — regardless of failOnWarning sed patches. Fix: activate coverage_exclude in devkit.php so kcode generates phpunit.xml.dist with src/Exception excluded from the coverage source. This eliminates the warning at the PCOV instrumentation level, making it sed-independent and CI-safe across all environment configurations. Changes: - devkit.php: uncomment coverage_exclude => ['src/Exception'] - DiscoveryExceptionTest: remove #[CoversClass(DiscoveryException)] (invalid target, class excluded from coverage) - DirectoryScannerTest: remove #[CoversClass(DiscoveryException)] and its now-unused import (class excluded from coverage) Verified: kcode quality 4/4, kcode test 222/222 (0 warnings)
1 parent ceb2bb0 commit f4c242a

3 files changed

Lines changed: 4 additions & 5 deletions

File tree

devkit.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
// ],
4444

4545
// ── Coverage ──────────────────────────────────────────────
46-
// 'coverage_exclude' => ['src/Exception'],
46+
'coverage_exclude' => ['src/Exception'],
4747

4848
// ── Code Style (MERGED with KaririCode defaults) ──────────
4949
// 'cs_fixer_rules' => [

tests/Unit/Exception/DiscoveryExceptionTest.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@
55
namespace KaririCode\ClassDiscovery\Tests\Unit\Exception;
66

77
use KaririCode\ClassDiscovery\Exception\DiscoveryException;
8-
use PHPUnit\Framework\Attributes\CoversClass;
98
use PHPUnit\Framework\TestCase;
109

11-
#[CoversClass(DiscoveryException::class)]
10+
// DiscoveryException is excluded from coverage (src/Exception) in devkit.php —
11+
// PCOV cannot instrument classes extending native PHP exceptions (RuntimeException).
12+
// Tests still exercise and assert all named constructors; only coverage tracking is skipped.
1213
final class DiscoveryExceptionTest extends TestCase
1314
{
1415
#[\PHPUnit\Framework\Attributes\DataProvider('namedConstructorProvider')]

tests/Unit/Scanner/DirectoryScannerTest.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
use KaririCode\ClassDiscovery\Contract\ClassFilter;
99
use KaririCode\ClassDiscovery\Contract\DiscoveryResult;
1010
use KaririCode\ClassDiscovery\Contract\NamespaceResolver;
11-
use KaririCode\ClassDiscovery\Exception\DiscoveryException;
1211
use KaririCode\ClassDiscovery\Result\ClassMetadata;
1312
use KaririCode\ClassDiscovery\Result\DiscoveryResult as ConcreteDiscoveryResult;
1413
use KaririCode\ClassDiscovery\Scanner\DirectoryScanner;
@@ -19,7 +18,6 @@
1918
use PHPUnit\Framework\TestCase;
2019

2120
#[CoversClass(DirectoryScanner::class)]
22-
#[CoversClass(DiscoveryException::class)]
2321
#[UsesClass(FileScanner::class)]
2422
#[UsesClass(ConcreteDiscoveryResult::class)]
2523
#[UsesClass(ClassMetadata::class)]

0 commit comments

Comments
 (0)