Line coverage counts whether a line executed, and a line with two outcomes is fully covered by exercising one of them.
<coverage>
<report>
<html outputDirectory="build/coverage"/>
<text outputFile="php://stdout" showOnlySummary="true"/>
</report>
</coverage>
# and the flag that reports the useful number
$ phpunit --coverage-text --path-coverage
# Lines: 94.20%
# Branches: 71.40% ← the one that means something
# Paths: 52.10%
Path coverage requires Xdebug rather than PCOV and is considerably slower, which is why it belongs on a nightly run rather than every push. The gap between line and branch coverage is a useful single number: a large one means the tests execute the code without exploring it, which is the condition mutation testing measures more precisely.