Jan Grodowski

Mar 16, 2021

2 min read

Branch coverage now available in Undercover checks ✨

The purpose of branch coverage is to check whether every conditional branch in a given line of code has been tested and Ruby has this feature since 2.5. Ruby’s simplecov can report branch coverage too and now so does undercover with the new 0.4 release!

This addition allows you to detect even more untested code within each automated pull request review, including untested case statements, conditional method calls (e.g. foo&.jump), single-line ifs (return :foo if valid?) or ternaries (foo ? 1 : 2).

Head over to the readme if you’re getting started, otherwise here’s what to do to add branch coverage reporting to a pre-existing undercover or UndercoverCI project setup:

1️⃣ Ensure your test command reports coverage using simplecov >= 0.18.0 and simplecov-lcov >= 0.8.0

2️⃣ Add enable_coverage(:branch) to the simplecov configuration block in spec_ or test_helper.rb:

SimpleCov.start do

3️⃣ That’s it! From now on, your checks will pick up and flag any untested code branches, plus you’ll see the total number of branches per method in the UndercoverCI check summary. 🤙🕵

This is how it looks in a sample check result from UndercoverCI (GitHub App):

And that’s a sample branch coverage result from undercover CLI:

On a closing note, this addition to undercover was possible thanks to PragTob who added branch coverage to SimpleCov and Magne Land’s contribution to the branch cov feature in Undercover. Thank you! ❤️