An extension of Expect_test_helpers_kernel with Async-aware functions.
include module type of sig ... end with module Expect_test_config := Expect_test_helpers_kernel.Expect_test_configmodule Allocation_limit = Expect_test_helpers_kernel.Allocation_limitmodule CR = Expect_test_helpers_kernel.CRval sexp_to_string : ?hide_positions:bool ‑> Core_kernel.Sexp.t ‑> stringval print_s : ?hide_positions:bool ‑> Core_kernel.Sexp.t ‑> unitval print_and_check_stable_type : ?cr:CR.t ‑> ?hide_positions:bool ‑> ?max_binable_length:int ‑> Core_kernel.Source_code_position.t ‑> (module Core_kernel.Stable_without_comparator with type t = 'a) ‑> 'a list ‑> unitval print_and_check_stable_int63able_type : ?cr:CR.t ‑> ?hide_positions:bool ‑> ?max_binable_length:int ‑> Core_kernel.Source_code_position.t ‑> (module Core_kernel.Stable_int63able with type t = 'a) ‑> 'a list ‑> unitval print_cr : ?cr:CR.t ‑> ?hide_positions:bool ‑> Core_kernel.Source_code_position.t ‑> Core_kernel.Sexp.t ‑> unitval require : ?cr:CR.t ‑> ?hide_positions:bool ‑> ?if_false_then_print_s:Core_kernel.Sexp.t Core_kernel.Lazy.t ‑> Core_kernel.Source_code_position.t ‑> bool ‑> unitval require_equal : ?cr:CR.t ‑> ?hide_positions:bool ‑> ?if_false_then_print_s:Core_kernel.Sexp.t Core_kernel.Lazy.t ‑> ?message:string ‑> Core_kernel.Source_code_position.t ‑> (module With_equal with type t = 'a) ‑> 'a ‑> 'a ‑> unitval require_compare_equal : ?cr:CR.t ‑> ?hide_positions:bool ‑> ?message:string ‑> Core_kernel.Source_code_position.t ‑> (module With_compare with type t = 'a) ‑> 'a ‑> 'a ‑> unitval require_sets_are_equal : ?cr:CR.t ‑> ?hide_positions:bool ‑> ?names:(string * string) ‑> Core_kernel.Source_code_position.t ‑> (module Set with type t = 'a) ‑> 'a ‑> 'a ‑> unitval require_does_not_raise : ?cr:CR.t ‑> ?hide_positions:bool ‑> ?show_backtrace:bool ‑> Core_kernel.Source_code_position.t ‑> (unit ‑> unit) ‑> unitval require_does_raise : ?cr:CR.t ‑> ?hide_positions:bool ‑> ?show_backtrace:bool ‑> Core_kernel.Source_code_position.t ‑> (unit ‑> 'a) ‑> unitval require_allocation_does_not_exceed : ?cr:CR.t ‑> ?hide_positions:bool ‑> Allocation_limit.t ‑> Core_kernel.Source_code_position.t ‑> (unit ‑> 'a) ‑> 'aval require_no_allocation : ?cr:CR.t ‑> ?hide_positions:bool ‑> Core_kernel.Source_code_position.t ‑> (unit ‑> 'a) ‑> 'aval print_and_check_container_sexps : ?cr:CR.t ‑> ?hide_positions:bool ‑> Core_kernel.Source_code_position.t ‑> (module With_containers with type t = 'a) ‑> 'a list ‑> unitval print_and_check_comparable_sexps : ?cr:CR.t ‑> ?hide_positions:bool ‑> Core_kernel.Source_code_position.t ‑> (module With_comparable with type t = 'a) ‑> 'a list ‑> unitval print_and_check_hashable_sexps : ?cr:CR.t ‑> ?hide_positions:bool ‑> Core_kernel.Source_code_position.t ‑> (module With_hashable with type t = 'a) ‑> 'a list ‑> unitval quickcheck : Core_kernel.Source_code_position.t ‑> ?cr:CR.t ‑> ?hide_positions:bool ‑> ?seed:Core_kernel.Quickcheck.seed ‑> ?sizes:int Core_kernel.Sequence.t ‑> ?trials:int ‑> ?shrinker:'a Core_kernel.Quickcheck.Shrinker.t ‑> ?shrink_attempts:Core_kernel.Quickcheck.shrink_attempts ‑> ?examples:'a list ‑> sexp_of:('a ‑> Core_kernel.Sexp.t) ‑> f:('a ‑> unit) ‑> 'a Core_kernel.Quickcheck.Generator.t ‑> unitval on_print_cr : (string ‑> unit) Core_kernel.refmodule Expect_test_config = Expect_test_helpers_kernel.Expect_test_configval with_temp_dir : (string ‑> 'a Async.Deferred.t) ‑> 'a Async.Deferred.twith_temp_dir f creates a temporary directory which is fed to f. The directory
is removed after f exits.
val within_temp_dir : ?links:(string * [ `In_path_as | `In_temp_as ] * string) list ‑> (unit ‑> 'a Async.Deferred.t) ‑> 'a Async.Deferred.twithin_temp_dir ?links f creates a temporary directory, $T, and:
1. Adds $T/bin to the PATH environment variable.
2. For each file, `In_path_as, name in links, links file as $T/bin/name.
3. For each file, `In_temp_as, name in links, links file as $T/name.
It then cds to $T and calls f. After f exits, it cds back, removes the
temporary directory, and restores the original PATH.
val run : ?enable_ocaml_backtraces:bool ‑> ?extend_env:(string * string) list ‑> ?hide_positions:bool ‑> ?print_cmdline:bool ‑> ?stdin:string ‑> ?working_dir:string ‑> string ‑> string list ‑> unit Async.Deferred.trun prog args creates a child process that runs prog, with arguments args, its
environment extended with extend_env and its stdin coming from stdin. No
expansion or escaping is done to args or stdin. The child process's stdout and
stderr are captured separately for comparison.
val system : ?enable_ocaml_backtraces:bool ‑> ?hide_positions:bool ‑> ?print_cmdline:bool ‑> ?stdin:string ‑> string ‑> unit Async.Deferred.tsystem ?stdin cmd creates a child process that runs /bin/sh, with arguments
"-c"; cmd and its stdin coming from stdin. The child process's stdout and stderr
are captured separately for comparison. Unlike with Unix.system, the child shell's
stdin is never a tty, even if the stdin of this process is a tty, and the child
shell's stderr is never copied to this process's stderr.
val show_raise' : ?hide_positions:bool ‑> (unit ‑> _ Async.Deferred.t) ‑> unit Async.Deferred.tshow_raise' ?hide_positions ?rest f calls f () and prints either the exception
raised by f or "did not raise". show_raise' ignores the result of f so that one
doesn't have to put an ignore inside f. ~hide_positions operates as in
print_s, to make output less fragile. Once a result is returned, the rest of the
errors are printed to stdout.
val require_does_not_raise' : ?cr:CR.t ‑> ?hide_positions:bool ‑> ?show_backtrace:bool ‑> Core.Source_code_position.t ‑> (unit ‑> unit Async.Deferred.t) ‑> unit Async.Deferred.trequire_does_not_raise' is like require_does_not_raise, but for functions that
produce a deferred result.
val require_does_raise' : ?cr:CR.t ‑> ?hide_positions:bool ‑> ?show_backtrace:bool ‑> Core.Source_code_position.t ‑> (unit ‑> _ Async.Deferred.t) ‑> unit Async.Deferred.trequire_does_raise' is like require_does_raise, but for functions that produce a
deferred result.
module Expect_test_config : Expect_test_helpers__.Import.Expect_test_config_lib.S with type 'a IO.t = 'a Async.Deferred.tWe export Expect_test_config so that the %expect syntax uses Async, to prevent a
confusing situation in which one is using Expect_test_helpers functions, which
expect Async to be running, but Async isn't running. Also, we override
Expect_test_config.run f so that, if f () raises, run prints the exception
rather than raising. Printing works better with the expect-test workflow than an
unhandled exception, because there is a .corrected file that one can accept and
inspect.