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.

Published: 27 Feb 2023

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

Conflicts (1)

  1. result < "1.5"