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. oenv >= "0.1.0"
  356. ohex
  357. oidc
  358. opam-0install
  359. opam-0install-cudf >= "0.5.0"
  360. opam-compiler
  361. opam-file-format >= "2.1.1"
  362. opencage
  363. opentelemetry >= "0.6"
  364. opentelemetry-client-cohttp-eio
  365. opentelemetry-client-cohttp-lwt >= "0.6"
  366. opentelemetry-client-ocurl >= "0.6"
  367. opentelemetry-cohttp-lwt >= "0.6"
  368. opentelemetry-logs
  369. opentelemetry-lwt >= "0.6"
  370. opium
  371. opium-graphql
  372. opium-testing
  373. opium_kernel
  374. orewa
  375. orgeat
  376. ortac-core
  377. ortac-wrapper
  378. osnap < "0.3.0"
  379. osx-acl
  380. osx-attr
  381. osx-cf
  382. osx-fsevents
  383. osx-membership
  384. osx-mount
  385. osx-xattr
  386. otoggl
  387. owl >= "0.7.0" & != "0.9.0" & != "1.0.0"
  388. owl-base < "0.5.0"
  389. owl-ode >= "0.1.0" & != "0.2.0"
  390. owl-symbolic
  391. par_incr
  392. passmaker
  393. patch
  394. pbkdf
  395. pecu >= "0.2"
  396. pf-qubes
  397. pg_query >= "0.9.6"
  398. pgx >= "1.0"
  399. pgx_unix >= "1.0"
  400. pgx_value_core
  401. pgx_value_ptime
  402. phylogenetics
  403. piaf
  404. picos < "0.5.0"
  405. picos_meta
  406. piece_rope
  407. plebeia >= "2.0.0"
  408. polyglot
  409. polynomial
  410. ppx_blob >= "0.3.0"
  411. ppx_catch
  412. ppx_deriving_cmdliner
  413. ppx_deriving_ezjsonm
  414. ppx_deriving_qcheck
  415. ppx_deriving_rpc
  416. ppx_deriving_yaml
  417. ppx_inline_alcotest
  418. ppx_map
  419. ppx_marshal
  420. ppx_mica
  421. ppx_parser
  422. ppx_protocol_conv >= "5.0.0"
  423. ppx_protocol_conv_json >= "5.0.0"
  424. ppx_protocol_conv_jsonm >= "5.0.0"
  425. ppx_protocol_conv_msgpack >= "5.0.0"
  426. ppx_protocol_conv_xml_light >= "5.0.0"
  427. ppx_protocol_conv_xmlm
  428. ppx_protocol_conv_yaml >= "5.0.0"
  429. ppx_repr
  430. ppx_subliner
  431. ppx_units
  432. ppx_yojson >= "1.1.0"
  433. pratter
  434. prbnmcn-ucb1 >= "0.0.2"
  435. prc
  436. preface
  437. pretty_expressive
  438. prettym
  439. proc-smaps
  440. producer
  441. progress
  442. prom
  443. prometheus < "1.2"
  444. prometheus-app
  445. protocell
  446. protocol-9p < "0.11.0" | >= "0.11.2"
  447. protocol-9p-unix
  448. proton
  449. psq
  450. pyast
  451. qcheck >= "0.25"
  452. qcheck-alcotest
  453. qcheck-core >= "0.25"
  454. quickjs
  455. quill
  456. randii
  457. reason-standard
  458. red-black-tree
  459. reparse >= "2.0.0" & < "3.0.0"
  460. reparse-unix < "2.1.0"
  461. resp
  462. resp-unix >= "0.10.0"
  463. resto >= "0.9"
  464. rfc1951 < "1.0.0"
  465. routes < "2.0.0"
  466. rpc
  467. rpclib
  468. rpclib-async
  469. rpclib-lwt
  470. rpmfile < "0.3.0"
  471. rpmfile-eio
  472. rpmfile-unix
  473. rune
  474. runtime_events_tools >= "0.5.2"
  475. SZXX >= "4.0.0"
  476. saga
  477. salsa20
  478. salsa20-core
  479. sanddb >= "0.2"
  480. saturn != "0.4.1"
  481. saturn_lockfree != "0.4.1"
  482. scrypt-kdf
  483. secp256k1 >= "0.4.1"
  484. secp256k1-internal
  485. semver >= "0.2.1"
  486. sendmail
  487. sendmail-lwt
  488. sendmail-miou-unix
  489. sendmail-mirage
  490. sendmsg
  491. seqes
  492. server-reason-react
  493. session-cookie
  494. session-cookie-async
  495. session-cookie-lwt
  496. sherlodoc
  497. sihl < "0.2.0"
  498. sihl-type
  499. slug
  500. smaws-clients
  501. smaws-lib
  502. smol
  503. smol-helpers
  504. sodium-fmt
  505. solidity-alcotest
  506. sowilo
  507. spdx_licenses
  508. spectrum >= "0.2.0"
  509. spin >= "0.7.0"
  510. spurs
  511. squirrel
  512. ssh-agent
  513. ssl >= "0.6.0"
  514. starred_ml
  515. stramon-lib
  516. stringx
  517. styled-ppx
  518. swapfs
  519. syslog-rfc5424
  520. tabr
  521. talon
  522. tar-mirage
  523. tcpip
  524. tdigest < "2.1.0"
  525. term-indexing
  526. term-tools
  527. terminal
  528. terminal_size >= "0.1.1"
  529. terminus
  530. terminus-cohttp
  531. terminus-hlc
  532. terml
  533. testo
  534. testo-lwt
  535. textmate-language >= "0.3.0"
  536. textrazor
  537. tezos-base-test-helpers < "17.3"
  538. tezos-bls12-381-polynomial
  539. tezos-client-base < "17.3"
  540. tezos-client-base-unix < "17.3"
  541. tezos-crypto >= "16.0" & < "17.3"
  542. tezos-crypto-dal < "17.3"
  543. tezos-error-monad >= "12.3" & < "17.3"
  544. tezos-event-logging-test-helpers < "17.3"
  545. tezos-plompiler = "0.1.3"
  546. tezos-plonk = "0.1.3"
  547. tezos-shell-services >= "16.0" & < "17.3"
  548. tezos-stdlib != "12.3" & < "17.3"
  549. tezos-test-helpers < "17.3"
  550. tezos-version >= "16.0" & < "17.3"
  551. tezos-webassembly-interpreter < "17.3"
  552. thread-table
  553. timedesc
  554. timere
  555. timmy
  556. timmy-jsoo
  557. timmy-lwt
  558. timmy-unix
  559. tls >= "0.12.8"
  560. toc
  561. topojson
  562. topojsone
  563. trail
  564. traits
  565. transept
  566. tsort >= "2.2.0"
  567. twostep
  568. type_eq
  569. type_id
  570. typeid >= "1.0.1"
  571. tyre >= "0.4"
  572. tyxml >= "4.2.0"
  573. tyxml-jsx
  574. tyxml-ppx >= "4.3.0"
  575. tyxml-syntax
  576. uecc
  577. ulid
  578. universal-portal
  579. unix-dirent
  580. unix-errno
  581. unix-sys-resource
  582. unix-sys-stat
  583. unix-time
  584. unstrctrd
  585. uring < "0.4"
  586. user-agent-parser
  587. uspf
  588. uspf-lwt
  589. uspf-mirage
  590. uspf-unix
  591. utop >= "2.13.0"
  592. validate
  593. validator
  594. vercel
  595. vhd-format-lwt >= "0.13.0"
  596. vpnkit
  597. wayland >= "2.0"
  598. wcwidth
  599. websocketaf
  600. x509 >= "0.7.0"
  601. xapi-rrd
  602. xapi-stdext-date
  603. xapi-stdext-encodings
  604. xapi-stdext-std >= "4.16.0"
  605. xkbcommon
  606. yaml
  607. yaml-sexp
  608. yocaml
  609. yocaml_syndication >= "2.0.0"
  610. yocaml_yaml < "2.0.0"
  611. yojson >= "1.6.0"
  612. yojson-five
  613. yuscii >= "0.3.0"
  614. yuujinchou >= "1.0.0"
  615. zar
  616. zed >= "3.2.2"
  617. zlist < "0.4.0"

Conflicts (2)

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