Skip to content

Commit 7d8ab02

Browse files
committed
chore: answer comments
1 parent 1a95fd3 commit 7d8ab02

File tree

8 files changed

+152
-266
lines changed

8 files changed

+152
-266
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/node/src/test_utils/block_builder.rs

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,35 @@ pub struct BlockBuilder<'a> {
1616
expected_tx_count: Option<usize>,
1717
expected_base_fee: Option<u64>,
1818
expected_block_number: Option<u64>,
19-
expect_l1_message: bool,
20-
expected_l1_message_count: Option<usize>,
19+
expected_l1_message: Option<L1MessagesAssertion>,
20+
}
21+
22+
/// The assertion on the L1 messages.
23+
#[derive(Debug)]
24+
pub enum L1MessagesAssertion {
25+
/// Expect at least a single L1 message.
26+
ExpectL1Message,
27+
/// Expect an exact number of L1 messages.
28+
ExpectL1MessageCount(usize),
29+
}
30+
31+
impl L1MessagesAssertion {
32+
/// Assert the L1 messages count is correct.
33+
pub fn assert(&self, got: usize) -> eyre::Result<()> {
34+
match self {
35+
Self::ExpectL1Message => {
36+
if got == 0 {
37+
return Err(eyre::eyre!("Expected at least one L1 message, but block has none"));
38+
}
39+
}
40+
Self::ExpectL1MessageCount(count) => {
41+
if got != *count {
42+
return Err(eyre::eyre!("Expected at {count} L1 messages, but block has {got}"));
43+
}
44+
}
45+
}
46+
Ok(())
47+
}
2148
}
2249

2350
impl<'a> BlockBuilder<'a> {
@@ -29,8 +56,7 @@ impl<'a> BlockBuilder<'a> {
2956
expected_tx_count: None,
3057
expected_block_number: None,
3158
expected_base_fee: None,
32-
expect_l1_message: false,
33-
expected_l1_message_count: None,
59+
expected_l1_message: None,
3460
}
3561
}
3662

@@ -54,18 +80,18 @@ impl<'a> BlockBuilder<'a> {
5480

5581
/// Expect at least one L1 message in the block.
5682
pub const fn expect_l1_message(mut self) -> Self {
57-
self.expect_l1_message = true;
83+
self.expected_l1_message = Some(L1MessagesAssertion::ExpectL1Message);
5884
self
5985
}
6086

6187
/// Expect a specific number of L1 messages in the block.
6288
pub const fn expect_l1_message_count(mut self, count: usize) -> Self {
63-
self.expected_l1_message_count = Some(count);
89+
self.expected_l1_message = Some(L1MessagesAssertion::ExpectL1MessageCount(count));
6490
self
6591
}
6692

6793
/// Build the block and validate against expectations.
68-
pub async fn await_block(self) -> eyre::Result<ScrollBlock> {
94+
pub async fn build_and_await_block(self) -> eyre::Result<ScrollBlock> {
6995
let sequencer_node = &self.fixture.nodes[0];
7096

7197
// Get the sequencer from the rollup manager handle
@@ -89,7 +115,7 @@ impl<'a> BlockBuilder<'a> {
89115
} else {
90116
None
91117
}
92-
}).await?
118+
}).await?.first().expect("should have block sequenced").clone()
93119
};
94120

95121
// Finally validate the block.
@@ -146,24 +172,10 @@ impl<'a> BlockBuilder<'a> {
146172
}
147173

148174
// Check L1 messages
149-
if self.expect_l1_message {
150-
let l1_message_count =
151-
block.body.transactions.iter().filter(|tx| tx.queue_index().is_some()).count();
152-
if l1_message_count == 0 {
153-
return Err(eyre::eyre!("Expected at least one L1 message, but block has none"));
154-
}
155-
}
156-
157-
if let Some(expected_count) = self.expected_l1_message_count {
175+
if let Some(assertion) = self.expected_l1_message {
158176
let l1_message_count =
159177
block.body.transactions.iter().filter(|tx| tx.queue_index().is_some()).count();
160-
if l1_message_count != expected_count {
161-
return Err(eyre::eyre!(
162-
"Expected {} L1 messages, but block has {}",
163-
expected_count,
164-
l1_message_count
165-
));
166-
}
178+
assertion.assert(l1_message_count)?;
167179
}
168180

169181
Ok(block.clone())

0 commit comments

Comments
 (0)