use crate::cli::pipeline;
use crate::core::config::ResolvedCrateConfig;
use super::stage_failures::StageFailures;
pub(crate) fn run_snippet_coverage_preflight(
crates_to_process: &[&ResolvedCrateConfig],
config_path: &std::path::Path,
failures: &mut StageFailures,
) {
for resolved_cfg in crates_to_process {
let Some(e2e_config) = &resolved_cfg.e2e else {
continue;
};
let api = match pipeline::extract(resolved_cfg, config_path, false) {
Ok(api) => api,
Err(error) => {
failures.record(
&format!("[{}] snippet coverage precondition (extract)", resolved_cfg.name),
error,
);
continue;
}
};
let coverage = match crate::e2e::evaluate_snippet_coverage(
resolved_cfg,
e2e_config,
&api.types,
&api.enums,
&api.functions,
) {
Ok(coverage) => coverage,
Err(error) => {
failures.record(&format!("[{}] snippet coverage precondition", resolved_cfg.name), error);
continue;
}
};
let Some(coverage) = coverage else {
continue;
};
if let Err(error) = crate::e2e::ensure_fresh_snippet_coverage_complete(&coverage) {
failures.record(&format!("[{}] snippet coverage precondition", resolved_cfg.name), error);
}
}
}