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. bin_there
  50. biotk >= "0.4"
  51. bitlib
  52. bizowie-api
  53. blake2
  54. bloomf
  55. bls12-381 < "0.4.1" | >= "3.0.0" & < "18.0"
  56. bls12-381-hash
  57. bls12-381-js >= "0.4.2"
  58. bls12-381-js-gen >= "0.4.2"
  59. bls12-381-legacy
  60. bls12-381-signature
  61. bls12-381-unix
  62. blurhash
  63. bm25
  64. brisk-reconciler
  65. builder-web
  66. bytebuffer
  67. bytream >= "0.2"
  68. ca-certs
  69. ca-certs-nss
  70. cabal
  71. cachet
  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. 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. fxmacrodata
  213. geojson
  214. geoml >= "0.1.1"
  215. git
  216. git-cohttp
  217. git-cohttp-unix
  218. git-kv >= "0.2.0"
  219. git-mirage
  220. git-net
  221. git-split
  222. git-unix
  223. gitlab-unix
  224. glicko2
  225. gmap
  226. gmocoin
  227. gobba
  228. gpt
  229. graphql
  230. graphql-async
  231. graphql-cohttp >= "0.13.0"
  232. graphql-lwt
  233. graphql_parser != "0.11.0"
  234. graphql_ppx
  235. h1
  236. h1_parser
  237. h2
  238. hacl
  239. hacl-star >= "0.6.0" & < "0.7.2"
  240. hacl_func
  241. hacl_x25519
  242. handlebars-ml >= "0.2.1"
  243. hedgehog-alcotest
  244. hegel
  245. highlexer
  246. hkdf
  247. hockmd
  248. hpke
  249. html_of_jsx
  250. http
  251. http-multipart-formdata < "2.0.0"
  252. httpaf >= "0.2.0"
  253. https-eio
  254. httpun
  255. httpun-ws
  256. hugin < "1.0.0~alpha3"
  257. huml
  258. hvsock
  259. icalendar
  260. idna
  261. imagelib
  262. index
  263. inferno >= "20220603"
  264. influxdb-async
  265. influxdb-lwt
  266. inquire < "0.2.0"
  267. intel_hex >= "0.3"
  268. interval-map
  269. iomux
  270. irmin
  271. irmin-bench
  272. irmin-chunk
  273. irmin-cli
  274. irmin-containers
  275. irmin-fs
  276. irmin-git
  277. irmin-graphql
  278. irmin-pack
  279. irmin-pack-tools
  280. irmin-test != "3.6.1"
  281. irmin-tezos
  282. irmin-unix
  283. irmin-watcher
  284. jekyll-format
  285. jose
  286. json-data-encoding >= "0.9" & < "1.1.1"
  287. json_decoder
  288. jsonfeed
  289. jsonschema-core
  290. jsonschema-validation
  291. jsonxt
  292. junit_alcotest < "2.2.0"
  293. jwto
  294. kafka-eio
  295. kaun < "1.0.0~alpha3"
  296. kcas >= "0.6.0"
  297. kcas_data >= "0.6.0"
  298. kdf
  299. ke >= "0.2"
  300. kkmarkdown
  301. kmt
  302. kube
  303. lambda-runtime
  304. lambda_streams
  305. lambda_streams_async
  306. lambdapi
  307. layoutz
  308. letters
  309. liquid_ml >= "0.1.3"
  310. lmdb >= "1.0"
  311. lockfree >= "0.3.1"
  312. logical
  313. logtk
  314. lp
  315. lp-glpk
  316. lp-glpk-js < "0.5.0"
  317. lp-gurobi < "0.5.0"
  318. lru
  319. lt-code
  320. luv
  321. mazeppa
  322. mbr-format
  323. mdx
  324. mec
  325. mechaml >= "1.2.1"
  326. melange >= "7.0.0-51"
  327. melange-edn >= "0.5.0"
  328. menhir-lsp >= "0.3.3"
  329. menhirformat
  330. merlin = "4.17.1-501"
  331. merlin-lib >= "4.17.1-501"
  332. metrics
  333. mfat
  334. mfetch
  335. miaou-core
  336. middleware
  337. migra
  338. mimic
  339. minicaml = "0.3.1" | >= "0.4"
  340. mirage >= "4.0.0"
  341. mirage-block-partition
  342. mirage-block-ramdisk
  343. mirage-channel >= "4.0.1"
  344. mirage-crypto-ec
  345. mirage-flow-unix
  346. mirage-kv >= "2.0.0"
  347. mirage-kv-mem
  348. mirage-kv-unix >= "3.0.0"
  349. mirage-logs
  350. mirage-nat
  351. mirage-net-unix
  352. mirage-runtime < "4.7.0"
  353. mirage-tc
  354. mjson
  355. mlgpx
  356. mmdb < "0.3.0"
  357. mnd
  358. mqtt
  359. mrmime >= "0.2.0"
  360. msgpck >= "1.6"
  361. mssql
  362. multibase
  363. multicore-magic
  364. multihash
  365. multihash-digestif
  366. multipart-form-data
  367. multipart_form
  368. multipart_form-eio
  369. multipart_form-lwt
  370. multipart_form-miou
  371. named-pipe
  372. nanoid
  373. nbd >= "4.0.3"
  374. nbd-tool
  375. neo4j_bolt
  376. neodriver
  377. neodriver_core
  378. neodriver_eio
  379. neodriver_packstream
  380. nloge
  381. nocoiner
  382. noise
  383. non_empty_list
  384. nx < "1.0.0~alpha3"
  385. nx-datasets
  386. nx-text
  387. OCADml >= "0.6.0"
  388. obatcher
  389. object
  390. obs-eio
  391. obs-prometheus-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_bin_there
  471. ppx_blob >= "0.3.0"
  472. ppx_catch
  473. ppx_deriving_cmdliner
  474. ppx_deriving_ezjsonm
  475. ppx_deriving_qcheck
  476. ppx_deriving_rpc
  477. ppx_deriving_yaml
  478. ppx_ezlua
  479. ppx_hegel_generator
  480. ppx_hegel_test
  481. ppx_inline_alcotest
  482. ppx_map
  483. ppx_marshal
  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. secret
  559. semver >= "0.2.1"
  560. sendmail
  561. sendmail-lwt
  562. sendmail-miou-unix
  563. sendmail-mirage
  564. sendmsg
  565. seqes
  566. server-reason-react
  567. session-cookie
  568. session-cookie-async
  569. session-cookie-lwt
  570. sha256-cng
  571. shakuhachi
  572. sherlodoc
  573. sihl < "0.2.0"
  574. sihl-type
  575. slug
  576. sm
  577. smaws-clients
  578. smaws-lib
  579. smol
  580. smol-helpers
  581. smtml >= "0.30.0"
  582. sodium-fmt
  583. solidity-alcotest
  584. sosie
  585. soteria
  586. sowilo < "1.0.0~alpha3"
  587. spdx_licenses
  588. spectrum >= "0.2.0"
  589. spectrum_capabilities
  590. spectrum_palette_ppx
  591. spectrum_palettes
  592. spectrum_tools
  593. spin >= "0.7.0"
  594. spurs < "0.1.1"
  595. squirrel
  596. ssh-agent
  597. ssl >= "0.6.0"
  598. starred_ml < "0.0.8"
  599. stem
  600. stramon-lib
  601. stringx
  602. styled-ppx
  603. swapfs
  604. symex >= "0.2"
  605. symphony-orchestrator-tui
  606. synchronizer >= "0.2"
  607. syslog-rfc5424 < "0.2"
  608. syto
  609. tabr
  610. talon < "1.0.0~alpha3"
  611. tar-eio >= "3.5.0"
  612. tar-mirage
  613. tbls
  614. tcpip
  615. tdigest < "2.1.0"
  616. term-indexing
  617. term-tools
  618. termaid
  619. terminal
  620. terminal_size >= "0.1.1"
  621. terminus
  622. terminus-cohttp
  623. terminus-hlc
  624. terml
  625. testo
  626. testo-lwt
  627. textmate-language >= "0.3.0"
  628. textrazor
  629. thread-table
  630. timedesc
  631. timere
  632. timmy
  633. timmy-jsoo
  634. timmy-lwt
  635. timmy-unix
  636. tls >= "0.12.8"
  637. toc
  638. topojson
  639. topojsone
  640. trail
  641. traits
  642. transept
  643. tsort >= "2.2.0"
  644. tw
  645. twostep
  646. type_eq
  647. type_id
  648. typeid >= "1.0.1"
  649. tyre >= "0.4"
  650. tyxml >= "4.2.0"
  651. tyxml-jsx
  652. tyxml-ppx >= "4.3.0"
  653. tyxml-syntax
  654. ucharset
  655. uecc
  656. ulid
  657. universal-portal
  658. unix-dirent
  659. unix-errno
  660. unix-sys-resource
  661. unix-sys-stat
  662. unix-time
  663. unstrctrd
  664. uring < "0.4"
  665. user-agent-parser
  666. uspf
  667. uspf-lwt
  668. uspf-mirage
  669. uspf-unix
  670. utcp
  671. utop >= "2.13.0"
  672. validate
  673. validator
  674. valkey
  675. vercel
  676. vhd-format-lwt >= "0.13.0"
  677. wayland >= "2.0"
  678. wcwidth
  679. websocketaf
  680. wire
  681. x509 >= "0.7.0"
  682. xapi-rrd
  683. xapi-stdext-date
  684. xapi-stdext-encodings
  685. xapi-stdext-std >= "4.16.0"
  686. xdge
  687. xgboost
  688. yaml
  689. yaml-sexp
  690. yocaml
  691. yocaml_syndication >= "2.0.0"
  692. yocaml_yaml < "2.0.0"
  693. yojson >= "1.6.0"
  694. yojson-five
  695. yuscii >= "0.3.0"
  696. yuujinchou >= "1.0.0"
  697. zar
  698. zed >= "3.2.2"
  699. zlist < "0.4.0"

Conflicts (1)

  1. result < "1.5"