@@ -433,6 +433,22 @@ where
433433 V : Clone + ' static ,
434434 M : Mutator < V > ,
435435{
436+ #[ no_coverage]
437+ pub fn default_sensor_and_pool_with_custom_filter (
438+ self ,
439+ keep : impl Fn ( & Path , & str ) -> bool ,
440+ ) -> FuzzerBuilder4 < F , M , V , DiverseAndMaxHitsSensor , BasicAndDiverseAndMaxHitsPool > {
441+ let ( sensor, pool) = default_sensor_and_pool_with_custom_filter ( keep) . finish ( ) ;
442+ FuzzerBuilder4 {
443+ test_function : self . test_function ,
444+ mutator : self . mutator ,
445+ serializer : self . serializer ,
446+ sensor,
447+ pool,
448+ _phantom : PhantomData ,
449+ }
450+ }
451+
436452 #[ no_coverage]
437453 pub fn default_sensor_and_pool (
438454 self ,
@@ -715,6 +731,20 @@ pub fn basic_sensor_and_pool() -> SensorAndPoolBuilder<BasicSensor, BasicPool> {
715731 }
716732}
717733
734+ /// Like [`basic_sensor_and_pool`], but uses a closure to determine which function should
735+ /// be observed by the code coverage sensor.
736+ #[ no_coverage]
737+ pub fn basic_sensor_and_pool_with_custom_filter (
738+ keep : impl Fn ( & Path , & str ) -> bool ,
739+ ) -> SensorAndPoolBuilder < BasicSensor , BasicPool > {
740+ let sensor = CodeCoverageSensor :: new ( keep) ;
741+ let nbr_counters = sensor. count_instrumented ;
742+ SensorAndPoolBuilder {
743+ sensor,
744+ pool : SimplestToActivateCounterPool :: new ( "simplest_cov" , nbr_counters) ,
745+ }
746+ }
747+
718748/// Create the [sensor and pool builder](SensorAndPoolBuilder) that is used by default by fuzzcheck
719749///
720750/// Currently, the result cannot be augmented any further. Thus, the only action you can take on the result is to
@@ -725,6 +755,18 @@ pub fn default_sensor_and_pool() -> SensorAndPoolBuilder<DiverseAndMaxHitsSensor
725755 . find_most_diverse_set_of_test_cases ( 20 )
726756 . find_test_cases_repeatedly_hitting_coverage_counters ( )
727757}
758+
759+ /// Like [`default_sensor_and_pool`], but uses a closure to determine which function should
760+ /// be observed by the code coverage sensor.
761+ #[ no_coverage]
762+ pub fn default_sensor_and_pool_with_custom_filter (
763+ keep : impl Fn ( & Path , & str ) -> bool ,
764+ ) -> SensorAndPoolBuilder < DiverseAndMaxHitsSensor , BasicAndDiverseAndMaxHitsPool > {
765+ basic_sensor_and_pool_with_custom_filter ( keep)
766+ . find_most_diverse_set_of_test_cases ( 20 )
767+ . find_test_cases_repeatedly_hitting_coverage_counters ( )
768+ }
769+
728770/// A builder to create a [sensor](Sensor) and [pool](crate::Pool) that can be given as argument to
729771/// [`FuzzerBuilder3::sensor_and_pool`].
730772///
0 commit comments