Handle exceptions (#54)

* Add support for wrapper types

* Move `FilesWithExtensionIterator` to `core::common`

* Remove unneeded use of two `HashMap`s

* Make metadata structs more typed

* Impl new_from for wrapper types

* Implement the new input handling logic

* Fix edge-case in input handling

* Ignore macro doc comment tests

* Correct comment

* Fix edge-case in deployment order

* Handle calldata better

* Allow for the use of function signatures

* Add support for exceptions

* Cached nonce allocator

* Fix tests

* Add support for address replacement

* Cleanup implementation

* Cleanup mutability

* Wire up address replacement with rest of code

* Implement caller replacement

* Switch to callframe trace for exceptions

* Add a way to skip tests if they don't match the target

* Handle values from the metadata files

* Remove address replacement

* Correct the arguments

* Remove empty impl

* Remove address replacement

* Correct the arguments

* Remove empty impl

* Fix size_requirement underflow

* Add support for wildcards in exceptions

* Fix calldata construction of single calldata

* Better handling for length in equivalency checks

* Make initial balance a constant

* Fix size_requirement underflow

* Add support for wildcards in exceptions

* Fix calldata construction of single calldata

* Better handling for length in equivalency checks

* Fix tests
This commit is contained in:
Omar
2025-07-24 06:45:53 +03:00
committed by GitHub
parent 589a5dc988
commit 6f4aa731ab
16 changed files with 761 additions and 292 deletions
Generated
+75 -69
View File
@@ -67,9 +67,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
[[package]]
name = "alloy"
version = "1.0.20"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae58d888221eecf621595e2096836ce7cfc37be06bfa39d7f64aa6a3ea4c9e5b"
checksum = "8ad4eb51e7845257b70c51b38ef8d842d5e5e93196701fcbd757577971a043c6"
dependencies = [
"alloy-consensus",
"alloy-contract",
@@ -102,15 +102,16 @@ dependencies = [
[[package]]
name = "alloy-consensus"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad451f9a70c341d951bca4e811d74dbe1e193897acd17e9dbac1353698cc430b"
checksum = "ca3b746060277f3d7f9c36903bb39b593a741cb7afcb0044164c28f0e9b673f0"
dependencies = [
"alloy-eips",
"alloy-primitives",
"alloy-rlp",
"alloy-serde",
"alloy-trie",
"alloy-tx-macros",
"auto_impl",
"c-kzg",
"derive_more 2.0.1",
@@ -126,9 +127,9 @@ dependencies = [
[[package]]
name = "alloy-consensus-any"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "142daffb15d5be1a2b20d2cd540edbcef03037b55d4ff69dc06beb4d06286dba"
checksum = "bf98679329fa708fa809ea596db6d974da892b068ad45e48ac1956f582edf946"
dependencies = [
"alloy-consensus",
"alloy-eips",
@@ -140,9 +141,9 @@ dependencies = [
[[package]]
name = "alloy-contract"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ebf25443920ecb9728cb087fe4dc04a0b290bd6ac85638c58fe94aba70f1a44e"
checksum = "a10e47f5305ea08c37b1772086c1573e9a0a257227143996841172d37d3831bb"
dependencies = [
"alloy-consensus",
"alloy-dyn-abi",
@@ -157,6 +158,7 @@ dependencies = [
"alloy-transport",
"futures",
"futures-util",
"serde_json",
"thiserror 2.0.12",
]
@@ -227,9 +229,9 @@ dependencies = [
[[package]]
name = "alloy-eips"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3056872f6da48046913e76edb5ddced272861f6032f09461aea1a2497be5ae5d"
checksum = "f562a81278a3ed83290e68361f2d1c75d018ae3b8589a314faf9303883e18ec9"
dependencies = [
"alloy-eip2124",
"alloy-eip2930",
@@ -247,15 +249,16 @@ dependencies = [
[[package]]
name = "alloy-genesis"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c98fb40f07997529235cc474de814cd7bd9de561e101716289095696c0e4639d"
checksum = "dc41384e9ab8c9b2fb387c52774d9d432656a28edcda1c2d4083e96051524518"
dependencies = [
"alloy-eips",
"alloy-primitives",
"alloy-serde",
"alloy-trie",
"serde",
"serde_with",
]
[[package]]
@@ -272,12 +275,13 @@ dependencies = [
[[package]]
name = "alloy-json-rpc"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc08b31ebf9273839bd9a01f9333cbb7a3abb4e820c312ade349dd18bdc79581"
checksum = "12c454fcfcd5d26ed3b8cae5933cbee9da5f0b05df19b46d4bd4446d1f082565"
dependencies = [
"alloy-primitives",
"alloy-sol-types",
"http",
"serde",
"serde_json",
"thiserror 2.0.12",
@@ -286,9 +290,9 @@ dependencies = [
[[package]]
name = "alloy-network"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed117b08f0cc190312bf0c38c34cf4f0dabfb4ea8f330071c587cd7160a88cb2"
checksum = "42d6d39eabe5c7b3d8f23ac47b0b683b99faa4359797114636c66e0743103d05"
dependencies = [
"alloy-consensus",
"alloy-consensus-any",
@@ -312,9 +316,9 @@ dependencies = [
[[package]]
name = "alloy-network-primitives"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7162ff7be8649c0c391f4e248d1273e85c62076703a1f3ec7daf76b283d886d"
checksum = "3704fa8b7ba9ba3f378d99b3d628c8bc8c2fc431b709947930f154e22a8368b6"
dependencies = [
"alloy-consensus",
"alloy-eips",
@@ -342,7 +346,7 @@ dependencies = [
"keccak-asm",
"paste",
"proptest",
"rand 0.9.1",
"rand 0.9.2",
"ruint",
"rustc-hash",
"serde",
@@ -352,9 +356,9 @@ dependencies = [
[[package]]
name = "alloy-provider"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d84eba1fd8b6fe8b02f2acd5dd7033d0f179e304bd722d11e817db570d1fa6c4"
checksum = "08800e8cbe70c19e2eb7cf3d7ff4b28bdd9b3933f8e1c8136c7d910617ba03bf"
dependencies = [
"alloy-chains",
"alloy-consensus",
@@ -380,6 +384,7 @@ dependencies = [
"either",
"futures",
"futures-utils-wasm",
"http",
"lru",
"parking_lot",
"pin-project",
@@ -395,9 +400,9 @@ dependencies = [
[[package]]
name = "alloy-pubsub"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8550f7306e0230fc835eb2ff4af0a96362db4b6fc3f25767d161e0ad0ac765bf"
checksum = "ae68457a2c2ead6bd7d7acb5bf5f1623324b1962d4f8e7b0250657a3c3ab0a0b"
dependencies = [
"alloy-json-rpc",
"alloy-primitives",
@@ -438,9 +443,9 @@ dependencies = [
[[package]]
name = "alloy-rpc-client"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "518a699422a3eab800f3dac2130d8f2edba8e4fff267b27a9c7dc6a2b0d313ee"
checksum = "162301b5a57d4d8f000bf30f4dcb82f9f468f3e5e846eeb8598dd39e7886932c"
dependencies = [
"alloy-json-rpc",
"alloy-primitives",
@@ -448,7 +453,6 @@ dependencies = [
"alloy-transport",
"alloy-transport-http",
"alloy-transport-ipc",
"async-stream",
"futures",
"pin-project",
"reqwest",
@@ -458,16 +462,15 @@ dependencies = [
"tokio-stream",
"tower",
"tracing",
"tracing-futures",
"url",
"wasmtimer",
]
[[package]]
name = "alloy-rpc-types"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c000cab4ec26a4b3e29d144e999e1c539c2fa0abed871bf90311eb3466187ca8"
checksum = "6cd8ca94ae7e2b32cc3895d9981f3772aab0b4756aa60e9ed0bcfee50f0e1328"
dependencies = [
"alloy-primitives",
"alloy-rpc-types-eth",
@@ -478,9 +481,9 @@ dependencies = [
[[package]]
name = "alloy-rpc-types-any"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "508b2fbe66d952089aa694e53802327798806498cd29ff88c75135770ecaabfc"
checksum = "076b47e834b367d8618c52dd0a0d6a711ddf66154636df394805300af4923b8a"
dependencies = [
"alloy-consensus-any",
"alloy-rpc-types-eth",
@@ -489,9 +492,9 @@ dependencies = [
[[package]]
name = "alloy-rpc-types-debug"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c832f2e851801093928dbb4b7bd83cd22270faf76b2e080646b806a285c8757"
checksum = "94a2a86ad7b7d718c15e79d0779bd255561b6b22968dc5ed2e7c0fbc43bb55fe"
dependencies = [
"alloy-primitives",
"serde",
@@ -499,9 +502,9 @@ dependencies = [
[[package]]
name = "alloy-rpc-types-eth"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcaf7dff0fdd756a714d58014f4f8354a1706ebf9fa2cf73431e0aeec3c9431e"
checksum = "2c2f847e635ec0be819d06e2ada4bcc4e4204026a83c4bfd78ae8d550e027ae7"
dependencies = [
"alloy-consensus",
"alloy-consensus-any",
@@ -514,14 +517,15 @@ dependencies = [
"itertools 0.14.0",
"serde",
"serde_json",
"serde_with",
"thiserror 2.0.12",
]
[[package]]
name = "alloy-rpc-types-trace"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e3507a04e868dd83219ad3cd6a8c58aefccb64d33f426b3934423a206343e84"
checksum = "6fc58180302a94c934d455eeedb3ecb99cdc93da1dbddcdbbdb79dd6fe618b2a"
dependencies = [
"alloy-primitives",
"alloy-rpc-types-eth",
@@ -533,9 +537,9 @@ dependencies = [
[[package]]
name = "alloy-serde"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "730e8f2edf2fc224cabd1c25d090e1655fa6137b2e409f92e5eec735903f1507"
checksum = "ae699248d02ade9db493bbdae61822277dc14ae0f82a5a4153203b60e34422a6"
dependencies = [
"alloy-primitives",
"serde",
@@ -544,9 +548,9 @@ dependencies = [
[[package]]
name = "alloy-signer"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6b0d2428445ec13edc711909e023d7779618504c4800be055a5b940025dbafe3"
checksum = "3cf7d793c813515e2b627b19a15693960b3ed06670f9f66759396d06ebe5747b"
dependencies = [
"alloy-primitives",
"async-trait",
@@ -559,9 +563,9 @@ dependencies = [
[[package]]
name = "alloy-signer-local"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e14fe6fedb7fe6e0dfae47fe020684f1d8e063274ef14bca387ddb7a6efa8ec1"
checksum = "51a424bc5a11df0d898ce0fd15906b88ebe2a6e4f17a514b51bc93946bb756bd"
dependencies = [
"alloy-consensus",
"alloy-network",
@@ -648,9 +652,9 @@ dependencies = [
[[package]]
name = "alloy-transport"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a712bdfeff42401a7dd9518f72f617574c36226a9b5414537fedc34350b73bf9"
checksum = "4f317d20f047b3de4d9728c556e2e9a92c9a507702d2016424cd8be13a74ca5e"
dependencies = [
"alloy-json-rpc",
"alloy-primitives",
@@ -671,9 +675,9 @@ dependencies = [
[[package]]
name = "alloy-transport-http"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ea5a76d7f2572174a382aedf36875bedf60bcc41116c9f031cf08040703a2dc"
checksum = "ff084ac7b1f318c87b579d221f11b748341d68b9ddaa4ffca5e62ed2b8cfefb4"
dependencies = [
"alloy-json-rpc",
"alloy-transport",
@@ -686,9 +690,9 @@ dependencies = [
[[package]]
name = "alloy-transport-ipc"
version = "1.0.9"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "606af17a7e064d219746f6d2625676122c79d78bf73dfe746d6db9ecd7dbcb85"
checksum = "edb099cdad8ed2e6a80811cdf9bbf715ebf4e34c981b4a6e2d1f9daacbf8b218"
dependencies = [
"alloy-json-rpc",
"alloy-pubsub",
@@ -706,9 +710,9 @@ dependencies = [
[[package]]
name = "alloy-trie"
version = "0.8.1"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "983d99aa81f586cef9dae38443245e585840fcf0fc58b09aee0b1f27aed1d500"
checksum = "bada1fc392a33665de0dc50d401a3701b62583c655e3522a323490a5da016962"
dependencies = [
"alloy-primitives",
"alloy-rlp",
@@ -720,6 +724,19 @@ dependencies = [
"tracing",
]
[[package]]
name = "alloy-tx-macros"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1154c8187a5ff985c95a8b2daa2fedcf778b17d7668e5e50e556c4ff9c881154"
dependencies = [
"alloy-primitives",
"darling",
"proc-macro2",
"quote",
"syn 2.0.101",
]
[[package]]
name = "android-tzdata"
version = "0.1.1"
@@ -3268,13 +3285,14 @@ dependencies = [
[[package]]
name = "nybbles"
version = "0.3.4"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307"
checksum = "675b3a54e5b12af997abc8b6638b0aee51a28caedab70d4967e0d5db3a3f1d06"
dependencies = [
"alloy-rlp",
"const-hex",
"cfg-if",
"proptest",
"ruint",
"serde",
"smallvec",
]
@@ -3719,9 +3737,9 @@ dependencies = [
[[package]]
name = "rand"
version = "0.9.1"
version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97"
checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
dependencies = [
"rand_chacha 0.9.0",
"rand_core 0.9.3",
@@ -4113,7 +4131,7 @@ dependencies = [
"primitive-types 0.12.2",
"proptest",
"rand 0.8.5",
"rand 0.9.1",
"rand 0.9.2",
"rlp",
"ruint-macro",
"serde",
@@ -5489,18 +5507,6 @@ dependencies = [
"valuable",
]
[[package]]
name = "tracing-futures"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
dependencies = [
"futures",
"futures-task",
"pin-project",
"tracing",
]
[[package]]
name = "tracing-log"
version = "0.2.0"