package alcotest

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

Install

dune-project
 Dependency

Authors

Maintainers

Sources

alcotest-1.7.0.tbz
sha256=812bacdb34b45e88995e07d7306bdab2f72479ef1996637f1d5d1f41667902df
sha512=4ae1ba318949ec9db8b87bc8072632a02f0e4003a95ab21e474f5c34c3b5bde867b0194a2d0ea7d9fc4580c70a30ca39287d33a8c134acc7611902f79c7b7ce8

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.

Added to opam-repository:

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.1.0"
  6. astring
  7. fmt >= "0.8.7"
  8. ocaml >= "4.05.0"
  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. alcotest-async = "1.7.0"
  5. alg_structs_qcheck
  6. algaeff
  7. ambient-context
  8. ambient-context-eio
  9. ambient-context-lwt
  10. angstrom >= "0.7.0"
  11. ansi >= "0.6.0"
  12. anycache >= "0.7.4"
  13. anycache-lwt
  14. arc
  15. archetype >= "1.4.2"
  16. archi
  17. arp
  18. arrakis < "1.1.0"
  19. art
  20. asai
  21. asak
  22. asli >= "0.2.0"
  23. asn1-combinators >= "0.2.5"
  24. atd >= "2.3.3"
  25. atdgen >= "2.10.0"
  26. atdpy
  27. atdts
  28. avro-simple
  29. awskit < "0.2.0"
  30. awskit-eio < "0.2.0"
  31. awskit-lwt < "0.2.0"
  32. awskit-lwt-unix < "0.2.0"
  33. awskit-s3 < "0.2.0"
  34. awskit-s3-eio < "0.2.0"
  35. awskit-s3-lwt < "0.2.0"
  36. awskit-s3-lwt-unix < "0.2.0"
  37. awskit-s3-sim < "0.2.0"
  38. azure-cosmos-db-eio
  39. backoff
  40. base32
  41. base64 >= "2.1.2" & < "3.2.0" | >= "3.4.0"
  42. bastet
  43. bastet_lwt
  44. bech32
  45. bechamel >= "0.5.0"
  46. bigarray-overlap
  47. bigstringaf
  48. biotk >= "0.4"
  49. bitlib
  50. bizowie-api
  51. blake2
  52. bloomf
  53. bls12-381 < "0.4.1" | >= "3.0.0" & < "18.0"
  54. bls12-381-hash
  55. bls12-381-js >= "0.4.2"
  56. bls12-381-js-gen >= "0.4.2"
  57. bls12-381-legacy
  58. bls12-381-signature
  59. bls12-381-unix
  60. blurhash
  61. bm25
  62. brisk-reconciler
  63. builder-web
  64. bytebuffer
  65. ca-certs
  66. ca-certs-nss
  67. cabal
  68. cachet
  69. cactus
  70. caldav
  71. calendar >= "3.0.0"
  72. calendars >= "2.0.0"
  73. callipyge
  74. camlix
  75. camlkit
  76. camlkit-base
  77. capnp-rpc
  78. capnp-rpc-unix
  79. caqti >= "1.7.0"
  80. caqti-async >= "1.7.0"
  81. caqti-driver-mariadb >= "1.7.0"
  82. caqti-driver-postgresql >= "1.7.0"
  83. caqti-driver-sqlite3 >= "1.7.0"
  84. caqti-dynload = "2.0.1"
  85. caqti-eio
  86. caqti-lwt >= "1.7.0"
  87. caqti-miou
  88. carray
  89. carton < "1.0.0"
  90. carton-git
  91. carton-lwt >= "0.4.3" & < "1.0.0"
  92. cascade
  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. curly
  132. current
  133. current-albatross-deployer
  134. current_git >= "0.7.1"
  135. current_incr
  136. current_rpc >= "0.7.4"
  137. data-encoding
  138. dates_calc
  139. dbase4
  140. decimal >= "0.3.0"
  141. decompress
  142. depyt
  143. digestif >= "0.9.0"
  144. dispatch >= "0.4.1"
  145. dkim
  146. dkim-bin
  147. dkim-mirage
  148. dkml-dune-dsl-show
  149. dkml-install
  150. dkml-install-installer
  151. dkml-install-runner
  152. dmarc
  153. dns >= "4.4.1"
  154. dns-cli
  155. dns-client >= "4.6.3"
  156. dns-forward-lwt-unix
  157. dns-resolver
  158. dns-server
  159. dns-tsig
  160. dnssd
  161. dnssec < "10.2.4"
  162. docfd >= "13.0.0"
  163. dockerfile >= "8.2.7" & < "8.3.4"
  164. domain-local-await >= "0.2.1"
  165. domain-local-timeout
  166. domain-name
  167. dream
  168. dream-htmx
  169. dream-pure
  170. dscheck >= "0.1.1"
  171. duff
  172. dune-deps >= "1.4.0"
  173. dune-release >= "1.0.0"
  174. duration
  175. echo
  176. ecma-regex
  177. eio < "0.12"
  178. eio_linux
  179. eio_windows
  180. emile
  181. encore
  182. eqaf >= "0.5"
  183. equinoxe
  184. equinoxe-cohttp
  185. equinoxe-hlc
  186. ezgzip
  187. ezjsonm
  188. ezjsonm-lwt
  189. ezlua
  190. FPauth
  191. FPauth-core
  192. FPauth-responses
  193. FPauth-strategies
  194. faraday != "0.2.0"
  195. farfadet
  196. fat-filesystem
  197. fehu < "1.0.0~alpha3"
  198. ff
  199. ff-pbt
  200. flex-array
  201. flux
  202. fluxt
  203. forcamla
  204. forester >= "5.0"
  205. fsevents-lwt
  206. functoria
  207. fungi
  208. geojson
  209. geoml >= "0.1.1"
  210. git
  211. git-cohttp
  212. git-cohttp-unix
  213. git-kv >= "0.2.0"
  214. git-mirage
  215. git-net
  216. git-split
  217. git-unix
  218. gitlab-unix
  219. glicko2
  220. gmap
  221. gobba
  222. gpt
  223. graphql
  224. graphql-async
  225. graphql-cohttp >= "0.13.0"
  226. graphql-lwt
  227. graphql_parser != "0.11.0"
  228. graphql_ppx
  229. h1
  230. h1_parser
  231. h2
  232. hacl
  233. hacl-star >= "0.6.0" & < "0.7.2"
  234. hacl_func
  235. hacl_x25519
  236. handlebars-ml >= "0.2.1"
  237. hedgehog-alcotest
  238. hegel
  239. highlexer
  240. hkdf
  241. hockmd
  242. html_of_jsx
  243. http
  244. http-multipart-formdata < "2.0.0"
  245. httpaf >= "0.2.0"
  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.2.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. menhirformat
  320. merlin = "4.17.1-501"
  321. merlin-lib >= "4.17.1-501"
  322. metrics
  323. mfat
  324. miaou-core
  325. middleware
  326. migra
  327. mimic
  328. minicaml = "0.3.1" | >= "0.4"
  329. mirage >= "4.0.0"
  330. mirage-block-partition
  331. mirage-block-ramdisk
  332. mirage-channel >= "4.0.1"
  333. mirage-crypto-ec
  334. mirage-flow-unix
  335. mirage-kv >= "2.0.0"
  336. mirage-kv-mem
  337. mirage-kv-unix >= "3.0.0"
  338. mirage-logs
  339. mirage-nat
  340. mirage-net-unix
  341. mirage-runtime < "4.7.0"
  342. mirage-tc
  343. mjson
  344. mlgpx
  345. mmdb < "0.3.0"
  346. mnd
  347. mqtt
  348. mrmime >= "0.2.0"
  349. msgpck >= "1.6"
  350. mssql
  351. multibase
  352. multicore-magic
  353. multihash
  354. multihash-digestif
  355. multipart-form-data
  356. multipart_form
  357. multipart_form-eio
  358. multipart_form-lwt
  359. multipart_form-miou
  360. named-pipe
  361. nanoid
  362. nbd >= "4.0.3"
  363. nbd-tool
  364. neo4j_bolt
  365. neodriver
  366. neodriver_core
  367. neodriver_eio
  368. neodriver_packstream
  369. nloge
  370. nocoiner
  371. noise
  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-keychain
  427. osx-membership
  428. osx-mount
  429. osx-xattr
  430. otoggl
  431. owl >= "0.7.0" & != "0.9.0" & != "1.0.0"
  432. owl-base < "0.5.0"
  433. owl-ode >= "0.1.0" & != "0.2.0"
  434. owl-symbolic
  435. par_incr
  436. parseff
  437. passe
  438. passmaker
  439. patch
  440. pbkdf
  441. pecu >= "0.2"
  442. pf-qubes
  443. pg_query >= "0.9.6"
  444. pgx
  445. pgx_unix
  446. pgx_value_core
  447. pgx_value_ptime
  448. phylogenetics
  449. piaf
  450. picos < "0.5.0"
  451. picos_meta
  452. piece_rope
  453. plebeia >= "2.0.0"
  454. polyglot
  455. polymarket
  456. polynomial
  457. ppx_blob >= "0.3.0"
  458. ppx_catch
  459. ppx_deriving_cmdliner
  460. ppx_deriving_ezjsonm
  461. ppx_deriving_qcheck
  462. ppx_deriving_rpc
  463. ppx_deriving_yaml
  464. ppx_ezlua
  465. ppx_hegel_generator
  466. ppx_hegel_test
  467. ppx_inline_alcotest
  468. ppx_map
  469. ppx_marshal
  470. ppx_parser
  471. ppx_protocol_conv
  472. ppx_protocol_conv_json
  473. ppx_protocol_conv_jsonm
  474. ppx_protocol_conv_msgpack
  475. ppx_protocol_conv_xml_light
  476. ppx_protocol_conv_xmlm
  477. ppx_protocol_conv_yaml
  478. ppx_repr
  479. ppx_subliner
  480. ppx_units
  481. ppx_yojson >= "1.1.0"
  482. pratter
  483. prbnmcn-ucb1 >= "0.0.2"
  484. prc
  485. preface
  486. pretty_expressive
  487. prettym
  488. proc-smaps
  489. producer
  490. progress
  491. prom
  492. prometheus < "1.2"
  493. prometheus-app
  494. protocell
  495. protocol-9p < "0.11.0" | >= "0.11.2"
  496. protocol-9p-unix
  497. proton
  498. psq
  499. public-suffix
  500. pxshot
  501. pyast
  502. qcaml
  503. qcheck >= "0.25"
  504. qcheck-alcotest
  505. qcheck-core >= "0.25"
  506. qcow-stream >= "0.13.0"
  507. qcow-tool = "0.13.0"
  508. qcow-types = "0.13.0"
  509. qdrant
  510. query-json
  511. quickjs
  512. quill < "1.0.0~alpha3"
  513. randii
  514. reason-standard
  515. red-black-tree
  516. reparse >= "2.0.0" & < "3.0.0"
  517. reparse-unix < "2.1.0"
  518. resp
  519. resp-unix >= "0.10.0"
  520. resto >= "0.9"
  521. rfc1951 < "1.0.0"
  522. routes < "2.0.0"
  523. rpc
  524. rpclib
  525. rpclib-async
  526. rpclib-lwt
  527. rpmfile < "0.3.0"
  528. rpmfile-eio
  529. rpmfile-unix
  530. rune < "1.0.0~alpha3"
  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. sm
  559. smaws-clients
  560. smaws-lib
  561. smol
  562. smol-helpers
  563. sodium-fmt
  564. solidity-alcotest
  565. soteria
  566. sowilo < "1.0.0~alpha3"
  567. spdx_licenses
  568. spectrum >= "0.2.0"
  569. spectrum_capabilities
  570. spectrum_palette_ppx
  571. spectrum_palettes
  572. spectrum_tools
  573. spin >= "0.7.0"
  574. spurs < "0.1.1"
  575. squirrel
  576. ssh-agent
  577. ssl >= "0.6.0"
  578. starred_ml < "0.0.8"
  579. stem
  580. stramon-lib
  581. stringx
  582. styled-ppx
  583. swapfs
  584. symex >= "0.2"
  585. symphony-orchestrator-tui
  586. synchronizer >= "0.2"
  587. syslog-rfc5424 < "0.2"
  588. syto
  589. tabr
  590. talon < "1.0.0~alpha3"
  591. tar-eio >= "3.5.0"
  592. tar-mirage
  593. tbls
  594. tcpip
  595. tdigest < "2.1.0"
  596. term-indexing
  597. term-tools
  598. termaid
  599. terminal
  600. terminal_size >= "0.1.1"
  601. terminus
  602. terminus-cohttp
  603. terminus-hlc
  604. terml
  605. testo
  606. testo-lwt
  607. textmate-language >= "0.3.0"
  608. textrazor
  609. thread-table
  610. timedesc
  611. timere
  612. timmy
  613. timmy-jsoo
  614. timmy-lwt
  615. timmy-unix
  616. tls >= "0.12.8"
  617. toc
  618. topojson
  619. topojsone
  620. trail
  621. traits
  622. transept
  623. tsort >= "2.2.0"
  624. tw
  625. twostep
  626. type_eq
  627. type_id
  628. typeid >= "1.0.1"
  629. tyre >= "0.4"
  630. tyxml >= "4.2.0"
  631. tyxml-jsx
  632. tyxml-ppx >= "4.3.0"
  633. tyxml-syntax
  634. uecc
  635. ulid
  636. universal-portal
  637. unix-dirent
  638. unix-errno
  639. unix-sys-resource
  640. unix-sys-stat
  641. unix-time
  642. unstrctrd
  643. uring < "0.4"
  644. user-agent-parser
  645. uspf
  646. uspf-lwt
  647. uspf-mirage
  648. uspf-unix
  649. utcp
  650. utop >= "2.13.0"
  651. validate
  652. validator
  653. valkey
  654. vercel
  655. vhd-format-lwt >= "0.13.0"
  656. wayland >= "2.0"
  657. wcwidth
  658. websocketaf
  659. wire
  660. x509 >= "0.7.0"
  661. xapi-rrd
  662. xapi-stdext-date
  663. xapi-stdext-encodings
  664. xapi-stdext-std >= "4.16.0"
  665. xdge
  666. yaml
  667. yaml-sexp
  668. yocaml
  669. yocaml_syndication >= "2.0.0"
  670. yocaml_yaml < "2.0.0"
  671. yojson >= "1.6.0"
  672. yojson-five
  673. yuscii >= "0.3.0"
  674. yuujinchou >= "1.0.0"
  675. zar
  676. zed >= "3.2.2"
  677. zlist < "0.4.0"

Conflicts (1)

  1. result < "1.5"