From c5e41776b71b2c8a57eb77290944103e02da0fa5 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 doc.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/doc.go | 22 ++++++++++++++++++++++ tools/mod/libs.go | 2 +- tools/mod/tools.go | 2 +- 4 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 tools/mod/doc.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/doc.go b/tools/mod/doc.go new file mode 100644 index 000000000000..e9cd697f803c --- /dev/null +++ b/tools/mod/doc.go @@ -0,0 +1,22 @@ +// 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. + +// 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 source code in the directory directly. This would break scripts for +// unit testing, golangci-lint, and coverage calculation. +// +// Thus, to ensure tools to run normally, we've added this empty file. + +package mod 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/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