1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//! # Runner Module
//!
//! Executes BATS (Bash Automated Testing System) test suites and collects results.
//!
//! ## Features
//!
//! - Parallel test execution with configurable workers
//! - Timeout management per test file
//! - TAP (Test Anything Protocol) output parsing
//! - Category-based test filtering
//! - Shell compatibility validation
//!
//! ## Example Usage
//!
//! ```no_run
//! use cli_testing_specialist::runner::BatsExecutor;
//! use std::path::Path;
//!
//! let executor = BatsExecutor::with_timeout(
//! "curl".to_string(),
//! Some("8.7.1".to_string()),
//! 300, // timeout in seconds
//! );
//!
//! let report = executor.run_tests(Path::new("/path/to/tests"))?;
//! println!("Tests passed: {}/{}", report.total_passed(), report.total_tests());
//! # Ok::<(), cli_testing_specialist::error::CliTestError>(())
//! ```
//!
//! ## Category Filtering
//!
//! ```no_run
//! use cli_testing_specialist::runner::BatsExecutor;
//! use std::path::Path;
//!
//! // Skip resource-intensive tests
//! let executor = BatsExecutor::with_timeout(
//! "kubectl".to_string(),
//! Some("1.28.0".to_string()),
//! 300,
//! ).with_skip_categories(vec![
//! "directory-traversal".to_string(),
//! "performance".to_string(),
//! ]);
//!
//! let report = executor.run_tests(Path::new("/path/to/tests"))?;
//! # Ok::<(), cli_testing_specialist::error::CliTestError>(())
//! ```
// Re-export main executor
pub use BatsExecutor;