mcpbeat

Testing

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.

789 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
22209
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/redis/go-redis --skill testing

The instruction itself

6 sections, as written by the author

Running tests, builds, and the Docker stack

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 targets

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.

E2E (maintenance notifications)

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

Env knobs (passed through the Makefile)

  • 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.

Running a single test

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/...

Version-gating

Gate Redis-version-specific tests with SkipBeforeRedisVersion / SkipAfterRedisVersion (driven by REDIS_VERSION) rather than skipping at the suite level.

How to use it

Copy the folder

Take redis/testing from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

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.