I don't have any insight in trouble-shooting your exact issue, but I too 
would like a simple, reliable way to exclude packages from -coverpkg=./...

Feels like relying on shell scripts (which is what a google search 
recommends) is a) fragile, and b) not particularly cross-platform.

On Tuesday, March 12, 2024 at 4:29:55 PM UTC-4 TheDiveO wrote:

> Dear Gophers,
>
> I'm struggling with "go test -coverpkg=XXX ... ./... -args 
> -test.gocoverdir" returning non-zero exit codes, albeit all tests are 
> passing. It might well be that I'm not really yet understanding how "go 
> test -coverpkg=" is supposed to work. As illustrated below, I don't want to 
> -coverpkg *all* packages "./..." in my module, but instead all *but one*.
>
> First, I'm using go version go1.22.1 linux/amd64. The same happens for 
> go1.22.0, too.
>
> Now, my repo in a minimized example might look like the following -- 
> unfortunately, I don't see how I can make a useful playground example with 
> the required specific "go test" invocation.
>
>    - github.com/example/foo
>       - bar -- contains tests
>       - baz -- contains tests
>       - foobaz -- no tests
>    
> Following is preparing the list of packages to cover, with the 
> exclusion(s):
>
> GOCOVERTMPDIR="$(mktemp -d)"
> trap 'rm -rf -- "$GOCOVERTMPDIR"' EXIT
> IGNORE_PKGS=("github.com/example/foobaz")
> FILTER_PATTERN="$(printf '^%s$|' "${IGNORE_PKGS[@]}" | sed 's/|$//')"
> PACKAGE_LIST=$(go list ./... | grep -v -E "${FILTER_PATTERN}" | tr '\n' 
> ',' | sed 's/,$//')
> go test -coverpkg="${PACKAGE_LIST}" -v -tags=matchers -p=1 -count=1 -race \
>     ./... -args -test.gocoverdir="$GOCOVERTMPDIR"
>
> This runs all available tests including testable examples with success, 
> but exits with code 1.
>
> Running the same tests with -coverpkg=./... succeeds.
>
> What am I doing wrong? Or might this be an issue?
>
> *Nota bene:* *why do I want to exclude a package from the coverage? 
> Because that is a trimmed-down package (as permitted by its license) 
> following CalVer(!) and having no go.mod, with otherwise large number of 
> unnecessary dependencies in my particular case. It changes the coverage 
> considerably, distracting from the coverage of my own code.*
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/5205bc2f-d321-4194-920f-7b3182927b1dn%40googlegroups.com.

Reply via email to