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

Conflicts (2)

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