Go: code coverage of the current diff

Every time I write tests in my Go projects, I use code coverage to be completely sure I don’t skip important parts that I intended to test. For viewing the reports, depending on the situation, I use either the built-in coverage reports in Neovim (powered by vim-go plugin), or for more complex cases – gocovsh.

In small projects, both ways work great. On larger codebases there might be some issues navigating the reports: it might take some time to find the files I actually modify across packages. This struggle was the reason behing this pull request.

One of my favourite gocovsh features is an ability to parse git diff output and overlay Go code coverage reports on top of it. Following the Unix philosophy, gocovsh accepts the familiar output of git diff as its input instead (both with --name-only flag and without it):

# when on some feature branch
$ git diff master | gocovsh

go code coverage of the current diff in the
command line

In this mode, gocovsh will not only show only the Go files affected by your current work, but also will filter the lines you haven’t touched from the output.

Enjoy the distraction-free coverage reports straght in the command line, and don’t forget to give gocovsh a star ⭐️