web-dev-qa-db-ja.com

ベンダーパッケージを除く、プロジェクト内のすべてのテストファイルでgo testを実行する方法

私のプロジェクトフォルダーには以下が含まれます。

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

すべてのテストファイルに対してgo testを実行したい。ベンダーパッケージ内のテストファイルを除くfoobar_test.goファイル。最も成功したのはgo test ./...でしたが、ベンダーテストファイルが含まれていました。

私はドキュメントで-runオプションに正規表現を渡すことができますが、これを機能させるのに問題があります。たとえば、go test ./*を試しましたが、can't load package errorsがたくさんあります。

これを行う最良の方法は何ですか?

16
Daniel Kobe

-runパターンはテスト識別子とのみ一致します(ファイル名とは一致しません)。原則として次のことができます。

go test -run TestFoo

ただし、Fooをすべてのテスト関数名に追加する必要がある場合は、おそらく必要ありません。

これを行う通常の方法は次のとおりです。

go test $(go list ./... | grep -v /vendor/)

GitHubでの長い議論 があります。最終的に変更されました 別の長い議論の後

Go 1.9 で始まる、vendorディレクトリは自動的に除外されます。これで、これを直接入力できます。

go test ./...
34
Martin Tournoij

cmd/go:一致する...#19090からベンダーディレクトリを除外します

[go] cmd/go:...からベンダーパッケージを除外する

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

ヒントでgo test ./...を実行するか、Go1.9を待ちます。

3
peterSO