From 4fc5ba5339e5c6accde1d7a0469d4a357f6ba66d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Monteiro?= Date: Mon, 9 Mar 2026 16:09:06 +0000 Subject: [PATCH] Enforce time.Local = time.UTC in all binary entrypoints --- Makefile | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 9dc3591..bec771a 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: all setup lint build test image-build image-push +.PHONY: all setup lint lint-timezone build test image-build image-push TEST_TIMEOUT := 10s SHELL := /bin/bash @@ -22,13 +22,25 @@ bin/gofumpt: bin build: cmd/main.go CGO_ENABLED=0 go build -ldflags="-X github.com/duneanalytics/blockchain-ingester/client/duneapi.commitHash=$(shell git rev-parse --short HEAD)" -o indexer cmd/main.go -lint: bin/golangci-lint bin/gofumpt +lint: bin/golangci-lint bin/gofumpt lint-timezone go fmt ./... go vet ./... bin/golangci-lint -c .golangci.yml run ./... bin/gofumpt -l -e -d ./ go mod tidy +# All binary entrypoints must set time.Local = time.UTC in init() to ensure +# time.Now() always returns UTC. +lint-timezone: + @fail=0; \ + for f in $$(find . -name main.go -path '*/cmd/*/main.go'); do \ + if ! grep -q 'time\.Local = time\.UTC' "$$f"; then \ + echo "ERROR: $$f missing 'time.Local = time.UTC' in init()"; \ + fail=1; \ + fi; \ + done; \ + if [ "$$fail" -eq 1 ]; then exit 1; fi + test: go mod tidy CGO_ENABLED=1 go test -timeout=$(TEST_TIMEOUT) -race -bench=. -benchmem -cover ./...