41 lines
1.5 KiB
Rust
41 lines
1.5 KiB
Rust
//! 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};
|