Skip to main content

momus_diff/
runner.rs

1use crate::config::DiffConfig;
2use crate::report::DiffReport;
3use anyhow::Result;
4use momus_core::ast::TestPlan;
5use std::time::Instant;
6
7/// Execute a diff run between two environments.
8///
9/// Runs the plan against both `baseline_url` and `target_url`,
10/// then compares responses field-by-field.
11///
12/// # Errors
13///
14/// Returns an error if the HTTP client fails to initialize.
15pub async fn run_diff(plan: &TestPlan, config: &DiffConfig) -> Result<DiffReport> {
16    let _start = Instant::now();
17    let _ = (plan, config); // TODO: implement in v0.2.0
18
19    tracing::info!(
20        "Running diff on '{}': baseline={}, target={}",
21        plan.name,
22        config.baseline_url,
23        config.target_url
24    );
25
26    Ok(DiffReport {
27        plan_name: plan.name.clone(),
28        baseline_url: config.baseline_url.clone(),
29        target_url: config.target_url.clone(),
30        total_endpoints: 0,
31        identical: 0,
32        different: 0,
33        fields_added: 0,
34        fields_removed: 0,
35        fields_modified: 0,
36        duration_secs: _start.elapsed().as_secs_f64(),
37        diffs: vec![],
38    })
39}