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

Conflicts (2)

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