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

Conflicts (1)

  1. result < "1.5"