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.

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

Conflicts (2)

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