From 14cffdbfab6b2daba1ae192ead97ebb1124eeff9 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Wed, 24 Dec 2025 12:47:59 +0100 Subject: [PATCH] gha: run unit-tests in go modules mode, to prevent traversing nested modules `go list` expects a module to be valid, which means that dependencies must either be vendored, or downloaded in the module cache. However, when working in GOPATH mode, `go.mod` files are ignored, which means that `go list` will traverse subdirectories, even if those are a separate module, and those modules may not have their dependencies present. In our case, we try to exclude those modules from paths to be tested, but do so based on the _result_ of `go list`, which already produces errors before we filter. These errors do not impact out tests, as we don't run tests for those paths, but do produce noise in CI, which can be confusing; go test -coverprofile=/tmp/coverage.txt $(go list ./... | grep -vE '/vendor/|/e2e/|/cmd/docker-trust') cmd/docker-trust/internal/trust/trust.go:28:2: cannot find package "github.com/theupdateframework/notary" in any of: /go/src/github.com/docker/cli/vendor/github.com/theupdateframework/notary (vendor tree) /usr/local/go/src/github.com/theupdateframework/notary (from $GOROOT) /go/src/github.com/theupdateframework/notary (from $GOPATH) cmd/docker-trust/internal/trust/trust.go:29:2: cannot find package "github.com/theupdateframework/notary/client" in any of: /go/src/github.com/docker/cli/vendor/github.com/theupdateframework/notary/client (vendor tree) /usr/local/go/src/github.com/theupdateframework/notary/client (from $GOROOT) /go/src/github.com/theupdateframework/notary/client (from $GOPATH) This patch adds a symlink for `go.mod` and `go.sum`, so that listing the packages happens in go modules mode, and doesn't traverse to other modules, such as `cmd/docker-trust`. - updates 06914dd0ff24d5c340f16722ccc2ed94430aa516, which attempted to exclude the docker-trust plugin - similar to cee9ea67fca74a0836111fec76b16ade5e027122, which made this change for the linter. Signed-off-by: Sebastiaan van Stijn --- .github/workflows/test.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ca7380205d71..066745b7d6d7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -71,7 +71,10 @@ jobs: - name: Test run: | - go test -coverprofile=/tmp/coverage.txt $(go list ./... | grep -vE '/vendor/|/e2e/|/cmd/docker-trust') + # run in go modules mode to prevent traversing to nested modules + ln -s vendor.mod go.mod + ln -s vendor.sum go.sum + go test -coverprofile=/tmp/coverage.txt $(go list ./... | grep -vE '^github.com/docker/cli/e2e/') go tool cover -func=/tmp/coverage.txt working-directory: ${{ env.GOPATH }}/src/github.com/docker/cli shell: bash