package alcotest

  1. Overview
  2. Docs
Alcotest is a lightweight and colourful test framework

Install

dune-project
 Dependency

Authors

Maintainers

Sources

alcotest-1.8.0.tbz
sha256=cba1bd01707c8c55b4764bb0df8c9c732be321e1f1c1a96a406e56d8dbca1d0e
sha512=eebb034c990abd253f526e848a99881686d7bd3c7d1b1d373953d568d062e3d5aaa79b6b4807455aaa9a98710eca4ada30e816a0134717a380619a597575564d

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: 25 Jul 2024

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 (2)

  1. odoc with-doc
  2. cmdliner with-test & < "2.0.0"

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

Conflicts (2)

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