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

Conflicts (1)

  1. result < "1.5"