go fmt and CI

I am dealing with golang and CI (namely CircleCI) recently. There are lots of tricks to speed up the build / test in CI and this is a short post about go fmt.

This CircleCI blog post suggests the use of this:

! go fmt ./... 2>&1 | read

However, I find this unreliable as it works locally but exits with return code >128 for read on CircleCI. According to the man page, it indicates some kind of a timeout.

The more reliable way should be to capture the output and test whether it is empty:

output=$(go fmt ./... 2>&1)
test -z "$output"
Tags// , , ,