//! Test harness library for brush shell integration tests. //! //! This crate provides a unified framework for running YAML-based integration tests //! that support both oracle-based comparison (comparing brush output against bash) //! and expectation-based testing (inline expectations or insta snapshots). //! //! # Modes of Operation //! //! 1. **Oracle comparison**: Runs both an oracle shell (e.g., bash) and the test shell (brush), //! comparing their outputs. This is the traditional compatibility testing mode. //! //! 2. **Expectation-based**: Runs only the test shell and compares against inline expectations //! specified in the YAML or against insta snapshots. //! //! 3. **Hybrid**: Combines both modes - runs oracle comparison AND validates against expectations. //! Both must pass for the test to succeed. #![cfg(any(unix, windows))] #![allow(clippy::missing_panics_doc)] #![allow(clippy::unwrap_used)] mod comparison; mod config; mod execution; mod reporting; mod runner; mod testcase; pub mod util; pub use comparison::{ DirComparison, DirComparisonEntry, DurationComparison, ExitStatusComparison, ExpectationComparison, OracleComparison, SingleExpectationComparison, SnapshotResult, StringComparison, TestComparison, }; pub use config::{ OracleConfig, OutputFormat, RunnerConfig, ShellConfig, TestMode, TestOptions, WhichShell, }; pub use execution::RunResult; pub use runner::TestRunner; pub use testcase::{ShellInvocation, TestCase, TestCaseSet, TestFile};