module OUnit2:sig..end
Unit test building blocks (v2).
typetest_ctxt =OUnitTest.ctxt
Context of a test.
typetest_fun =test_ctxt -> unit
The type of test function.
typetest =OUnitTest.test
The type of test.
typetest_length =OUnitTest.test_length
The expected length of the test.
Assertions are the basic building blocks of unittests.
val assert_failure : string -> 'aSignals a failure. This will raise an exception with the specified string.
Failure signal a failureval assert_bool : string -> bool -> unitSignals a failure when bool is false. The string identifies the failure.
Failure signal a failureval assert_string : string -> unitSignals a failure when the string is non-empty. The string identifies the failure.
Failure signal a failureval assert_command : ?exit_code:Unix.process_status ->
?sinput:char Stdlib.Stream.t ->
?foutput:(char Stdlib.Stream.t -> unit) ->
?use_stderr:bool ->
?backtrace:bool ->
?chdir:string ->
?env:string array -> ctxt:test_ctxt -> string -> string list -> unitassert_command prg args Run the command provided.
exit_code : expected exit codesinput : provide this char Stream.t as input of the processfoutput : run this function on output, it can contains an
assert_equal to check ituse_stderr : redirect stderr to stdoutbacktrace : Set OCAMLRUNPARAM=bchdir : Chdir into a directory before running the command.env : Unix environmentval assert_equal : ?ctxt:test_ctxt ->
?cmp:('a -> 'a -> bool) ->
?printer:('a -> string) ->
?pp_diff:(Stdlib.Format.formatter -> 'a * 'a -> unit) ->
?msg:string -> 'a -> 'a -> unitassert_equal expected real Compares two values, when they are not equal a
failure is signaled.
Failure signal a failurectxt : if provided, always print expected and real valuecmp : customize function to compare, default is =printer : value printer, don't print value otherwisepp_diff : if not equal, ask a custom display of the difference
using diff fmt exp real where fmt is the formatter to usemsg : custom message to identify the failureval assert_raises : ?msg:string -> exn -> (unit -> 'a) -> unitAsserts if the expected exception was raised.
Failure descriptionmsg : identify the failureIn certain condition test can be written but there is no point running it, because they are not significant (missing OS features for example). In this case this is not a failure nor a success. Following functions allow you to escape test, just as assertion but without the same error status.
A test skipped is counted as success. A test todo is counted as failure.
val skip_if : bool -> string -> unitskip cond msg If cond is true, skip the test for the reason explain in
msg. For example skip_if (Sys.os_type = "Win32") "Test a doesn't run on.
windows"
val todo : string -> unitThe associated test is still to be done, for the reason given.
val cmp_float : ?epsilon:float -> float -> float -> boolCompare floats up to a given relative error.
epsilon : if the difference is smaller epsilon values are equalA bracket is a registered object with setUp and tearDown in unit tests. Data generated during the setUp will be automatically tearDown when the test ends.
val bracket : (test_ctxt -> 'a) ->
('a -> test_ctxt -> unit) -> test_ctxt -> 'abracket set_up tear_down test_ctxt set up an object and register it to be
tore down in test_ctxt.
val bracket_tmpfile : ?prefix:string ->
?suffix:string ->
?mode:Stdlib.open_flag list ->
test_ctxt -> string * Stdlib.out_channelbracket_tmpfile test_ctxt Create a temporary filename and matching output
channel. The temporary file is removed after the test.
prefix : see Filename.open_temp_filesuffix : see Filename.open_temp_filemode : see Filename.open_temp_fileval bracket_tmpdir : ?prefix:string -> ?suffix:string -> test_ctxt -> stringbracket_tmpdir test_ctxt Create a temporary dirname. The temporary
directory is removed after the test.
prefix : see Filename.open_temp_filesuffix : see Filename.open_temp_fileval with_bracket_chdir : test_ctxt -> string -> (test_ctxt -> 'a) -> 'awith_bracket_chdir test_ctxt dn f change directory to dn during
execution of function f. In order to Sys.chdir, we need to take a lock
to avoid other tests trying to do change the current directory at the same
time. So this bracket is not directly accessible in order to use it only on
shorter piece of code.
val (>:) : string -> test -> testCreate a TestLabel for a test
val (>::) : string -> test_fun -> testCreate a TestLabel for a TestCase
val (>:::) : string -> test list -> testCreate a TestLabel for a TestList
val test_case : ?length:test_length -> test_fun -> testGeneric function to create a test case.
val test_list : test list -> testGeneric function to create a test list.
Some shorthands which allows easy test construction.
Examples:
"test1" >: TestCase((fun _ -> ())) =>
TestLabel("test2", TestCase((fun _ -> ())))"test2" >:: (fun _ -> ()) =>
TestLabel("test2", TestCase((fun _ -> ())))"test-suite" >::: ["test2" >:: (fun _ -> ());] =>
TestLabel("test-suite", TestSuite([TestLabel("test2",
TestCase((fun _ -> ())))]))typelog_severity =[ `Error | `Info | `Warning ]
Severity level for log.
val logf : test_ctxt ->
log_severity -> ('a, unit, string, unit) Stdlib.format4 -> 'aLog into OUnit logging system.
val in_testdata_dir : test_ctxt -> string list -> stringBuild a filename for a file that should be located in the test data dir.
The test data dir, can be defined on the command line (preferably absolute) The default option is to locate it in topsrcdir/test/data.
val non_fatal : test_ctxt -> (test_ctxt -> unit) -> unitnon_fatal ctxt f Run f but if an exception is raised or an assert fails,
don't stop, just register the result. The global test running result will
mix in the non fatal result to determine the success or failure of the test.
module Conf:sig..end
Define command line options, environment variables and file configuration.
val run_test_tt_main : ?exit:(int -> unit) -> test -> unitMain version of the text based test runner. It reads the supplied command line arguments to set the verbose level and limit the number of test to run.