You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As part of the Transaction type migration from enum to zcash_primitives newtype wrapper (#10461), 27 tests were marked #[ignore] because they require mutating Transaction internals that the newtype wrapper does not expose. No tests were deleted.
The underlying verification logic is unchanged — only the test setup code (which constructs or mutates transactions to create specific test scenarios) is blocked.
Ignored Tests by Capability Needed
1. outputs_mut() / inputs_mut() — 8 tests
These need the ability to replace specific transparent outputs/inputs with test-crafted scripts (e.g., OP_RETURN, bare multisig). Restorable by adding with_transparent_output_at(index, output) to Transaction.
Test
File
mempool_reject_non_standard
zebrad/.../vector.rs:1190
mempool_accept_standard_op_return
zebrad/.../vector.rs:1198
mempool_reject_op_return_too_large
zebrad/.../vector.rs:1206
mempool_reject_multi_op_return
zebrad/.../vector.rs:1214
mempool_reject_non_standard_scriptpubkey
zebrad/.../vector.rs:1222
mempool_reject_bare_multisig
zebrad/.../vector.rs:1230
mempool_reject_large_multisig
zebrad/.../vector.rs:1238
mempool_reject_large_scriptsig
zebrad/.../vector.rs:1246
2. insert_fake_orchard_shielded_data — 5 tests
These construct synthetic orchard bundles for testing. Restorable by adding a builder method in librustzcash or by constructing the data via byte-level serialization.
These mutate the expiry height or network upgrade field after construction. Restorable by adding a with_expiry_height(height) builder method to Transaction.
Test
File
v5_coinbase_transaction_expiry_height
zebra-consensus/.../tests.rs:1758
v5_consensus_branch_ids
zebra-consensus/.../tests.rs:2343
mempool_expired_basic
zebrad/.../vectors.rs:247
mempool_transaction_expiration
zebrad/.../fake_peer_set.rs:335
4. Construct V4 with joinsplit data — 4 tests
These build V4 transactions with specific sprout JoinSplit data. Restorable via byte-level serialization (pattern already established in build_v4_tx_with_joinsplit_data in the anchors tests).
outputs_mut/inputs_mut tests (8): Add with_transparent_output_at(index, output) to Transaction — straightforward, similar to existing with_transparent_inputs().
Joinsplit construction tests (4): Use byte-level V4 transaction construction (pattern already established in build_v4_tx_with_joinsplit_data).
Fake orchard data tests (5): Requires constructing orchard bundles — best done in librustzcash with an orchard::testing module.
Shielded data mutation tests (4): Requires map_authorization or builder patterns in librustzcash.
Groups 1-3 (16 tests) can be restored entirely within Zebra. Groups 4-5 (9 tests, including 2 that overlap with group 4) likely need upstream librustzcash support.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Summary
As part of the Transaction type migration from enum to
zcash_primitivesnewtype wrapper (#10461), 27 tests were marked#[ignore]because they require mutatingTransactioninternals that the newtype wrapper does not expose. No tests were deleted.The underlying verification logic is unchanged — only the test setup code (which constructs or mutates transactions to create specific test scenarios) is blocked.
Ignored Tests by Capability Needed
1.
outputs_mut()/inputs_mut()— 8 testsThese need the ability to replace specific transparent outputs/inputs with test-crafted scripts (e.g., OP_RETURN, bare multisig). Restorable by adding
with_transparent_output_at(index, output)to Transaction.mempool_reject_non_standardzebrad/.../vector.rs:1190mempool_accept_standard_op_returnzebrad/.../vector.rs:1198mempool_reject_op_return_too_largezebrad/.../vector.rs:1206mempool_reject_multi_op_returnzebrad/.../vector.rs:1214mempool_reject_non_standard_scriptpubkeyzebrad/.../vector.rs:1222mempool_reject_bare_multisigzebrad/.../vector.rs:1230mempool_reject_large_multisigzebrad/.../vector.rs:1238mempool_reject_large_scriptsigzebrad/.../vector.rs:12462.
insert_fake_orchard_shielded_data— 5 testsThese construct synthetic orchard bundles for testing. Restorable by adding a builder method in librustzcash or by constructing the data via byte-level serialization.
v5_coinbase_transaction_without_enable_spends_flag_passes_validationzebra-consensus/.../tests.rs:1111v5_coinbase_transaction_with_enable_spends_flag_fails_validationzebra-consensus/.../tests.rs:1118coinbase_outputs_are_decryptable_for_fake_v5_blockszebra-consensus/.../tests.rs:2780shielded_outputs_are_not_decryptable_for_fake_v5_blockszebra-consensus/.../tests.rs:2788mempool_skip_accepts_block_with_garbage_orchard_proofszebra-consensus/.../tests.rs:29333.
expiry_height_mut/update_network_upgrade— 4 testsThese mutate the expiry height or network upgrade field after construction. Restorable by adding a
with_expiry_height(height)builder method to Transaction.v5_coinbase_transaction_expiry_heightzebra-consensus/.../tests.rs:1758v5_consensus_branch_idszebra-consensus/.../tests.rs:2343mempool_expired_basiczebrad/.../vectors.rs:247mempool_transaction_expirationzebrad/.../fake_peer_set.rs:3354. Construct V4 with joinsplit data — 4 tests
These build V4 transactions with specific sprout JoinSplit data. Restorable via byte-level serialization (pattern already established in
build_v4_tx_with_joinsplit_datain the anchors tests).v4_transaction_with_conflicting_sprout_nullifier_inside_joinsplit_is_rejectedzebra-consensus/.../tests.rs:1639v4_transaction_with_conflicting_sprout_nullifier_across_joinsplits_is_rejectedzebra-consensus/.../tests.rs:1647v4_with_modified_joinsplit_is_rejectedzebra-consensus/.../tests.rs:2073v5_with_duplicate_orchard_actionzebra-consensus/.../tests.rs:23355. Mutate shielded data (sapling/orchard) — 4 tests (+ 2 from group 4)
These modify sapling/orchard shielded data after construction for negative testing.
v5_transaction_with_orchard_actions_has_inputs_and_outputszebra-consensus/.../tests.rs:82v5_transaction_with_orchard_actions_has_flagszebra-consensus/.../tests.rs:92v4_with_duplicate_sapling_spendszebra-consensus/.../tests.rs:2159v5_with_duplicate_sapling_spendszebra-consensus/.../tests.rs:2294Restoration Paths (in order of feasibility)
outputs_mut/inputs_muttests (8): Addwith_transparent_output_at(index, output)to Transaction — straightforward, similar to existingwith_transparent_inputs().expiry_height_muttests (4): Addwith_expiry_height(height)builder — straightforward viafrom_partsreconstruction.build_v4_tx_with_joinsplit_data).orchard::testingmodule.map_authorizationor builder patterns in librustzcash.Groups 1-3 (16 tests) can be restored entirely within Zebra. Groups 4-5 (9 tests, including 2 that overlap with group 4) likely need upstream librustzcash support.
All reactions