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 data

Enables 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 generation

Affects 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 coverage

Affects 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 generation

Affects 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 comparison

Affects 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 operations

Enables 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 APIs

Affects 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 observability

Enables 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 observability

Affects 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 DX

Enables 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 DX

Affects 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