From a0c4aedb2d375344bd03fd3848762205958dd902 Mon Sep 17 00:00:00 2001 From: RunasSudo Date: Sat, 24 May 2025 00:43:40 +1000 Subject: [PATCH] Validate dynamic builder outputs --- src/reporting/calculator.rs | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/reporting/calculator.rs b/src/reporting/calculator.rs index 501430f..b10f4a7 100644 --- a/src/reporting/calculator.rs +++ b/src/reporting/calculator.rs @@ -226,14 +226,31 @@ pub fn steps_for_targets( &dependencies, &context, ) { - new_steps.push((builder.build)( + let new_step = (builder.build)( dependency.product.name, dependency.product.kind, dependency.product.args.clone(), &steps, &dependencies, &context, - )); + ); + + // Check new step meets the dependency + if new_step.id().name != dependency.product.name { + panic!("Unexpected step returned from dynamic builder (expected name {}, got {})", dependency.product.name, new_step.id().name); + } + if new_step.id().args != dependency.product.args { + panic!("Unexpected step returned from dynamic builder {} (expected args {:?}, got {:?})", dependency.product.name, dependency.product.args, new_step.id().args); + } + if !new_step + .id() + .product_kinds + .contains(&dependency.product.kind) + { + panic!("Unexpected step returned from dynamic builder {} (expected kind {:?}, got {:?})", dependency.product.name, dependency.product.kind, new_step.id().product_kinds); + } + + new_steps.push(new_step); break; } }