This commit is contained in:
Hassan Abedi 2026-06-15 15:40:34 +02:00
parent 7bfd582884
commit c0238e6b4a

View File

@ -163,26 +163,9 @@ fn main() -> ExitCode {
return ExitCode::from(1);
};
if trace {
match verify(&plan, &relation) {
Ok(true) => {
let expected = plan.expected_bindings.as_ref().map_or(0, |e| e.rows.len());
let columns = plan
.expected_bindings
.as_ref()
.map(|e| e.columns.join(", "))
.unwrap_or_default();
eprintln!(
"verify: bindings match expected_bindings ({expected} rows over {columns})"
);
}
Ok(false) => eprintln!("verify: no expected_bindings in plan, skipped"),
Err(err) => {
eprintln!("verify: FAILED: {err}");
if trace && !trace_verify(&plan, &relation) {
return ExitCode::from(1);
}
}
}
let payload = serde_json::json!({
"columns": relation.columns,
@ -266,6 +249,31 @@ fn build_tables_for(
}
}
/// Narrate the oracle check. Returns `false` if the bindings differ from
/// the plan's `expected_bindings`, so the caller can exit nonzero.
fn trace_verify(plan: &Plan, relation: &Relation) -> bool {
match verify(plan, relation) {
Ok(true) => {
let expected = plan.expected_bindings.as_ref().map_or(0, |e| e.rows.len());
let columns = plan
.expected_bindings
.as_ref()
.map(|e| e.columns.join(", "))
.unwrap_or_default();
eprintln!("verify: bindings match expected_bindings ({expected} rows over {columns})");
true
}
Ok(false) => {
eprintln!("verify: no expected_bindings in plan, skipped");
true
}
Err(err) => {
eprintln!("verify: FAILED: {err}");
false
}
}
}
fn trace_plan_header(plan: &Plan, backend: Backend) {
if let Some(name) = &plan.scenario {
eprintln!("scenario: {name}");