package alcotest

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

Install

dune-project
 Dependency

Authors

Maintainers

Sources

alcotest-1.9.1.tbz
sha256=1e29c3b41d4329062105b723dfda3aff86b8cef5e7c7500d0e491fc5fd78e482
sha512=c49d402fa636dcf11f81917610dd1d2eca8606c8919aede4db23710d071f6046a8f93c78de9fbfee26637a53ca67f71fad500bfa2478b7f0f059608a492dd0a5

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.

Published: 01 Oct 2025

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 (1)

  1. odoc with-doc

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

Conflicts (2)

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