docs: add TESTING.md covering test tiers, Docker suites, and CI gates - #1075
Draft
joshrotenberg wants to merge 1 commit into
Draft
docs: add TESTING.md covering test tiers, Docker suites, and CI gates#1075joshrotenberg wants to merge 1 commit into
joshrotenberg wants to merge 1 commit into
Conversation
Closes the "Add a dedicated TESTING.md" checkbox in #628. The repository had no single place describing how it is tested. Test invocations were scattered across module doc comments in the test files themselves, and some of those were stale: several tell you to run `docker compose up -d`, but there is no compose file at the repository root. The Enterprise demo cluster lives at docker/docker-compose.enterprise-demo.yml. TESTING.md documents: - the four test tiers (unit, integration, MCP request-shape, live Docker) and the exact command for each - why the unit-test target flags differ per package (redisctl is bin-only, redisctl-core has no bin, --bins matters for redisctl-mcp) - Docker prerequisites, the correct compose path, the credentials the Enterprise suites expect, and REUSE_CONTAINERS for faster iteration - that the feature-gated test files compile to empty binaries when their feature is off, so --all-features is needed to be sure a suite ran - what each CI job runs and which ones gate the aggregate CI Status check CONTRIBUTING.md and README.md link to it, and the CONTRIBUTING.md compose command is corrected to the real path.
This was referenced Jul 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes the "Add a dedicated
TESTING.mdcovering local tiers, Docker prerequisites, ignored live tests, and CI expectations" checkbox in #628.Why
There was no single place describing how the repository is tested. Test invocations lived in module doc comments inside the test files themselves, which meant you had to already know a suite existed to find out how to run it. Some of those comments are also stale:
crates/redisctl/tests/enterprise_docker_integration_tests.rsandcrates/redisctl-mcp/tests/enterprise_mcp_docker_integration_tests.rsboth tell you to rundocker compose up -d, but there is no compose file at the repository root. The Enterprise demo cluster is atdocker/docker-compose.enterprise-demo.yml.What TESTING.md covers
crates/*/tests/, wiremock-backed MCP request-shape tests, and the#[ignore]d live Docker suites.ci.yml:redisctlis bin-only so--liberrors there,redisctl-corehas no bin, and--binsmatters forredisctl-mcpbecause the safety-tier registration tests live inmain.rs.REDIS_ENTERPRISE_*values the suites expect,REUSE_CONTAINERS=1for faster iteration, and why the MCP Enterprise suite needs--test-threads=1.--ignoredrun against a stopped cluster reports passes with skip messages rather than failures.redis_tools.rsandredis_stack_tools.rsare#![cfg(feature = "database")]andenterprise_mcp_docker_integration_tests.rsis#![cfg(feature = "enterprise")], so a file whose feature is off compiles to an empty binary and silently passes. Use--all-featureswhen you want to be sure a suite ran.ci.ymljob runs, which ones gate the aggregateCI Statuscheck (non-Linux build failures do not), plus thedocs.yml,cargo-deny.yml, andsecurity.ymlgates and which of their steps arecontinue-on-error.Deliberately no test counts: those drift on every PR that adds a test.
Also changed
CONTRIBUTING.md: links to TESTING.md from both the development-setup and testing sections, and the compose command is corrected fromdocker compose up -dto the real path.README.md: links to TESTING.md from the Contributing section.Checks
cargo fmt --all -- --check,cargo clippy --all-targets --all-features -- -D warnings,cargo test --workspace --all-features: all pass.markdownlint '**/*.md' --disable MD013 MD033 MD041on the changed files: TESTING.md is clean.CONTRIBUTING.mdandREADME.mdreport the same 16 pre-existing errors before and after this change, so no new ones.Not covered
The other unchecked boxes in #628 (hosted Enterprise/Cloud test environments, credential rotation ownership, spend limits, the test-badge decision) need infrastructure and maintainer decisions rather than documentation, so they stay open.