use super::*;
use crate::process::SystemProcessRunner;
use ito_config::types::{CoordinationStorage, ItoConfig};
use std::path::Path;
fn embedded_config() -> ItoConfig {
let mut cfg = ItoConfig::default();
cfg.changes.coordination_branch.storage = CoordinationStorage::Embedded;
cfg.worktrees.enabled = false;
cfg
}
#[test]
fn run_repo_validation_skips_inactive_rules() {
let config = embedded_config();
let runner = SystemProcessRunner;
let staged = StagedFiles::empty();
let report = run_repo_validation(&config, Path::new("/"), &staged, &runner, false);
assert!(
report.valid,
"expected valid report; issues: {:?}",
report.issues
);
assert!(report.issues.is_empty());
}
#[cfg(feature = "coordination-branch")]
#[test]
fn run_repo_validation_strict_promotes_warnings_to_errors() {
let mut config = embedded_config();
config.changes.coordination_branch.name = "coordination/foo".to_string();
let runner = SystemProcessRunner;
let staged = StagedFiles::empty();
let lenient = run_repo_validation(&config, Path::new("/"), &staged, &runner, false);
assert!(!lenient.issues.is_empty(), "warning expected");
assert!(
lenient.valid,
"lenient mode: warning should not invalidate the report"
);
let strict = run_repo_validation(&config, Path::new("/"), &staged, &runner, true);
assert!(
!strict.valid,
"strict mode: warning should invalidate the report"
);
}