SimpleCov: Test Coverage for Changed Files Only

November 13, 2012|1 Min Read|Comments|

The other day a colleague asked whether or not it’s possible to have SimpleCov return a group that only contains uncommitted changes.

The answer is yes! After some digging around, we found the following way:

# in spec_helper.rb
SimpleCov.start 'rails' do
  add_group 'Changed' do |source_file|
    `git ls-files --exclude-standard --others \
      && git diff --name-only \
      && git diff --name-only --cached`.split("\n").detect do |filename|

Basically use git ls-files --exclude-standard --others for untracked files, git diff --name-only for unstaged files and git diff --name-only --cached for staged files.

< Back to Blog