package ounit2
OUnit testing framework
Install
Dune Dependency
Authors
Maintainers
Sources
ounit-2.2.7.tbz
sha256=90f6e63bd1240a51d8b9b2f722059bd79ce00b5276bdd6238b8f5c613c0e7388
sha512=53463e5b1b5a40f424e19f5f6a86338a544079600d1fd121ffc1a6fcaa239630194018faf91ccf360ba40b1b2a8b01cf491935e014c68d2947f6e027a2f0a0f9
doc/src/ounit2.advanced/oUnitCore.ml.html
Source file oUnitCore.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
(**************************************************************************) (* The OUnit library *) (* *) (* Copyright (C) 2002-2008 Maas-Maarten Zeeman. *) (* Copyright (C) 2010 OCamlCore SARL *) (* Copyright (C) 2013 Sylvain Le Gall *) (* *) (* The package OUnit is copyright by Maas-Maarten Zeeman, OCamlCore SARL *) (* and Sylvain Le Gall. *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining *) (* a copy of this document and the OUnit software ("the Software"), to *) (* deal in the Software without restriction, including without limitation *) (* the rights to use, copy, modify, merge, publish, distribute, *) (* sublicense, and/or sell copies of the Software, and to permit persons *) (* to whom the Software is furnished to do so, subject to the following *) (* conditions: *) (* *) (* The above copyright notice and this permission notice shall be *) (* included in all copies or substantial portions of the Software. *) (* *) (* The Software is provided ``as is'', without warranty of any kind, *) (* express or implied, including but not limited to the warranties of *) (* merchantability, fitness for a particular purpose and noninfringement. *) (* In no event shall Maas-Maarten Zeeman be liable for any claim, damages *) (* or other liability, whether in an action of contract, tort or *) (* otherwise, arising from, out of or in connection with the Software or *) (* the use or other dealings in the software. *) (* *) (* See LICENSE.txt for details. *) (**************************************************************************) open OUnitUtils open OUnitTest open OUnitLogger (* Plugin initialisation. *) let () = OUnitRunnerProcesses.init () (* * Types and global states. *) (* Run all tests, report starts, errors, failures, and return the results *) let perform_test conf logger runner chooser test = let rec flatten_test path acc = function | TestCase(l, f) -> (path, l, f) :: acc | TestList (tests) -> fold_lefti (fun acc t cnt -> flatten_test ((ListItem cnt)::path) acc t) acc tests | TestLabel (label, t) -> flatten_test ((Label label)::path) acc t in let test_cases = List.rev (flatten_test [] [] test) in runner conf logger chooser test_cases (* A simple (currently too simple) text based test runner *) let run_test_tt conf logger runner chooser test = let () = Printexc.record_backtrace true in let () = (* TODO: move into perform test. *) List.iter (fun (k, v) -> OUnitLogger.report logger (GlobalEvent (GConf (k, v)))) (OUnitConf.dump conf) in (* Now start the test *) let running_time, test_results = time_fun (perform_test conf logger runner chooser) test in (* TODO: move into perform test. *) (* Print test report *) OUnitLogger.report logger (GlobalEvent (GResults (running_time, test_results, OUnitTest.test_case_count test))); (* Reset logger. *) OUnitLogger.close logger; (* Return the results possibly for further processing *) test_results (* Test-only override. *) let run_test_tt_main_conf = ref (fun ?(preset=[]) ?argv extra_specs -> OUnitConf.load ?argv ~preset:(OUnitChooser.preset (OUnitRunner.preset preset)) extra_specs) let suite_name = OUnitConf.make_string "suite_name" "anon" "The name of the test suite running." (* Call this one to act as your main() function. *) let run_test_tt_main ?(exit=Stdlib.exit) suite = let only_test = ref [] in let list_test = ref false in let extra_specs = [ "-only-test", Arg.String (fun str -> only_test := str :: !only_test), "path Run only the selected tests."; "-list-test", Arg.Set list_test, " List tests"; ] in let preset = match suite with | OUnitTest.TestLabel (suite_name, _) -> ["suite_name", suite_name] | OUnitTest.TestCase _ | OUnitTest.TestList _ -> [] in let conf = !run_test_tt_main_conf ~preset extra_specs in if !list_test then begin List.iter (fun pth -> print_endline (OUnitTest.string_of_path pth)) (OUnitTest.test_case_paths suite) end else begin let nsuite = if !only_test = [] then suite else begin match OUnitTest.test_filter ~skip:true !only_test suite with | Some test -> test | None -> failwithf "Filtering test %s lead to no tests." (String.concat ", " !only_test) end in let logger = OUnitLogger.combine [ OUnitLoggerStd.create conf shard_default; OUnitLoggerHTML.create conf; OUnitLoggerJUnit.create conf; OUnitLoggerCI.create conf; ] in let runner_name, runner = OUnitRunner.choice conf in let chooser_name, chooser = OUnitChooser.choice conf in let test_results = OUnitLogger.infof logger "Runner: %s" runner_name; OUnitLogger.infof logger "Chooser: %s" chooser_name; run_test_tt conf logger runner chooser nsuite in if not (OUnitResultSummary.was_successful test_results) then exit 1 end
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>