From 3c4bcf3ebf56b75f36122cea26a22d5d7bfe1d00 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Sun, 28 Jun 2026 21:06:51 +0000 Subject: [PATCH] build: cover Windows Go files (#1052) - fix Windows-only golangci-lint findings in `lp_windows.go` and process killer handle cleanup - add a `lint-go-windows` target that runs golangci-lint with `GOOS=windows` - include the Windows lint pass in `make lint` so Ubuntu CI covers `_windows.go` files Reviewed-on: https://gitea.com/gitea/runner/pulls/1052 Reviewed-by: Zettat123 <39446+zettat123@noreply.gitea.com> --- Makefile | 10 +++++++++- act/lookpath/lp_windows.go | 2 +- internal/pkg/process/killer_windows.go | 6 +++--- internal/pkg/process/killer_windows_test.go | 2 +- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 0c644bd1..0d3182d0 100644 --- a/Makefile +++ b/Makefile @@ -38,12 +38,15 @@ endif ifeq ($(OS), Windows_NT) GOFLAGS := -v -buildmode=exe EXECUTABLE ?= $(EXECUTABLE).exe + GO_ENV_WINDOWS := set GOOS=windows&& else ifeq ($(OS), Windows) GOFLAGS := -v -buildmode=exe EXECUTABLE ?= $(EXECUTABLE).exe + GO_ENV_WINDOWS := set GOOS=windows&& else GOFLAGS := -v EXECUTABLE ?= $(EXECUTABLE) + GO_ENV_WINDOWS := GOOS=windows endif STORED_VERSION_FILE := VERSION @@ -108,12 +111,17 @@ deps-tools: ## install tool dependencies wait .PHONY: lint -lint: lint-go ## lint everything +lint: lint-go lint-go-windows ## lint everything .PHONY: lint-go lint-go: ## lint go files $(GO) run $(GOLANGCI_LINT_PACKAGE) run +.PHONY: lint-go-windows +lint-go-windows: ## lint Windows go files + $(GO) install $(GOLANGCI_LINT_PACKAGE) + $(GO_ENV_WINDOWS) golangci-lint run + .PHONY: lint-go-fix lint-go-fix: ## lint go files and fix issues $(GO) run $(GOLANGCI_LINT_PACKAGE) run --fix diff --git a/act/lookpath/lp_windows.go b/act/lookpath/lp_windows.go index 12e69098..7044496a 100644 --- a/act/lookpath/lp_windows.go +++ b/act/lookpath/lp_windows.go @@ -62,7 +62,7 @@ func LookPath2(file string, lenv Env) (string, error) { var exts []string x := lenv.Getenv(`PATHEXT`) if x != "" { - for _, e := range strings.Split(strings.ToLower(x), `;`) { + for e := range strings.SplitSeq(strings.ToLower(x), `;`) { if e == "" { continue } diff --git a/internal/pkg/process/killer_windows.go b/internal/pkg/process/killer_windows.go index 81a15303..7d9b44bc 100644 --- a/internal/pkg/process/killer_windows.go +++ b/internal/pkg/process/killer_windows.go @@ -39,13 +39,13 @@ func NewKiller(p *os.Process) (*Killer, error) { h, err := windows.OpenProcess(windows.PROCESS_SET_QUOTA|windows.PROCESS_TERMINATE, false, uint32(p.Pid)) if err != nil { - windows.CloseHandle(job) + _ = windows.CloseHandle(job) return nil, err } - defer windows.CloseHandle(h) + defer func() { _ = windows.CloseHandle(h) }() if err := windows.AssignProcessToJobObject(job, h); err != nil { - windows.CloseHandle(job) + _ = windows.CloseHandle(job) return nil, err } diff --git a/internal/pkg/process/killer_windows_test.go b/internal/pkg/process/killer_windows_test.go index 647e5032..ad2d8461 100644 --- a/internal/pkg/process/killer_windows_test.go +++ b/internal/pkg/process/killer_windows_test.go @@ -23,7 +23,7 @@ func processAlive(pid int) bool { if err != nil { return false } - defer windows.CloseHandle(h) + defer func() { _ = windows.CloseHandle(h) }() var code uint32 if err := windows.GetExitCodeProcess(h, &code); err != nil { return false