camshaft / bolero

property testing and verification front-end for Rust
https://camshaft.github.io/bolero
MIT License
185 stars 17 forks source link

add option to limit rng output #224

Closed camshaft closed 4 months ago

camshaft commented 4 months ago

This PR adds a max_len value to the driver::Options struct. This option will limit the amount of bytes generated by the particular driver. As seen in practice, some generators could run forever with unbounded inputs so this tries to avoid that by setting the default value to 4096. Individual tests can override it if larger inputs are desired:

check!()
    .with_max_len(8192)
    .for_each(|input| { ... })

I've also lowered the max_depth from 32 to 5. This should also prevent unbounded input generation and can be raised by the harness:

check!()
    .with_type::<MyType>()
    .with_max_depth(32)
    .for_each(|input| { ... })

Finally, I've simplified the driver::Rng::gen_from_bytes implementation to avoid branching on DriverMode. This ends up being a lot easier to reason about, since the driver no longer loops to try and provide incrementally larger inputs.