package alcotest

Build not checked
  1. Overview
  2. Docs
Alcotest is a lightweight and colourful test framework

Install

dune-project
 Dependency

Authors

Maintainers

Sources

alcotest-1.8.0.tbz
sha256=cba1bd01707c8c55b4764bb0df8c9c732be321e1f1c1a96a406e56d8dbca1d0e
sha512=eebb034c990abd253f526e848a99881686d7bd3c7d1b1d373953d568d062e3d5aaa79b6b4807455aaa9a98710eca4ada30e816a0134717a380619a597575564d

Description

Alcotest exposes simple interface to perform unit tests. It exposes a simple TESTABLE module type, a check function to assert test predicates and a run function to perform a list of unit -> unit test callbacks.

Alcotest provides a quiet and colorful output where only faulty runs are fully displayed at the end of the run (with the full logs ready to inspect), with a simple (yet expressive) query language to select the tests to run.

Added to opam-repository:

README

A lightweight and colourful test framework.


Alcotest exposes a simple interface to perform unit tests. It exposes a simple TESTABLE module type, a check function to assert test predicates and a run function to perform a list of unit -> unit test callbacks.

Alcotest provides a quiet and colorful output where only faulty runs are fully displayed at the end of the run (with the full logs ready to inspect), with a simple (yet expressive) query language to select the tests to run. See the manpage for details.

The API documentation can be found here. For information on contributing to Alcotest, see CONTRIBUTING.md.

OCaml-CI Build Status Alcotest Documentation


Examples

A simple example (taken from examples/simple.ml):

Generated by the following test suite specification:

(* Build with `ocamlbuild -pkg alcotest simple.byte` *)

(* A module with functions to test *)
module To_test = struct
  let lowercase = String.lowercase_ascii
  let capitalize = String.capitalize_ascii
  let str_concat = String.concat ""
  let list_concat = List.append
end

(* The tests *)
let test_lowercase () =
  Alcotest.(check string) "same string" "hello!" (To_test.lowercase "hELLO!")

let test_capitalize () =
  Alcotest.(check string) "same string" "World." (To_test.capitalize "world.")

let test_str_concat () =
  Alcotest.(check string) "same string" "foobar" (To_test.str_concat ["foo"; "bar"])

let test_list_concat () =
  Alcotest.(check (list int)) "same lists" [1; 2; 3] (To_test.list_concat [1] [2; 3])

(* Run it *)
let () =
  let open Alcotest in
  run "Utils" [
      "string-case", [
          test_case "Lower case"     `Quick test_lowercase;
          test_case "Capitalization" `Quick test_capitalize;
        ];
      "string-concat", [ test_case "String mashing" `Quick test_str_concat  ];
      "list-concat",   [ test_case "List mashing"   `Slow  test_list_concat ];
    ]

The result is a self-contained binary which displays the test results. Use dune exec examples/simple.exe -- --help to see the runtime options.

Here's an example of a of failing test suite:

By default, only the first failing test log is printed to the console (and all test logs are captured on disk). Pass --show-errors to print all error messages.

Using Alcotest with opam and Dune

Add (alcotest :with-test) to the depends stanza of your dune-project file, or "alcotest" {with-test} to your opam file. Use the with-test package variable to declare your tests opam dependencies. Call opam to install them:

$ opam install --deps-only --with-test .

You can then declare your test and link with Alcotest: (test (libraries alcotest …) …), and run your tests:

$ dune runtest

Selecting tests to execute

You can filter which tests to run by supplying a regular expression matching the names of the tests to execute, or by passing a regular expression and a comma-separated list of test numbers (or ranges of test numbers, e.g. 2,4..9):

$ ./simple.native test '.*concat*'
Testing Utils.
[SKIP]     string-case            0   Lower case.
[SKIP]     string-case            1   Capitalization.
[OK]       string-concat          0   String mashing.
[OK]       list-concat            0   List mashing.
The full test results are available in `_build/_tests`.
Test Successful in 0.000s. 2 tests run.

$ ./simple.native test 'string-case' '1..3'
Testing Utils.
[SKIP]     string-case            0   Lower case.
[OK]       string-case            1   Capitalization.
[SKIP]     string-concat          0   String mashing.
[SKIP]     list-concat            0   List mashing.
The full test results are available in `_build/_tests`.
Test Successful in 0.000s. 1 test run.

