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 {
30
30
/// Once the fuzzer exceeds this limit, it will start evicting random entries
31
31
///
32
32
/// This limit is put in place to prevent memory blowup.
33
+ #[ serde( deserialize_with = "crate::deserialize_usize_or_max" ) ]
33
34
pub max_fuzz_dictionary_addresses : usize ,
34
35
/// How many values to record at most.
35
36
/// Once the fuzzer exceeds this limit, it will start evicting random entries
37
+ #[ serde( deserialize_with = "crate::deserialize_usize_or_max" ) ]
36
38
pub max_fuzz_dictionary_values : usize ,
37
39
}
38
40
Original file line number Diff line number Diff line change @@ -4,7 +4,7 @@ use crate::Config;
4
4
use ethers_core:: types:: { serde_helpers:: Numeric , U256 } ;
5
5
use ethers_solc:: remappings:: { Remapping , RemappingError } ;
6
6
use figment:: value:: Value ;
7
- use serde:: { Deserialize , Deserializer } ;
7
+ use serde:: { de :: Error , Deserialize , Deserializer } ;
8
8
use std:: {
9
9
path:: { Path , PathBuf } ,
10
10
str:: FromStr ,
@@ -182,3 +182,30 @@ where
182
182
Err ( serde:: de:: Error :: custom ( "percent must be lte 100" ) )
183
183
}
184
184
}
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> {
287
287
* should_fail,
288
288
test_options. fuzzer ( ) ,
289
289
setup. clone ( ) ,
290
- test_options. fuzz . clone ( ) ,
290
+ test_options. fuzz ,
291
291
)
292
292
} else {
293
293
self . clone ( ) . run_test ( func, * should_fail, setup. clone ( ) )
You can’t perform that action at this time.
0 commit comments