Updated August 18 per discussion on /r/golang. Thanks to user Bake_Jailey for noting that running go mod tidy
can do more than just remove unneeded module requirements.
Now that Go modules are a thing, I’m starting to use them for my Go projects. So far it’s been a nice improvement from dep
and before that, godep
.
With Go modules you end up with two files in your repo, go.mod
and go.sum
. The former file stores a list of your dependencies. The go binary will automatically keep these files up to date when you run things like go build
. Or at least mostly up to date. When you remove a dependency it does not get automatically removed from the go.mod
file. Instead, you need to run go mod tidy
to remove unneeded deps from this file. And of course if you haven’t run go build
yet, then a new dependency won’t be added at commit time.
Unfortunately, go mod tidy
always exits with a 0, even if it added or removed a dependency. So if you want to test that this file is up to date in CI, you need to do it yourself. Here’s my little script for doing so:
|
|
This runs go mod tidy
and checks to see if it modified either of the files we care about.
Of course, the right way to do this is to add an option to go mod tidy
to do these sorts of checks. See https://github.com/golang/go/issues/27005 for a discussion of exactly that.
You can add this as a script
step in your .travis
file:
|
|