Note that you cannot filter by test case name (i.e. Lower case or Capitalization), you must filter by test name & number instead.

See the examples directory for more examples.

Quick and Slow tests

In general you should use `Quick tests: tests that are ran on any invocations of the test suite. You should only use `Slow tests for stress tests that are ran only on occasion (typically before a release or after a major change). These slow tests can be suppressed by passing the -q flag on the command line, e.g.:

$ ./test.exe -q # run only the quick tests
$ ./test.exe    # run quick and slow tests

Passing custom options to the tests

In most cases, the base tests are unit -> unit functions. However, it is also possible to pass an extra option to all the test functions by using 'a -> unit, where 'a is the type of the extra parameter.

In order to do this, you need to specify how this extra parameter is read on the command-line, by providing a Cmdliner term for command-line arguments which explains how to parse and serialize values of type 'a (note: do not use positional arguments, only optional arguments are supported).

For instance:

let test_nice i = Alcotest.(check int) "Is it a nice integer?" i 42

let int =
  let doc = "What is your preferred number?" in
  Cmdliner.Arg.(required & opt (some int) None & info ["n"] ~doc ~docv:"NUM")

let () =
  Alcotest.run_with_args "foo" int [
    "all", ["nice", `Quick, test_nice]
  ]

Will generate test.exe such that:

$ test.exe test
test.exe: required option -n is missing

$ test.exe test -n 42
Testing foo.
[OK]                all          0   int.

Lwt

Alcotest provides an Alcotest_lwt module that you could use to wrap Lwt test cases. The basic idea is that instead of providing a test function in the form unit -> unit, you provide one with the type unit -> unit Lwt.t and alcotest-lwt calls Lwt_main.run for you.

However, there are a couple of extra features:

  • If an async exception occurs, it will cancel your test case for you and fail it (rather than exiting the process).
  • You get given a switch, which will be turned off when the test case finishes (or fails). You can use that to free up any resources.

For instance:

let free () = print_endline "freeing all resources"; Lwt.return ()

let test_lwt switch () =
  Lwt_switch.add_hook (Some switch) free;
  Lwt.async (fun () -> failwith "All is broken");
  Lwt_unix.sleep 10.

let () =
  Lwt_main.run @@ Alcotest_lwt.run "foo" [
    "all", [
      Alcotest_lwt.test_case "one" `Quick test_lwt
    ]
  ]

Will generate:

$ test.exe
Testing foo.
[ERROR]             all          0   one.
-- all.000 [one.] Failed --
in _build/_tests/all.000.output:
freeing all resources
[failure] All is broken

Comparison with other testing frameworks

The README is pretty clear about that:

Alcotest is the only testing framework using colors!

More seriously, Alcotest is similar to ounit but it fixes a few of the problems found in that library:

  • Alcotest has a nicer output, it is easier to see what failed and what succeeded and to read the log outputs of the failed tests;
  • Alcotest uses combinators to define pretty-printers and comparators between the things to test.

Other nice tools doing different kind of testing also exist:

  • qcheck does random generation and property testing (e.g. Quick Check);
  • crowbar and bun are similar to qcheck, but use compiler-directed randomness, i.e. they take advantage of the AFL support the OCaml compiler;
  • ppx_inline_tests allows to write tests in the same file as your source-code; they will be run only in a special mode of compilation.

Dependencies (9)

  1. ocaml-syntax-shims
  2. uutf >= "1.0.1"
  3. stdlib-shims
  4. re >= "1.7.2"
  5. cmdliner >= "1.2.0"
  6. astring
  7. fmt >= "0.8.7"
  8. ocaml >= "4.08"
  9. dune >= "3.0"

Dev Dependencies (2)

  1. odoc with-doc
  2. cmdliner with-test & < "2.0.0"

Optional Dependencies

