diff --git a/crates/macros/src/lib.rs b/crates/macros/src/lib.rs index 753e2b006e..bf5a733fd7 100644 --- a/crates/macros/src/lib.rs +++ b/crates/macros/src/lib.rs @@ -379,7 +379,9 @@ pub fn test_scripts(input: proc_macro::TokenStream) -> TokenStream { while let Ok(input) = loop_receiver.try_recv() { #( tracing::debug!("Test sent: {:?}", input); - + + // If this particular script has been marked as completed, + // we completely skip re-broadcasting events. if #script_completed_names { continue; } @@ -402,6 +404,8 @@ pub fn test_scripts(input: proc_macro::TokenStream) -> TokenStream { let output_asserts = &mut #task_expectations[stage_number].output_asserts; if #output_index_names >= output_asserts.len() { + // If we've seen all output events without a panic, + // we mark the script as completed and ignore further events. if #scripts.ignore_trailing { #script_completed_names = true; break; @@ -409,10 +413,12 @@ pub fn test_scripts(input: proc_macro::TokenStream) -> TokenStream { panic_extra_output_in_script(stage_number, #script_names.to_string(), &received_output); } }; + + if #output_index_names < output_asserts.len() { + let mut assert = &mut output_asserts[#output_index_names]; - let mut assert = &mut output_asserts[#output_index_names]; - - validate_output_or_panic_in_script(stage_number, #script_names.to_string(), &received_output, &**assert).await; + validate_output_or_panic_in_script(stage_number, #script_names.to_string(), &received_output, &**assert).await; + } #output_index_names += 1; } diff --git a/crates/testing/src/script.rs b/crates/testing/src/script.rs index 6f2e9164b6..272bb59242 100644 --- a/crates/testing/src/script.rs +++ b/crates/testing/src/script.rs @@ -8,7 +8,7 @@ use hotshot_types::traits::node_implementation::NodeType; use crate::predicates::{Predicate, PredicateResult}; -pub const RECV_TIMEOUT: Duration = Duration::from_millis(250); +pub const RECV_TIMEOUT: Duration = Duration::from_millis(100); pub struct TestScriptStage>> { pub inputs: Vec>,