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):

Check the exact count of untested branches in each line by expanding the “Raw output” view

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

Line 5 was flagged with a single hit, but only one branch covered

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! ❤️



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Jan Grodowski

software engineer @rainforestqa, hardware hacker and fixed-gear cycling enthusiast from Warsaw, PL.