None

  1. a2a-client
  2. aho-corasick
  3. ahrocksdb
  4. albatross >= "1.5.4"
  5. alcobar
  6. alg_structs_qcheck
  7. algaeff
  8. ambient-context
  9. ambient-context-eio
  10. ambient-context-lwt
  11. angstrom >= "0.7.0"
  12. ansi >= "0.6.0"
  13. anycache >= "0.7.4"
  14. anycache-lwt
  15. arc
  16. archetype >= "1.4.2"
  17. archi
  18. arp
  19. arrakis < "1.1.0"
  20. art
  21. asai
  22. asak
  23. asli >= "0.2.0"
  24. asn1-combinators >= "0.2.5"
  25. async-uri >= "0.5.0"
  26. atd >= "2.3.3"
  27. atdgen >= "2.10.0"
  28. atdpy
  29. atdts
  30. avro-simple
  31. aws-eio
  32. awskit < "0.2.0"
  33. awskit-eio < "0.2.0"
  34. awskit-lwt < "0.2.0"
  35. awskit-lwt-unix < "0.2.0"
  36. awskit-s3 < "0.2.0"
  37. awskit-s3-eio < "0.2.0"
  38. awskit-s3-lwt < "0.2.0"
  39. awskit-s3-lwt-unix < "0.2.0"
  40. awskit-s3-sim < "0.2.0"
  41. azure-cosmos-db-eio
  42. backoff
  43. base32
  44. base64 >= "2.1.2" & < "3.2.0" | >= "3.4.0"
  45. bastet
  46. bastet_lwt
  47. bech32
  48. bechamel >= "0.5.0"
  49. betacalendars
  50. bhttp
  51. bigarray-overlap
  52. bigstringaf
  53. bin_there
  54. biotk >= "0.4"
  55. bitlib
  56. bizowie-api
  57. blake2
  58. bloomf
  59. bls12-381 < "0.4.1" | >= "3.0.0" & < "18.0"
  60. bls12-381-hash
  61. bls12-381-js >= "0.4.2"
  62. bls12-381-js-gen >= "0.4.2"
  63. bls12-381-legacy
  64. bls12-381-signature
  65. bls12-381-unix
  66. blurhash
  67. bm25
  68. brisk-reconciler
  69. builder-web
  70. bytebuffer
  71. bytream >= "0.2"
  72. ca-certs
  73. ca-certs-nss
  74. cabal
  75. cachet
  76. cachet-lwt
  77. cachet-solo5
  78. cactus
  79. caldav
  80. calendar >= "3.0.0"
  81. calendars >= "2.0.0"
  82. callipyge
  83. camlix
  84. camlkit
  85. camlkit-base
  86. capnp-rpc
  87. capnp-rpc-unix
  88. caqti >= "1.7.0"
  89. caqti-async >= "1.7.0"
  90. caqti-driver-mariadb >= "1.7.0"
  91. caqti-driver-postgresql >= "1.7.0"
  92. caqti-driver-sqlite3 >= "1.7.0"
  93. caqti-dynload = "2.0.1"
  94. caqti-eio
  95. caqti-lwt >= "1.7.0"
  96. caqti-miou
  97. carray
  98. carton < "1.0.0"
  99. carton-git
  100. carton-lwt >= "0.4.3" & < "1.0.0"
  101. cascade
  102. catala >= "0.6.0"
  103. cborl
  104. cf-lwt
  105. chacha
  106. chamelon
  107. chamelon-unix
  108. charrua-client
  109. charrua-server
  110. checked_oint
  111. checkseum >= "0.0.3"
  112. cid
  113. clarity-lang
  114. class_group_vdf
  115. cohttp
  116. cohttp-curl-async
  117. cohttp-curl-lwt
  118. cohttp-eio >= "6.0.0~beta2"
  119. cohttp-mirage >= "6.3.0"
  120. colombe >= "0.2.0"
  121. color
  122. commons
  123. conan
  124. conan-cli
  125. conan-database
  126. conan-lwt
  127. conan-unix
  128. conex < "0.10.0"
  129. conex-mirage-crypto
  130. conformist
  131. console
  132. console-eio
  133. cookie
  134. corosync
  135. cow >= "2.2.0"
  136. crockford
  137. css
  138. css-parser
  139. cstruct
  140. cstruct-sexp
  141. ctypes-zarith
  142. cuid
  143. cure2
  144. curly
  145. current
  146. current-albatross-deployer
  147. current_git >= "0.7.1"
  148. current_incr
  149. current_rpc >= "0.7.4"
  150. curve448
  151. cvc5 >= "1.3.0-3"
  152. data-encoding
  153. dates_calc
  154. dbase4
  155. decimal >= "0.3.0"
  156. decompress
  157. depyt
  158. digestif >= "0.9.0"
  159. dispatch >= "0.4.1"
  160. dkim
  161. dkim-bin
  162. dkim-mirage
  163. dkml-dune-dsl-show
  164. dkml-install
  165. dkml-install-installer
  166. dkml-install-runner
  167. dmarc
  168. dns >= "4.4.1"
  169. dns-cli
  170. dns-client >= "4.6.3"
  171. dns-forward-lwt-unix
  172. dns-resolver
  173. dns-server
  174. dns-tsig
  175. dnssd
  176. dnssec < "10.2.4"
  177. docfd >= "13.0.0"
  178. dockerfile >= "8.2.7" & < "8.3.4"
  179. domain-local-await >= "0.2.1"
  180. domain-local-timeout
  181. domain-name
  182. dream
  183. dream-htmx
  184. dream-pure
  185. dscheck >= "0.1.1"
  186. duff
  187. dune-deps >= "1.4.0"
  188. dune-release >= "1.0.0"
  189. duration
  190. echo
  191. ecma-regex
  192. eio < "0.12"
  193. eio_linux
  194. eio_windows
  195. eliom >= "13.0.0"
  196. elm_playground_3d_software
  197. elm_playground_gamekits
  198. elm_playground_software
  199. emile
  200. encore
  201. eqaf >= "0.5"
  202. equinoxe
  203. equinoxe-cohttp
  204. equinoxe-hlc
  205. ezgzip
  206. ezjsonm
  207. ezjsonm-lwt
  208. ezlua
  209. FPauth
  210. FPauth-core
  211. FPauth-responses
  212. FPauth-strategies
  213. faker
  214. faraday != "0.2.0"
  215. farfadet
  216. fat-filesystem
  217. fehu < "1.0.0~alpha3"
  218. ff
  219. ff-pbt
  220. flex-array
  221. flux
  222. fluxt
  223. forcamla
  224. forester >= "5.0"
  225. fsevents-lwt
  226. functoria
  227. fungi
  228. fxmacrodata
  229. geojson
  230. geoml >= "0.1.1"
  231. git
  232. git-cohttp
  233. git-cohttp-unix
  234. git-kv != "0.1.3"
  235. git-mirage
  236. git-net
  237. git-split
  238. git-unix
  239. gitlab-unix
  240. glicko2
  241. gmap
  242. gmocoin
  243. gobba
  244. gpt
  245. graphql
  246. graphql-async
  247. graphql-cohttp >= "0.13.0"
  248. graphql-lwt
  249. graphql_parser != "0.11.0"
  250. graphql_ppx
  251. h1
  252. h1_parser
  253. h2
  254. hacl
  255. hacl-star >= "0.6.0"
  256. hacl_func
  257. hacl_x25519
  258. handlebars-ml >= "0.2.1"
  259. hedgehog-alcotest
  260. hegel
  261. hermetic
  262. hexen
  263. highlexer
  264. hkdf
  265. hockmd
  266. hpke
  267. html_of_jsx
  268. http
  269. http-multipart-formdata < "2.0.0"
  270. httpaf >= "0.2.0"
  271. httpcats
  272. https-eio
  273. httpun
  274. httpun-ws
  275. hugin < "1.0.0~alpha3"
  276. huml
  277. hvsock
  278. icalendar
  279. idna
  280. imagelib
  281. index
  282. inferno >= "20220603"
  283. influxdb-async
  284. influxdb-lwt
  285. inquire < "0.2.0"
  286. intel_hex >= "0.3"
  287. interval-map
  288. iomux
  289. irmin
  290. irmin-bench
  291. irmin-chunk
  292. irmin-cli
  293. irmin-containers
  294. irmin-fs
  295. irmin-git
  296. irmin-graphql
  297. irmin-pack
  298. irmin-pack-tools
  299. irmin-test != "3.6.1"
  300. irmin-tezos
  301. irmin-unix
  302. irmin-watcher
  303. jekyll-format
  304. jose
  305. json-data-encoding >= "0.9" & < "1.1.1"
  306. json_decoder
  307. jsonfeed
  308. jsonschema-core
  309. jsonschema-validation
  310. jsonxt
  311. junit_alcotest < "2.3.0"
  312. jwto
  313. k7
  314. kafka-eio
  315. kaun < "1.0.0~alpha3"
  316. kcas >= "0.6.0"
  317. kcas_data >= "0.6.0"
  318. kdf
  319. ke >= "0.2"
  320. kkmarkdown
  321. kmt
  322. kube
  323. lambda-runtime
  324. lambda_streams
  325. lambda_streams_async
  326. lambdapi
  327. layoutz
  328. letters
  329. liquid_ml >= "0.1.3"
  330. lmdb >= "1.0"
  331. lockfree >= "0.3.1"
  332. logical
  333. logtk
  334. lp
  335. lp-glpk
  336. lp-glpk-js < "0.5.0"
  337. lp-gurobi < "0.5.0"
  338. lru
  339. lt-code
  340. luv
  341. mazeppa
  342. mbr-format
  343. mdx
  344. mec
  345. mechaml >= "1.2.1"
  346. melange >= "7.0.0-51"
  347. melange-edn >= "0.5.0"
  348. menhir-lsp >= "0.3.3"
  349. menhirformat
  350. merlin = "4.17.1-501"
  351. merlin-lib >= "4.17.1-501"
  352. metrics
  353. mfat
  354. mfetch
  355. miaou-core
  356. middleware
  357. migra
  358. mimic
  359. minicaml = "0.3.1" | >= "0.4"
  360. mirage >= "4.0.0"
  361. mirage-block-partition
  362. mirage-block-ramdisk
  363. mirage-channel >= "4.0.1"
  364. mirage-crypto-ec
  365. mirage-flow-unix
  366. mirage-kv >= "2.0.0"
  367. mirage-kv-mem
  368. mirage-kv-unix >= "3.0.0"
  369. mirage-logs
  370. mirage-nat
  371. mirage-net-unix
  372. mirage-runtime < "4.7.0"
  373. mirage-tc
  374. mjson
  375. mldsa
  376. mlgpx
  377. mlkem
  378. mmdb < "0.3.0"
  379. mnd
  380. mqtt
  381. mrmime >= "0.2.0"
  382. msgpck >= "1.6"
  383. mssql
  384. multibase
  385. multicore-magic
  386. multihash
  387. multihash-digestif
  388. multipart-form-data
  389. multipart_form
  390. multipart_form-eio
  391. multipart_form-lwt
  392. multipart_form-miou
  393. named-pipe
  394. nanoid
  395. nbd >= "4.0.3"
  396. nbd-tool
  397. neo4j_bolt
  398. neodriver
  399. neodriver_core
  400. neodriver_eio
  401. neodriver_packstream
  402. nloge
  403. nocoiner
  404. noise
  405. non_empty_list
  406. nx < "1.0.0~alpha3"
  407. nx-datasets
  408. nx-text
  409. OCADml >= "0.6.0"
  410. obatcher
  411. object
  412. obs-eio
  413. obs-prometheus-eio
  414. ocaml-ai-sdk
  415. ocaml-index < "5.4.1-503"
  416. ocaml-r >= "0.4.0"
  417. ocaml-version >= "3.5.0"
  418. ocamlformat < "0.25.1"
  419. ocamlformat-lib
  420. ocamlformat-mlx-lib
  421. ocamlformat-rpc < "removed"
  422. ocamline
  423. ocgtk
  424. ochre
  425. ochre-cli
  426. ocluster
  427. ocue
  428. odoc < "2.1.1"
  429. oenv >= "0.1.0"
  430. ohex
  431. ohttp
  432. ohttp-cohttp
  433. ohttp-cohttp-eio
  434. ohttp-cohttp-lwt
  435. ohttp-piaf
  436. oidc
  437. oktree >= "0.2.4"
  438. opam-0install
  439. opam-0install-cudf >= "0.5.0"
  440. opam-compiler
  441. opam-file-format >= "2.1.1"
  442. opam-repomin
  443. opencage
  444. opentelemetry >= "0.6"
  445. opentelemetry-client
  446. opentelemetry-client-cohttp-eio
  447. opentelemetry-client-cohttp-lwt >= "0.6"
  448. opentelemetry-client-ocurl >= "0.6"
  449. opentelemetry-client-ocurl-lwt
  450. opentelemetry-cohttp-lwt >= "0.6"
  451. opentelemetry-logs
  452. opentelemetry-lwt >= "0.6"
  453. opium
  454. opium-graphql
  455. opium-testing
  456. opium_kernel
  457. orewa
  458. orgeat
  459. ortac-core
  460. ortac-wrapper
  461. osnap < "0.3.0"
  462. osx-acl
  463. osx-attr
  464. osx-cf
  465. osx-fsevents
  466. osx-keychain
  467. osx-membership
  468. osx-mount
  469. osx-xattr
  470. otoggl
  471. owl >= "0.7.0" & != "0.9.0" & != "1.0.0"
  472. owl-base < "0.5.0"
  473. owl-ode >= "0.1.0" & != "0.2.0"
  474. owl-symbolic
  475. ozstd
  476. par_incr
  477. parseff
  478. passe
  479. passmaker
  480. patch
  481. pbkdf
  482. pecu >= "0.2"
  483. pf-qubes
  484. pg_query >= "0.9.6"
  485. pgx
  486. pgx_unix
  487. pgx_value_core
  488. pgx_value_ptime
  489. phylogenetics
  490. piaf
  491. picos < "0.5.0"
  492. picos_meta
  493. piece_rope
  494. plebeia >= "2.0.0"
  495. polyglot
  496. polymarket
  497. polynomial
  498. ppx_bin_there
  499. ppx_blob >= "0.3.0"
  500. ppx_catch
  501. ppx_deriving_cmdliner
  502. ppx_deriving_ezjsonm
  503. ppx_deriving_qcheck
  504. ppx_deriving_rpc
  505. ppx_deriving_yaml
  506. ppx_deriving_yamlx
  507. ppx_ezlua
  508. ppx_hegel_generator
  509. ppx_hegel_test
  510. ppx_inline_alcotest
  511. ppx_map
  512. ppx_marshal
  513. ppx_mica
  514. ppx_parser
  515. ppx_protocol_conv
  516. ppx_protocol_conv_json
  517. ppx_protocol_conv_jsonm
  518. ppx_protocol_conv_msgpack
  519. ppx_protocol_conv_xml_light
  520. ppx_protocol_conv_xmlm
  521. ppx_protocol_conv_yaml
  522. ppx_repr
  523. ppx_subliner
  524. ppx_units
  525. ppx_yojson >= "1.1.0"
  526. pratter
  527. prbnmcn-ucb1 >= "0.0.2"
  528. prc
  529. preface
  530. pretty_expressive
  531. prettym
  532. privatus-analytics
  533. privatus-analytics-dream
  534. proc-smaps
  535. producer
  536. progress
  537. prom
  538. prometheus < "1.2"
  539. prometheus-app
  540. prometheus-eio
  541. prometheus-lwt
  542. prometheus-reporter
  543. protocell
  544. protocol-9p < "0.11.0" | >= "0.11.2"
  545. protocol-9p-unix
  546. proton
  547. psq
  548. public-suffix
  549. pxshot
  550. pyast
  551. qcaml
  552. qcheck >= "0.25"
  553. qcheck-alcotest
  554. qcheck-core >= "0.25"
  555. qcow-stream >= "0.13.0"
  556. qcow-tool = "0.13.0"
  557. qcow-types = "0.13.0"
  558. qdrant
  559. query-json
  560. quickjs
  561. quill < "1.0.0~alpha3"
  562. randii
  563. reason-standard
  564. red-black-tree
  565. reparse >= "2.0.0" & < "3.0.0"
  566. reparse-unix < "2.1.0"
  567. resp
  568. resp-unix >= "0.10.0"
  569. resto >= "0.9"
  570. rfc1951 < "1.0.0"
  571. routes < "2.0.0"
  572. rpc
  573. rpclib
  574. rpclib-async
  575. rpclib-lwt
  576. rpmfile < "0.3.0"
  577. rpmfile-eio
  578. rpmfile-unix
  579. rune < "1.0.0~alpha3"
  580. SZXX >= "4.0.0"
  581. saga
  582. salsa20
  583. salsa20-core
  584. sanddb >= "0.2"
  585. saturn != "0.4.1"
  586. saturn_lockfree != "0.4.1"
  587. scrypt-kdf
  588. secp256k1 >= "0.4.1"
  589. secp256k1-internal
  590. secret
  591. semver >= "0.2.1"
  592. sendmail
  593. sendmail-lwt
  594. sendmail-miou-unix
  595. sendmail-mirage
  596. sendmsg
  597. seqes
  598. server-reason-react
  599. session-cookie
  600. session-cookie-async
  601. session-cookie-lwt
  602. sha256-cng
  603. shakuhachi
  604. sherlodoc
  605. sihl < "0.2.0"
  606. sihl-type
  607. slhdsa
  608. slug
  609. smaws-clients
  610. smaws-lib
  611. smol
  612. smol-helpers
  613. smtml >= "0.30.0"
  614. sodium-fmt
  615. solidity-alcotest
  616. sosie
  617. soteria
  618. sowilo < "1.0.0~alpha3"
  619. spdx_licenses
  620. spectrum >= "0.2.0"
  621. spectrum_capabilities
  622. spectrum_palette_ppx
  623. spectrum_palettes
  624. spectrum_tools
  625. spin >= "0.7.0"
  626. spurs < "0.1.1"
  627. squirrel
  628. ssh-agent
  629. ssl >= "0.6.0"
  630. starred_ml < "0.0.8"
  631. stem
  632. stramon-lib
  633. stringx
  634. styled-ppx
  635. swapfs
  636. symex >= "0.2"
  637. symphony-orchestrator-tui
  638. synchronizer >= "0.2"
  639. syslog-rfc5424 < "0.2"
  640. syto
  641. tabr
  642. talon < "1.0.0~alpha3"
  643. tar-eio >= "3.5.0"
  644. tar-mirage
  645. tbls
  646. tcpip
  647. tdigest < "2.1.0"
  648. term-indexing
  649. term-tools
  650. termaid
  651. terminal
  652. terminal_size >= "0.1.1"
  653. terminus
  654. terminus-cohttp
  655. terminus-hlc
  656. terml
  657. testo
  658. testo-lwt
  659. textmate-language >= "0.3.0"
  660. textrazor
  661. thread-table
  662. timedesc
  663. timere
  664. timere-parse >= "0.0.7"
  665. timmy
  666. timmy-jsoo
  667. timmy-lwt
  668. timmy-unix
  669. tiny_appkits
  670. tiny_languages
  671. tiny_libs
  672. tinybox
  673. tls >= "0.12.8"
  674. toc
  675. topojson
  676. topojsone
  677. trail
  678. traits
  679. transept
  680. tsort >= "2.2.0"
  681. tw
  682. twostep
  683. type_eq
  684. type_id
  685. typeid >= "1.0.1"
  686. tyre >= "0.4"
  687. tyxml >= "4.2.0"
  688. tyxml-jsx
  689. tyxml-ppx >= "4.3.0"
  690. tyxml-syntax
  691. ucharset
  692. uecc
  693. ulid
  694. universal-portal
  695. unix-dirent
  696. unix-errno
  697. unix-sys-resource
  698. unix-sys-stat
  699. unix-time
  700. unstrctrd
  701. uring < "0.4"
  702. user-agent-parser
  703. uspf
  704. uspf-lwt
  705. uspf-mirage
  706. uspf-unix
  707. utcp
  708. utop >= "2.13.0"
  709. validate
  710. validator
  711. valkey
  712. vercel
  713. verdict
  714. vhd-format-lwt >= "0.13.0"
  715. wayland >= "2.0"
  716. wcwidth
  717. websocketaf
  718. wire
  719. x509 >= "0.7.0"
  720. xapi-rrd
  721. xapi-stdext-date
  722. xapi-stdext-encodings
  723. xapi-stdext-std >= "4.16.0"
  724. xdge
  725. xgboost
  726. xkbcommon
  727. yaml
  728. yaml-sexp
  729. yocaml
  730. yocaml_syndication >= "2.0.0"
  731. yocaml_yaml < "2.0.0"
  732. yojson >= "1.6.0"
  733. yojson-five
  734. yuscii >= "0.3.0"
  735. yuujinchou >= "1.0.0"
  736. zar
  737. zed >= "3.2.2"
  738. zlist < "0.4.0"

Conflicts (2)

  1. js_of_ocaml-compiler < "5.8"
  2. result < "1.5"

Build status

Results of building alcotest with each compiler on check.ci.ocaml.org, run of against opam-repository 8a77e58. All results for this package.

Each result links to its build log. To keep crawlers from overloading the site, build logs require a GitHub sign-in (see ocurrent/opam-health-check). On your first log, GitHub asks you to “Authorize opam-health-check”, the OCurrent app that runs these checks; it sees only your public profile, not your repositories. The sign-in lasts 30 days.

This version is not in the latest run; the versions below are.

Version OCaml 4.11 OCaml 4.14 OCaml 5.2 OCaml 5.4 OCaml 5.5
1.9.1 good good good good good
  • good Package successfully built
  • partial One of the dependencies failed to build
  • bad Package failed to build
  • n/a Package is not available in this environment
  • internal Internal failure