From 117598a59f0ef0a4089624a9fbf3363770f958bd Mon Sep 17 00:00:00 2001 From: Chun-Hung Tseng Date: Sat, 14 Sep 2024 22:48:08 +0200 Subject: [PATCH] Add tools/mod to module_dirs As `tools/mod` also contains the `go.mod` file. We should add it to the `module_dirs` variable, so that when executing `./scripts/fix.sh`, the proper checks and fixes can be applied. To address the issue of broken unit tests and code coverage due to the directory's lack of Go code, we've introduced a new mod.go file. This file acts as a placeholder, enabling tools like golangci-lint and go test to function correctly. --- Discovered when working on https://github.com/etcd-io/etcd/pull/18575 The directories are checked against the following: - Command: `find . -type f -name go.mod -exec dirname {} \;` - Output: ``` ./etcdutl . ./tools/testgrid-analysis ./tools/rw-heatmaps ./tools/mod ./etcdctl ./tests ./server ./api ./client/internal/v2 ./client/v3 ./client/pkg ./pkg ``` Signed-off-by: Chun-Hung Tseng --- scripts/test_lib.sh | 2 +- tools/mod/libs.go | 2 +- tools/mod/mod.go | 9 +++++++++ tools/mod/tools.go | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 tools/mod/mod.go diff --git a/scripts/test_lib.sh b/scripts/test_lib.sh index 41e9a5e15311..8303d1643f5e 100644 --- a/scripts/test_lib.sh +++ b/scripts/test_lib.sh @@ -166,7 +166,7 @@ function run_for_module { } function module_dirs() { - echo "api pkg client/pkg client/internal/v2 client/v3 server etcdutl etcdctl tests tools/rw-heatmaps tools/testgrid-analysis ." + echo "api pkg client/pkg client/internal/v2 client/v3 server etcdutl etcdctl tests tools/mod tools/rw-heatmaps tools/testgrid-analysis ." } # maybe_run [cmd...] runs given command depending on the DRY_RUN flag. diff --git a/tools/mod/libs.go b/tools/mod/libs.go index 48d537e2dc05..fd392d55a9f7 100644 --- a/tools/mod/libs.go +++ b/tools/mod/libs.go @@ -15,7 +15,7 @@ //go:build libs // This file implements that pattern: -// https://github.com/golang/go/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module +// https://go.dev/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module // for etcd. Thanks to this file 'go mod tidy' does not removes dependencies. package libs diff --git a/tools/mod/mod.go b/tools/mod/mod.go new file mode 100644 index 000000000000..56ed3d3019d5 --- /dev/null +++ b/tools/mod/mod.go @@ -0,0 +1,9 @@ +package mod + +// As this directory implements the pattern for tracking tool dependencies as documented here: +// https://go.dev/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module +// it doesn't contain any valid Go code directly. + +// This would break scripts for unit testing and coverage calculation. However, +// to ensure tools like golangci-lint and go test run normally and perform go mod checks, +// we've added this empty file. diff --git a/tools/mod/tools.go b/tools/mod/tools.go index 72afb804501d..ce9af7751784 100644 --- a/tools/mod/tools.go +++ b/tools/mod/tools.go @@ -15,7 +15,7 @@ //go:build tools // This file implements that pattern: -// https://github.com/golang/go/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module +// https://go.dev/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module // for etcd. Thanks to this file 'go mod tidy' does not removes dependencies. package tools