1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
let pp_model ppf model =
  Fmt.list ~sep:(fun ppf () -> Fmt.pf ppf " ; ") Concrete_value.pp ppf model

let rec run ~rounds f =
  match f () with
  | Ok () ->
    Fuzz_state.reset ();
    begin match rounds with
    | None -> run ~rounds f
    | Some 0 -> Ok ()
    | Some n -> run ~rounds:(Some (pred n)) f
    end
  | Error _ as e ->
    Log.app (fun m -> m "Found a bug with model: %a" pp_model !Fuzz_state.model);
    e