clnrm_core/
lib.rs

1//! Cleanroom Testing Platform - Hermetic Integration Testing
2//!
3//! A framework for reliable, hermetic integration testing with automatic
4//! container lifecycle management and comprehensive observability.
5//!
6//! This library provides a complete testing platform that tests itself
7//! through the "eat your own dog food" principle - the framework validates
8//! its own functionality using its own capabilities.
9
10pub mod assertions;
11pub mod backend;
12pub mod cache;
13pub mod chaos;
14pub mod cleanroom;
15pub mod cli;
16pub mod config;
17pub mod coverage;
18pub mod determinism;
19pub mod error;
20pub mod formatting;
21pub mod macros;
22pub mod otel;
23pub mod policy;
24pub mod reporting;
25pub mod scenario;
26pub mod services;
27pub mod telemetry;
28pub mod utils;
29pub mod validation;
30pub mod watch;
31
32// Testing utilities (includes property-based test generators)
33pub mod testing;
34
35// Re-export test suite types
36pub use testing::{FrameworkTestResults, SuiteResult, TestResult as TestingTestResult};
37
38pub use error::{CleanroomError, Result};
39pub use policy::{Policy, SecurityLevel, SecurityPolicy};
40pub use scenario::scenario;
41
42pub use telemetry::weaver_controller::{
43    ValidationReport as WeaverValidationReport, ValidationStatus, WeaverConfig, WeaverController,
44};
45pub use telemetry::{Export, OtelConfig, OtelGuard};
46// Type-safe Weaver coordination exports
47pub use telemetry::weaver_coordination::{
48    Running, Stopped, Unstarted, WeaverConfig as TypeSafeWeaverConfig,
49    WeaverController as TypeSafeWeaverController,
50};
51
52pub use assertions::{cache, database, email_service, UserAssertions};
53pub use cache::{Cache, CacheManager, CacheStats, FileCache, MemoryCache};
54pub use cleanroom::{
55    CleanroomEnvironment, ExecutionResult, HealthStatus, ServiceHandle, ServicePlugin,
56    ServiceRegistry,
57};
58pub use config::{
59    load_cleanroom_config, load_cleanroom_config_from_file, load_config_from_file,
60    parse_toml_config, CleanroomConfig, DeterminismConfig, ScenarioConfig, StepConfig, TestConfig,
61};
62pub use determinism::DeterminismEngine;
63pub use formatting::{
64    format_test_results, format_toml_content, format_toml_file, needs_formatting, Formatter,
65    FormatterType, HumanFormatter, JsonFormatter, JunitFormatter, TapFormatter, TestResult,
66    TestStatus, TestSuite,
67};
68pub use macros::{with_cache, with_database, with_message_queue, with_web_server};
69pub use reporting::{generate_reports, DigestReporter, JsonReporter, JunitReporter, ReportConfig};
70pub use services::generic::GenericContainerPlugin;
71pub use services::surrealdb::SurrealDbPlugin;
72
73// Re-export template functionality from clnrm-template
74pub use clnrm_template::{
75    get_cached_template_renderer, is_template, render_template, render_template_file,
76    DeterminismConfig as TemplateDeterminismConfig, TemplateContext, TemplateError,
77    TemplateRenderer,
78};
79
80pub use validation::otel::{OtelValidationConfig, OtelValidator, SpanAssertion, TraceAssertion};
81pub use validation::{PrdExpectations, ShapeValidator, ValidationReport};
82pub use watch::{debouncer::FileDebouncer, WatchConfig};
83
84// Coverage tracking and reporting
85pub use coverage::manifest::{BehaviorManifest, Dimensions, SystemInfo};
86pub use coverage::report::{ReportFormat, ReportGenerator};
87pub use coverage::tracker::CoverageTracker;
88pub use coverage::{
89    BehaviorCoverage, BehaviorCoverageReport, DimensionCoverage, DimensionWeights, StateTransition,
90    UncoveredBehaviors,
91};
92
93// The cleanroom_test macro is already exported via #[macro_export] in macros.rs
94
95/// Result of a cleanroom run
96#[derive(Debug)]
97pub struct RunResult {
98    pub success: bool,
99    pub duration_ms: u64,
100    pub output: String,
101    pub error: Option<String>,
102}