How to run go test on all test files in my project except for vendor packages
cmd/go: exclude vendor dir from matching
...
#19090[go] cmd/go: exclude vendored packages from ... matches
By overwhelming popular demand, exclude vendored packages from ... matches, by making ... never match the "vendor" element above a vendored package. go help packages now reads: An import path is a pattern if it includes one or more "..." wildcards, each of which can match any string, including the empty string and strings containing slashes. Such a pattern expands to all package directories found in the GOPATH trees with names matching the patterns. To make common patterns more convenient, there are two special cases. First, /... at the end of the pattern can match an empty string, so that net/... matches both net and packages in its subdirectories, like net/http. Second, any slash-separted pattern element containing a wildcard never participates in a match of the "vendor" element in the path of a vendored package, so that ./... does not match packages in subdirectories of ./vendor or ./mycode/vendor, but ./vendor/... and ./mycode/vendor/... do. Note, however, that a directory named vendor that itself contains code is not a vendored package: cmd/vendor would be a command named vendor, and the pattern cmd/... matches it. Fixes #19090.
go / go / fa1d54c2edad607866445577fe4949fbe55166e1
commit fa1d54c2edad607866445577fe4949fbe55166e1 Wed Mar 29 18:51:44 2017 +0000
Try running go test ./...
at tip or wait for Go1.9.
The -run
pattern is matched only against the test identifier (not the filename); in principle you could do:
go test -run TestFoo
but when you'd have to add Foo
to all your test function names, which you probably don't want.
The ...
wildcard excludes the ./vendor
directory since Go 1.9, so you can now just run go test ./...
and it won't include ./vendor
.