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

Conflicts (2)

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