From 8dd4a56fa2a46f9a73aee1caff48708b0bec37dd 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 | 23 +++++++++++++++++++++++ tools/mod/tools.go | 2 +- 4 files changed, 26 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..17fdd1750a32 --- /dev/null +++ b/tools/mod/mod.go @@ -0,0 +1,23 @@ +// Copyright 2024 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +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