redis/testing
Use when running go-redis tests of any kind — the full suite, a single test, or a filtered/focused subset (e.g. only cluster, sentinel, or pool specs); bringing up or tearing down the Docker test stack; the e2e maintenance-notifications suite (including the proxy-free logic tests); building or formatting; or setting the REDIS_VERSION / RE_CLUSTER / REDIS_PORT knobs that drive the test image and version gating. Covers how to focus a Ginkgo spec and how to run plain go tests.
npx skills add https://github.com/redis/go-redis --skill testing
Tests run against a Redis stack started via Docker Compose. Profiles in docker-compose.yml control which services come up (standalone, cluster, sentinel, all, e2e, …).
make docker.start # bring up the full test stack (profile: all)
make docker.stop
make test # docker.start -> test.ci -> docker.stop
make test.ci # run tests assuming containers are already up
make test.ci.skip-vectorsets # used when REDIS_VERSION < 8
make bench # go test -bench=. (root module only)
make fmt # gofumpt + goimports (-local github.com/redis/go-redis)
make build
make go_mod_tidy # go mod tidy across every module
The Makefile iterates over every go.mod (GO_MOD_DIRS) for test.ci, go_mod_tidy, etc.
Needs an extra cae-resp-proxy service:
make test.e2e # auto-starts the e2e profile, runs ./maintnotifications/e2e/, tears down
make test.e2e.docker # subset that runs inside docker
make test.e2e.logic # logic-only tests, no proxy required
REDIS_VERSION — e.g. 8.8. Drives both the test image tag and main_test.go version-gating helpers (SkipBeforeRedisVersion / SkipAfterRedisVersion).CLIENT_LIBS_TEST_IMAGE — full image ref, e.g. redislabs/client-libs-test:8.8-m03. (To change the default tag, use the update-ci-image skill — it lives in several files.)RE_CLUSTER=true — point tests at a Redis Enterprise cluster instead of the docker-compose stack. The suite then skips ring/sentinel/TLS-cluster setup.RCE_DOCKER=true — using Redis CE in docker (default for make test).REDIS_PORT — override the default standalone port (6380) used by main_test.go.The root suite is Ginkgo-based (bsm/ginkgo + bsm/gomega forks). go test -run matches the Go-level wrapper, so to focus a Ginkgo spec use the Ginkgo focus flag:
go test -run TestGinkgoSuite . -ginkgo.focus="ZAdd"
go test -run TestGinkgoSuite . -ginkgo.focus="cluster"
Plain go test-style tests (most files outside the Ginkgo suite, e.g. internal/..., maintnotifications/...) work the usual way:
go test -run TestConnStateMachine ./internal/pool/...
go test -race -run TestCircuitBreaker ./maintnotifications/...
Gate Redis-version-specific tests with SkipBeforeRedisVersion / SkipAfterRedisVersion (driven by REDIS_VERSION) rather than skipping at the suite level.
Take redis/testing from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.