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

Conflicts (2)

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