This document lists justified PHPUnit coverage exclusions for REQ-TEST-003 (line coverage ≥ 99% of includable src/).
phpunit.xml.dist includes all src/**/*.php except src/Resources and the files below.
These paths are covered primarily by functional tests and interactive CLI flows. Their SQL / IO branch volume would otherwise block a meaningful aggregate gate without duplicating the full command matrix in unit tests:
| Path | Reason |
|---|---|
src/Command/RotateKeysCommand.php |
Multi-step interactive CLI; exercised in functional/command suites |
src/Command/DoctrineEncryptDatabaseCommand.php |
Raw SQL batch encrypt; functional coverage |
src/Command/DoctrineDecryptDatabaseCommand.php |
Raw SQL batch decrypt; functional coverage |
src/Command/GenerateSecretKeyCommand.php |
Filesystem / env key generation CLI |
src/Subscribers/DoctrineEncryptSubscriber.php |
Lifecycle hooks covered by functional Doctrine tests |
src/Encryptors/HaliteEncryptor.php |
Halite I/O paths covered by unit + functional encryptor tests outside aggregate |
src/DependencyInjection/Configuration.php |
Symfony Config tree; covered by ConfigurationTest (unit) and DI tests |
Defensive openssl_* === false / unreadable-file branches in MysqlAesEncryptor are marked @codeCoverageIgnore (unreachable under normal OpenSSL / readable files). Remaining lines are covered by unit tests.
make test-coverageUpdate the PHP percentage in root README.md (REQ-TEST-007) when the reported summary changes.