Cargo Features
[dependencies]
chicago-tdd-tools = { version = "1.4.0", default-features = false, features = ["workflow-engine", "mutation-testing", "async", "benchmarking", "property-testing", "snapshot-testing", "fake-data", "concurrency-testing", "parameterized-testing", "cli-testing", "git-hooks", "otel", "weaver", "testcontainers", "logging", "testing-extras", "testing-full", "observability-full", "integration-full"] }
Note: cargo-mutants is a CLI tool, install via: cargo install cargo-mutants
- default = logging
-
Default features: Minimal set for best DX
logging: Alert helpers integration with log crate (enabled by default) - workflow-engine
-
Core features (always available - no dependencies)
Enable workflow-specific features - mutation-testing testing-full?
-
Enable mutation testing (no external dependencies)
- async
-
Enable async performance measurement utilities (no external dependencies)
Affects
async_fixture::AsyncFixtureProvider,async_fixture::AsyncFixtureManager,async_fixture::DefaultAsyncFixtureProvider,performance::measure_ticks_async,performance::AsyncTickMeasurer… - benchmarking
-
Enable criterion benchmarking (install criterion separately for benches/)
Affects
performance::Benchmark… - property-testing testing-extras? testing-full?
-
Individual testing features
Property-based testing: Random test generation, finding edge cases When to use: Testing properties that should hold for all inputs, finding edge cases Enables: testing::property module, ProptestStrategy, PropertyTestGenerator Common combo: Use with fake-data for realistic test dataEnables arbitrary and proptest
proptest:
Property-based testing (optional, property-testing feature)
When to use: Random test generation, finding edge cases, property verification Enables: testing::property module, ProptestStrategy API, PropertyTestGenerator Common combo: Use with fake-data for realistic test data generationAffects
property::ProptestStrategy… - snapshot-testing testing-extras? testing-full?
-
Snapshot testing: Output comparison, regression testing When to use: Testing complex data structures, ensuring output stability Enables: testing::snapshot module, SnapshotAssert API Common combo: Use with property-testing for comprehensive coverage
Enables insta
Snapshot testing (optional, snapshot-testing feature)
When to use: Testing complex data structures, output stability, regression testing Enables: testing::snapshot module, SnapshotAssert API Common combo: Use with property-testing for comprehensive test coverageAffects
snapshot::SnapshotAssert… - fake-data testing-extras? testing-full?
-
Fake data generation: Realistic test data creation When to use: Avoiding magic numbers, generating realistic test data Enables: builders::FakeDataBuilder, fake data helpers Common combo: Use with property-testing for comprehensive test data
Enables fake ^3.0
Fake data generation (optional, fake-data feature)
When to use: Realistic test data generation, avoiding magic numbers in tests Enables: builders::FakeDataBuilder, fake data generation helpers Common combo: Use with property-testing for comprehensive test data generationAffects
builders::FakeDataGenerator… - concurrency-testing testing-full?
-
Concurrency testing: Thread model checking, deterministic concurrency testing When to use: Detecting concurrency bugs, verifying thread safety Enables: testing::concurrency module, LoomModel API
Enables loom
Concurrency testing (optional, concurrency-testing feature)
When to use: Thread model checking, concurrency bug detection, deterministic testing Enables: testing::concurrency module, LoomModel API Note: Loom provides deterministic concurrency testing (exhaustive exploration)Affects
concurrency::ConcurrencyTest… - parameterized-testing testing-full?
-
Parameterized testing: Multiple inputs, test matrices When to use: Testing multiple inputs efficiently, fixture injection Enables: rstest integration, parameterized test macros Common combo: Use with snapshot-testing for parameterized snapshots
Enables rstest ^0.19
Parameterized testing (optional, parameterized-testing feature)
When to use: Testing multiple inputs, test matrices, fixture injection Enables: rstest integration, parameterized test macros Common combo: Use with snapshot-testing for parameterized snapshot tests - cli-testing testing-full?
-
CLI testing: Command-line tool testing, golden files When to use: Testing CLI tools, verifying command output Enables: testing::cli module, CliTest API, trycmd integration
Enables trycmd ^0.15
CLI testing (optional, cli-testing feature)
When to use: Testing command-line tools, golden file testing, CLI output verification Enables: testing::cli module, CliTest API, trycmd integration Note: Uses golden files (.trycmd) for CLI output comparisonAffects
cli::CliTest,cli::CliCommandBuilder,cli::CliAssertions,cli::CliEnvironment… - git-hooks
-
Git hooks support (optional, git-hooks feature)
When to use: Installing Rust-based git hooks, version-controlled hooks Enables: git_hook_installer binary, git2 dependency for repository operationsEnables git2
- otel observability-full? weaver?
-
Observability features
OTEL validation: OpenTelemetry span/metric validation When to use: Validating OTEL instrumentation, span/metric verification Enables: observability::otel module, OTEL validation APIsAffects
otel::SpanValidator,otel::MetricValidator,otel::OtelTestHelper,otel::test_helpers,poka_yoke::state,poka_yoke::ValidAttributeValue,poka_yoke::ValidAttributeName,poka_yoke::ValidAttribute,poka_yoke::Span,unified::ObservabilityResult,macros::weaver_test,observability::fixtures… - weaver integration-full? observability-full? = otel
-
Weaver live validation: Weaver integration with OTEL When to use: Live validation of Weaver telemetry, Weaver admin API integration Enables: observability::weaver module, WeaverValidationResult, WeaverLiveCheck Dependency: Requires otel feature (automatically enabled)
Enables reqwest ^0.11
HTTP client for Weaver admin endpoint (optional, weaver feature)
When to use: Weaver live validation, checking Weaver admin API endpoints Enables: HTTP requests to Weaver admin API
Dependency: Requires weaver feature (automatically enabled)and tempfile
Temporary file/directory creation (optional, weaver feature)
When to use: Weaver test fixtures, temporary report directories Enables: TempDir for WeaverTestFixture
Dependency: Requires weaver feature (automatically enabled)and opentelemetry, opentelemetry-otlp, and opentelemetry_sdk
opentelemetry:
OpenTelemetry SDK for sending telemetry (optional, weaver feature)
When to use: Sending telemetry data to Weaver, OTEL trace validation Enables: OTEL trace export, Weaver telemetry integration Dependency: Requires weaver feature (automatically enabled)Affects
weaver::poka_yoke,weaver::lifecycle,weaver::WeaverValidator,weaver::send_test_span_to_weaver,weaver::validate_schema_static,macros::weaver_test,observability::fixtures…Required by the weaver_smoke binary
- testcontainers integration-full?
-
Integration testing
Testcontainers: Docker container support for integration testing When to use: Integration testing with real services, Docker-based testing Enables: integration::testcontainers module, Docker container lifecycle Common combo: Use with weaver for full integration testing with observabilityEnables testcontainers ^0.25
Testcontainers support (optional, testcontainers feature)
When to use: Integration testing with Docker containers, real service dependencies Enables: integration::testcontainers module, Docker container lifecycle management Common combo: Use with weaver for full integration testing with observabilityAffects
testcontainers::implementation,poka_yoke::state,poka_yoke::Container,poka_yoke::ValidContainerConfig… - logging default
-
Logging: Standard log crate integration
When to use: Alert helpers with log macros, structured logging Enables: AlertLogger integration with log::error!, log::warn!, etc.
Note: Enabled by default for better DXEnables log
Logging facade (optional, logging feature)
When to use: Alert helpers integration with log crate, structured logging in tests Enables: AlertLogger integration with log macros (log::error!, log::warn!, etc.)
Note: Enabled by default for better DXAffects
alert::AlertLogger… - testing-extras = fake-data, property-testing, snapshot-testing
-
Feature groups (convenience bundles for common use cases)
These reduce cognitive load by enabling common feature combinations with a single flag
Testing extras: Most common advanced testing features Includes: property-testing, snapshot-testing, fake-data When to use: Comprehensive test coverage with property-based and snapshot testing Rationale: These three features are commonly used together for advanced testing - testing-full = cli-testing, concurrency-testing, fake-data, mutation-testing, parameterized-testing, property-testing, snapshot-testing
-
Testing full: All testing features
Includes: property-testing, snapshot-testing, mutation-testing, concurrency-testing,
parameterized-testing, cli-testing, fake-data When to use: Maximum testing capabilities, comprehensive test suite Rationale: Enables all testing features for projects requiring full testing coverage - observability-full = otel, weaver
-
Observability full: Complete observability stack
Includes: otel, weaver
When to use: Full observability validation with Weaver integration Rationale: otel and weaver are commonly used together for complete observability - integration-full = testcontainers, weaver
-
Integration full: Full integration testing with observability Includes: testcontainers, weaver
When to use: Integration testing with Docker containers and Weaver observability Rationale: testcontainers and weaver together provide complete integration testing