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.7.0.tbz
sha256=812bacdb34b45e88995e07d7306bdab2f72479ef1996637f1d5d1f41667902df
sha512=4ae1ba318949ec9db8b87bc8072632a02f0e4003a95ab21e474f5c34c3b5bde867b0194a2d0ea7d9fc4580c70a30ca39287d33a8c134acc7611902f79c7b7ce8

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

Conflicts (1)

  1. 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