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

Conflicts (2)

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