File tree Expand file tree Collapse file tree 3 files changed +31
-2
lines changed
Expand file tree Collapse file tree 3 files changed +31
-2
lines changed Original file line number Diff line number Diff line change @@ -30,9 +30,11 @@ pub struct FuzzConfig {
3030 /// Once the fuzzer exceeds this limit, it will start evicting random entries
3131 ///
3232 /// This limit is put in place to prevent memory blowup.
33+ #[ serde( deserialize_with = "crate::deserialize_usize_or_max" ) ]
3334 pub max_fuzz_dictionary_addresses : usize ,
3435 /// How many values to record at most.
3536 /// Once the fuzzer exceeds this limit, it will start evicting random entries
37+ #[ serde( deserialize_with = "crate::deserialize_usize_or_max" ) ]
3638 pub max_fuzz_dictionary_values : usize ,
3739}
3840
Original file line number Diff line number Diff line change @@ -4,7 +4,7 @@ use crate::Config;
44use ethers_core:: types:: { serde_helpers:: Numeric , U256 } ;
55use ethers_solc:: remappings:: { Remapping , RemappingError } ;
66use figment:: value:: Value ;
7- use serde:: { Deserialize , Deserializer } ;
7+ use serde:: { de :: Error , Deserialize , Deserializer } ;
88use std:: {
99 path:: { Path , PathBuf } ,
1010 str:: FromStr ,
@@ -182,3 +182,30 @@ where
182182 Err ( serde:: de:: Error :: custom ( "percent must be lte 100" ) )
183183 }
184184}
185+
186+ /// Deserialize an usize or
187+ pub ( crate ) fn deserialize_usize_or_max < ' de , D > ( deserializer : D ) -> Result < usize , D :: Error >
188+ where
189+ D : Deserializer < ' de > ,
190+ {
191+ #[ derive( Deserialize ) ]
192+ #[ serde( untagged) ]
193+ enum Val {
194+ Number ( usize ) ,
195+ Text ( String ) ,
196+ }
197+
198+ let num = match Val :: deserialize ( deserializer) ? {
199+ Val :: Number ( num) => num,
200+ Val :: Text ( s) => {
201+ match s. as_str ( ) {
202+ "max" | "MAX" | "Max" => {
203+ // toml limitation
204+ i64:: MAX as usize
205+ }
206+ s => s. parse :: < usize > ( ) . map_err ( D :: Error :: custom) . unwrap ( ) ,
207+ }
208+ }
209+ } ;
210+ Ok ( num)
211+ }
Original file line number Diff line number Diff line change @@ -287,7 +287,7 @@ impl<'a> ContractRunner<'a> {
287287 * should_fail,
288288 test_options. fuzzer ( ) ,
289289 setup. clone ( ) ,
290- test_options. fuzz . clone ( ) ,
290+ test_options. fuzz ,
291291 )
292292 } else {
293293 self . clone ( ) . run_test ( func, * should_fail, setup. clone ( ) )
You can’t perform that action at this time.
0 commit comments