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. hexen
  262. highlexer
  263. hkdf
  264. hockmd
  265. hpke
  266. html_of_jsx
  267. http
  268. http-multipart-formdata < "2.0.0"
  269. httpaf >= "0.2.0"
  270. httpcats
  271. https-eio
  272. httpun
  273. httpun-ws
  274. hugin < "1.0.0~alpha3"
  275. huml
  276. hvsock
  277. icalendar
  278. idna
  279. imagelib
  280. index
  281. inferno >= "20220603"
  282. influxdb-async
  283. influxdb-lwt
  284. inquire < "0.2.0"
  285. intel_hex >= "0.3"
  286. interval-map
  287. iomux
  288. irmin
  289. irmin-bench
  290. irmin-chunk
  291. irmin-cli
  292. irmin-containers
  293. irmin-fs
  294. irmin-git
  295. irmin-graphql
  296. irmin-pack
  297. irmin-pack-tools
  298. irmin-test != "3.6.1"
  299. irmin-tezos
  300. irmin-unix
  301. irmin-watcher
  302. jekyll-format
  303. jose
  304. json-data-encoding >= "0.9" & < "1.1.1"
  305. json_decoder
  306. jsonfeed
  307. jsonschema-core
  308. jsonschema-validation
  309. jsonxt
  310. junit_alcotest < "2.3.0"
  311. jwto
  312. k7
  313. kafka-eio
  314. kaun < "1.0.0~alpha3"
  315. kcas >= "0.6.0"
  316. kcas_data >= "0.6.0"
  317. kdf
  318. ke >= "0.2"
  319. kkmarkdown
  320. kmt
  321. kube
  322. lambda-runtime
  323. lambda_streams
  324. lambda_streams_async
  325. lambdapi
  326. layoutz
  327. letters
  328. liquid_ml >= "0.1.3"
  329. lmdb >= "1.0"
  330. lockfree >= "0.3.1"
  331. logical
  332. logtk
  333. lp
  334. lp-glpk
  335. lp-glpk-js < "0.5.0"
  336. lp-gurobi < "0.5.0"
  337. lru
  338. lt-code
  339. luv
  340. mazeppa
  341. mbr-format
  342. mdx
  343. mec
  344. mechaml >= "1.2.1"
  345. melange >= "7.0.0-51"
  346. melange-edn >= "0.5.0"
  347. menhir-lsp >= "0.3.3"
  348. menhirformat
  349. merlin = "4.17.1-501"
  350. merlin-lib >= "4.17.1-501"
  351. metrics
  352. mfat
  353. mfetch
  354. miaou-core
  355. middleware
  356. migra
  357. mimic
  358. minicaml = "0.3.1" | >= "0.4"
  359. mirage >= "4.0.0"
  360. mirage-block-partition
  361. mirage-block-ramdisk
  362. mirage-channel >= "4.0.1"
  363. mirage-crypto-ec
  364. mirage-flow-unix
  365. mirage-kv >= "2.0.0"
  366. mirage-kv-mem
  367. mirage-kv-unix >= "3.0.0"
  368. mirage-logs
  369. mirage-nat
  370. mirage-net-unix
  371. mirage-runtime < "4.7.0"
  372. mirage-tc
  373. mjson
  374. mldsa
  375. mlgpx
  376. mlkem
  377. mmdb < "0.3.0"
  378. mnd
  379. mqtt
  380. mrmime >= "0.2.0"
  381. msgpck >= "1.6"
  382. mssql
  383. multibase
  384. multicore-magic
  385. multihash
  386. multihash-digestif
  387. multipart-form-data
  388. multipart_form
  389. multipart_form-eio
  390. multipart_form-lwt
  391. multipart_form-miou
  392. named-pipe
  393. nanoid
  394. nbd >= "4.0.3"
  395. nbd-tool
  396. neo4j_bolt
  397. neodriver
  398. neodriver_core
  399. neodriver_eio
  400. neodriver_packstream
  401. nloge
  402. nocoiner
  403. noise
  404. non_empty_list
  405. nx < "1.0.0~alpha3"
  406. nx-datasets
  407. nx-text
  408. OCADml >= "0.6.0"
  409. obatcher
  410. object
  411. obs-eio
  412. obs-prometheus-eio
  413. ocaml-ai-sdk
  414. ocaml-index < "5.4.1-503"
  415. ocaml-r >= "0.4.0"
  416. ocaml-version >= "3.5.0"
  417. ocamlformat < "0.25.1"
  418. ocamlformat-lib
  419. ocamlformat-mlx-lib
  420. ocamlformat-rpc < "removed"
  421. ocamline
  422. ocgtk
  423. ochre
  424. ochre-cli
  425. ocluster
  426. ocue
  427. odoc < "2.1.1"
  428. oenv >= "0.1.0"
  429. ohex
  430. ohttp
  431. ohttp-cohttp
  432. ohttp-cohttp-eio
  433. ohttp-cohttp-lwt
  434. ohttp-piaf
  435. oidc
  436. oktree >= "0.2.4"
  437. opam-0install
  438. opam-0install-cudf >= "0.5.0"
  439. opam-compiler
  440. opam-file-format >= "2.1.1"
  441. opam-repomin
  442. opencage
  443. opentelemetry >= "0.6"
  444. opentelemetry-client
  445. opentelemetry-client-cohttp-eio
  446. opentelemetry-client-cohttp-lwt >= "0.6"
  447. opentelemetry-client-ocurl >= "0.6"
  448. opentelemetry-client-ocurl-lwt
  449. opentelemetry-cohttp-lwt >= "0.6"
  450. opentelemetry-logs
  451. opentelemetry-lwt >= "0.6"
  452. opium
  453. opium-graphql
  454. opium-testing
  455. opium_kernel
  456. orewa
  457. orgeat
  458. ortac-core
  459. ortac-wrapper
  460. osnap < "0.3.0"
  461. osx-acl
  462. osx-attr
  463. osx-cf
  464. osx-fsevents
  465. osx-keychain
  466. osx-membership
  467. osx-mount
  468. osx-xattr
  469. otoggl
  470. owl >= "0.7.0" & != "0.9.0" & != "1.0.0"
  471. owl-base < "0.5.0"
  472. owl-ode >= "0.1.0" & != "0.2.0"
  473. owl-symbolic
  474. ozstd
  475. par_incr
  476. parseff
  477. passe
  478. passmaker
  479. patch
  480. pbkdf
  481. pecu >= "0.2"
  482. pf-qubes
  483. pg_query >= "0.9.6"
  484. pgx
  485. pgx_unix
  486. pgx_value_core
  487. pgx_value_ptime
  488. phylogenetics
  489. piaf
  490. picos < "0.5.0"
  491. picos_meta
  492. piece_rope
  493. plebeia >= "2.0.0"
  494. polyglot
  495. polymarket
  496. polynomial
  497. ppx_bin_there
  498. ppx_blob >= "0.3.0"
  499. ppx_catch
  500. ppx_deriving_cmdliner
  501. ppx_deriving_ezjsonm
  502. ppx_deriving_qcheck
  503. ppx_deriving_rpc
  504. ppx_deriving_yaml
  505. ppx_deriving_yamlx
  506. ppx_ezlua
  507. ppx_hegel_generator
  508. ppx_hegel_test
  509. ppx_inline_alcotest
  510. ppx_map
  511. ppx_marshal
  512. ppx_mica
  513. ppx_parser
  514. ppx_protocol_conv
  515. ppx_protocol_conv_json
  516. ppx_protocol_conv_jsonm
  517. ppx_protocol_conv_msgpack
  518. ppx_protocol_conv_xml_light
  519. ppx_protocol_conv_xmlm
  520. ppx_protocol_conv_yaml
  521. ppx_repr
  522. ppx_subliner
  523. ppx_units
  524. ppx_yojson >= "1.1.0"
  525. pratter
  526. prbnmcn-ucb1 >= "0.0.2"
  527. prc
  528. preface
  529. pretty_expressive
  530. prettym
  531. privatus-analytics
  532. privatus-analytics-dream
  533. proc-smaps
  534. producer
  535. progress
  536. prom
  537. prometheus < "1.2"
  538. prometheus-app
  539. prometheus-eio
  540. prometheus-lwt
  541. prometheus-reporter
  542. protocell
  543. protocol-9p < "0.11.0" | >= "0.11.2"
  544. protocol-9p-unix
  545. proton
  546. psq
  547. public-suffix
  548. pxshot
  549. pyast
  550. qcaml
  551. qcheck >= "0.25"
  552. qcheck-alcotest
  553. qcheck-core >= "0.25"
  554. qcow-stream >= "0.13.0"
  555. qcow-tool = "0.13.0"
  556. qcow-types = "0.13.0"
  557. qdrant
  558. query-json
  559. quickjs
  560. quill < "1.0.0~alpha3"
  561. randii
  562. reason-standard
  563. red-black-tree
  564. reparse >= "2.0.0" & < "3.0.0"
  565. reparse-unix < "2.1.0"
  566. resp
  567. resp-unix >= "0.10.0"
  568. resto >= "0.9"
  569. rfc1951 < "1.0.0"
  570. routes < "2.0.0"
  571. rpc
  572. rpclib
  573. rpclib-async
  574. rpclib-lwt
  575. rpmfile < "0.3.0"
  576. rpmfile-eio
  577. rpmfile-unix
  578. rune < "1.0.0~alpha3"
  579. SZXX >= "4.0.0"
  580. saga
  581. salsa20
  582. salsa20-core
  583. sanddb >= "0.2"
  584. saturn != "0.4.1"
  585. saturn_lockfree != "0.4.1"
  586. scrypt-kdf
  587. secp256k1 >= "0.4.1"
  588. secp256k1-internal
  589. secret
  590. semver >= "0.2.1"
  591. sendmail
  592. sendmail-lwt
  593. sendmail-miou-unix
  594. sendmail-mirage
  595. sendmsg
  596. seqes
  597. server-reason-react
  598. session-cookie
  599. session-cookie-async
  600. session-cookie-lwt
  601. sha256-cng
  602. shakuhachi
  603. sherlodoc
  604. sihl < "0.2.0"
  605. sihl-type
  606. slhdsa
  607. slug
  608. smaws-clients
  609. smaws-lib
  610. smol
  611. smol-helpers
  612. smtml >= "0.30.0"
  613. sodium-fmt
  614. solidity-alcotest
  615. sosie
  616. soteria
  617. sowilo < "1.0.0~alpha3"
  618. spdx_licenses
  619. spectrum >= "0.2.0"
  620. spectrum_capabilities
  621. spectrum_palette_ppx
  622. spectrum_palettes
  623. spectrum_tools
  624. spin >= "0.7.0"
  625. spurs < "0.1.1"
  626. squirrel
  627. ssh-agent
  628. ssl >= "0.6.0"
  629. starred_ml < "0.0.8"
  630. stem
  631. stramon-lib
  632. stringx
  633. styled-ppx
  634. swapfs
  635. symex >= "0.2"
  636. symphony-orchestrator-tui
  637. synchronizer >= "0.2"
  638. syslog-rfc5424 < "0.2"
  639. syto
  640. tabr
  641. talon < "1.0.0~alpha3"
  642. tar-eio >= "3.5.0"
  643. tar-mirage
  644. tbls
  645. tcpip
  646. tdigest < "2.1.0"
  647. term-indexing
  648. term-tools
  649. termaid
  650. terminal
  651. terminal_size >= "0.1.1"
  652. terminus
  653. terminus-cohttp
  654. terminus-hlc
  655. terml
  656. testo
  657. testo-lwt
  658. textmate-language >= "0.3.0"
  659. textrazor
  660. thread-table
  661. timedesc
  662. timere
  663. timere-parse >= "0.0.7"
  664. timmy
  665. timmy-jsoo
  666. timmy-lwt
  667. timmy-unix
  668. tiny_appkits
  669. tiny_languages
  670. tiny_libs
  671. tinybox
  672. tls >= "0.12.8"
  673. toc
  674. topojson
  675. topojsone
  676. trail
  677. traits
  678. transept
  679. tsort >= "2.2.0"
  680. tw
  681. twostep
  682. type_eq
  683. type_id
  684. typeid >= "1.0.1"
  685. tyre >= "0.4"
  686. tyxml >= "4.2.0"
  687. tyxml-jsx
  688. tyxml-ppx >= "4.3.0"
  689. tyxml-syntax
  690. ucharset
  691. uecc
  692. ulid
  693. universal-portal
  694. unix-dirent
  695. unix-errno
  696. unix-sys-resource
  697. unix-sys-stat
  698. unix-time
  699. unstrctrd
  700. uring < "0.4"
  701. user-agent-parser
  702. uspf
  703. uspf-lwt
  704. uspf-mirage
  705. uspf-unix
  706. utcp
  707. utop >= "2.13.0"
  708. validate
  709. validator
  710. valkey
  711. vercel
  712. verdict
  713. vhd-format-lwt >= "0.13.0"
  714. wayland >= "2.0"
  715. wcwidth
  716. websocketaf
  717. wire
  718. x509 >= "0.7.0"
  719. xapi-rrd
  720. xapi-stdext-date
  721. xapi-stdext-encodings
  722. xapi-stdext-std >= "4.16.0"
  723. xdge
  724. xgboost
  725. xkbcommon
  726. yaml
  727. yaml-sexp
  728. yocaml
  729. yocaml_syndication >= "2.0.0"
  730. yocaml_yaml < "2.0.0"
  731. yojson >= "1.6.0"
  732. yojson-five
  733. yuscii >= "0.3.0"
  734. yuujinchou >= "1.0.0"
  735. zar
  736. zed >= "3.2.2"
  737. 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 7cdc698. 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