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

前端 未结 2 2002
面向向阳花
面向向阳花 2020-12-10 01:47

My project folder contains:

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

I\'d like to run go test on a

相关标签:
2条回答
  • 2020-12-10 02:09

    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.

    0 讨论(0)
  • 2020-12-10 02:18

    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.

    0 讨论(0)
提交回复
热议问题