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

Conflicts (2)

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