From 9ebd56092bcdfc1a09062e15a0574c94af37f389 Mon Sep 17 00:00:00 2001 From: Marek Date: Wed, 19 Jul 2023 23:20:37 +0200 Subject: [PATCH] change(test): Refactor the tests of non-finalized state (#7262) * Allow generating blocks with only coinbase tx * Fix the `forked_equals_pushed_genesis` test --- zebra-chain/src/block/arbitrary.rs | 4 +++- .../service/non_finalized_state/tests/prop.rs | 18 +++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/zebra-chain/src/block/arbitrary.rs b/zebra-chain/src/block/arbitrary.rs index 9d6eb186..36734c86 100644 --- a/zebra-chain/src/block/arbitrary.rs +++ b/zebra-chain/src/block/arbitrary.rs @@ -349,7 +349,9 @@ impl Arbitrary for Block { fn arbitrary_with(ledger_state: Self::Parameters) -> Self::Strategy { let transactions_strategy = - (1..MAX_ARBITRARY_ITEMS).prop_flat_map(move |transaction_count| { + // Generate a random number transactions. A coinbase tx is always generated, so if + // `transaction_count` is zero, the block will contain only the coinbase tx. + (0..MAX_ARBITRARY_ITEMS).prop_flat_map(move |transaction_count| { Transaction::vec_strategy(ledger_state, transaction_count) }); diff --git a/zebra-state/src/service/non_finalized_state/tests/prop.rs b/zebra-state/src/service/non_finalized_state/tests/prop.rs index 56d103cb..ea72609b 100644 --- a/zebra-state/src/service/non_finalized_state/tests/prop.rs +++ b/zebra-state/src/service/non_finalized_state/tests/prop.rs @@ -170,14 +170,12 @@ fn forked_equals_pushed_genesis() -> Result<()> { empty_tree, ValueBalance::zero(), ); - for block in chain.iter().skip(1).cloned() { + + for block in chain.iter().cloned() { let block = ContextuallyVerifiedBlock::with_block_and_spent_utxos(block, full_chain.unspent_utxos())?; - full_chain = full_chain - .push(block.clone()) - .expect("full chain push is valid"); - // Check some other properties of generated chains. + // Check some properties of the genesis block and don't push it to the chain. if block.height == block::Height(0) { prop_assert_eq!( block @@ -188,11 +186,13 @@ fn forked_equals_pushed_genesis() -> Result<()> { .filter_map(|i| i.outpoint()) .count(), 0, - "unexpected transparent prevout input at height {:?}: \ - genesis transparent outputs must be ignored, \ - so there can not be any spends in the genesis block", - block.height, + "Unexpected transparent prevout input at height 0. Genesis transparent outputs \ + must be ignored, so there can not be any spends in the genesis block.", ); + } else { + full_chain = full_chain + .push(block) + .expect("full chain push is valid"); } }