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