简体   繁体   中英

How to run go test on all test files in my project except for vendor packages

My project folder contains:

Makefile  README.md  component/  driver/  service/  vendor/  worker/

I'd like to run go test on all test files, eg foobar_test.go files except for the test files in the vendor package. The closest I've come to success was with go test ./... but that included vendor test files.

I saw in the documentation you can pass a regex to -run option but I'm having trouble getting this working. For example I tried go test ./* , but I get a bunch of can't load package errors .

What's the best way to do this?

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 .

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 technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM