#!/usr/bin/env bash set -euo pipefail export GOPROXY=off GOFLAGS=-mod=mod git checkout HEAD -- internal/ratelimit/bucket_test.go go test ./... 2>&1 cat > internal/ratelimit/zz_verify_test.go <<'GO' package ratelimit import ( "testing" "time" ) // After a long idle period the bucket must refill to capacity and no further: // the bug was that b.last was never advanced, so every call re-credited the // entire elapsed time since construction. func TestIdleDoesNotGrantUnlimitedTokens(t *testing.T) { now := time.Now() b := New(3, 1) b.now = func() time.Time { return now } b.last = now now = now.Add(time.Hour) allowed := 0 for i := 0; i < 50; i++ { if b.Allow() { allowed++ } } if allowed != 3 { t.Fatalf("after idling, %d requests were allowed; capacity is 3", allowed) } } GO go test ./... 2>&1