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. 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. cactus
  71. caldav
  72. calendar >= "3.0.0"
  73. calendars >= "2.0.0"
  74. callipyge
  75. camlix
  76. camlkit
  77. camlkit-base
  78. capnp-rpc
  79. capnp-rpc-unix
  80. caqti >= "1.7.0"
  81. caqti-async >= "1.7.0"
  82. caqti-driver-mariadb >= "1.7.0"
  83. caqti-driver-postgresql >= "1.7.0"
  84. caqti-driver-sqlite3 >= "1.7.0"
  85. caqti-dynload = "2.0.1"
  86. caqti-eio
  87. caqti-lwt >= "1.7.0"
  88. caqti-miou
  89. carray
  90. carton < "1.0.0"
  91. carton-git
  92. carton-lwt >= "0.4.3" & < "1.0.0"
  93. cascade
  94. catala >= "0.6.0"
  95. cborl
  96. cf-lwt
  97. chacha
  98. chamelon
  99. chamelon-unix
  100. charrua-client
  101. charrua-server
  102. checked_oint
  103. checkseum >= "0.0.3"
  104. cid
  105. clarity-lang
  106. class_group_vdf
  107. cohttp
  108. cohttp-curl-async
  109. cohttp-curl-lwt
  110. cohttp-eio >= "6.0.0~beta2"
  111. cohttp-mirage >= "6.3.0"
  112. colombe >= "0.2.0"
  113. color
  114. commons
  115. conan
  116. conan-cli
  117. conan-database
  118. conan-lwt
  119. conan-unix
  120. conex < "0.10.0"
  121. conex-mirage-crypto
  122. conformist
  123. cookie
  124. corosync
  125. cow >= "2.2.0"
  126. crockford
  127. css
  128. css-parser
  129. cstruct
  130. cstruct-sexp
  131. ctypes-zarith
  132. cuid
  133. curly
  134. current
  135. current-albatross-deployer
  136. current_git >= "0.7.1"
  137. current_incr
  138. current_rpc >= "0.7.4"
  139. data-encoding
  140. dates_calc
  141. dbase4
  142. decimal >= "0.3.0"
  143. decompress
  144. depyt
  145. digestif >= "0.9.0"
  146. dispatch >= "0.4.1"
  147. dkim
  148. dkim-bin
  149. dkim-mirage
  150. dkml-dune-dsl-show
  151. dkml-install
  152. dkml-install-installer
  153. dkml-install-runner
  154. dmarc
  155. dns >= "4.4.1"
  156. dns-cli
  157. dns-client >= "4.6.3"
  158. dns-forward-lwt-unix
  159. dns-resolver
  160. dns-server
  161. dns-tsig
  162. dnssd
  163. dnssec < "10.2.4"
  164. docfd >= "13.0.0"
  165. dockerfile >= "8.2.7" & < "8.3.4"
  166. domain-local-await >= "0.2.1"
  167. domain-local-timeout
  168. domain-name
  169. dream
  170. dream-htmx
  171. dream-pure
  172. dscheck >= "0.1.1"
  173. duff
  174. dune-deps >= "1.4.0"
  175. dune-release >= "1.0.0"
  176. duration
  177. echo
  178. ecma-regex
  179. eio < "0.12"
  180. eio_linux
  181. eio_windows
  182. emile
  183. encore
  184. eqaf >= "0.5"
  185. equinoxe
  186. equinoxe-cohttp
  187. equinoxe-hlc
  188. ezgzip
  189. ezjsonm
  190. ezjsonm-lwt
  191. ezlua
  192. FPauth
  193. FPauth-core
  194. FPauth-responses
  195. FPauth-strategies
  196. faraday != "0.2.0"
  197. farfadet
  198. fat-filesystem
  199. fehu < "1.0.0~alpha3"
  200. ff
  201. ff-pbt
  202. flex-array
  203. flux
  204. fluxt
  205. forcamla
  206. forester >= "5.0"
  207. fsevents-lwt
  208. functoria
  209. fungi
  210. fxmacrodata
  211. geojson
  212. geoml >= "0.1.1"
  213. git
  214. git-cohttp
  215. git-cohttp-unix
  216. git-kv >= "0.2.0"
  217. git-mirage
  218. git-net
  219. git-split
  220. git-unix
  221. gitlab-unix
  222. glicko2
  223. gmap
  224. gmocoin
  225. gobba
  226. gpt
  227. graphql
  228. graphql-async
  229. graphql-cohttp >= "0.13.0"
  230. graphql-lwt
  231. graphql_parser != "0.11.0"
  232. graphql_ppx
  233. h1
  234. h1_parser
  235. h2
  236. hacl
  237. hacl-star >= "0.6.0" & < "0.7.2"
  238. hacl_func
  239. hacl_x25519
  240. handlebars-ml >= "0.2.1"
  241. hedgehog-alcotest
  242. hegel
  243. highlexer
  244. hkdf
  245. hockmd
  246. html_of_jsx
  247. http
  248. http-multipart-formdata < "2.0.0"
  249. httpaf >= "0.2.0"
  250. https-eio
  251. httpun
  252. httpun-ws
  253. hugin < "1.0.0~alpha3"
  254. huml
  255. hvsock
  256. icalendar
  257. idna
  258. imagelib
  259. index
  260. inferno >= "20220603"
  261. influxdb-async
  262. influxdb-lwt
  263. inquire < "0.2.0"
  264. intel_hex >= "0.3"
  265. interval-map
  266. iomux
  267. irmin
  268. irmin-bench
  269. irmin-chunk
  270. irmin-cli
  271. irmin-containers
  272. irmin-fs
  273. irmin-git
  274. irmin-graphql
  275. irmin-pack
  276. irmin-pack-tools
  277. irmin-test != "3.6.1"
  278. irmin-tezos
  279. irmin-unix
  280. irmin-watcher
  281. jekyll-format
  282. jose
  283. json-data-encoding >= "0.9" & < "1.1.1"
  284. json_decoder
  285. jsonfeed
  286. jsonschema-core
  287. jsonschema-validation
  288. jsonxt
  289. junit_alcotest < "2.2.0"
  290. jwto
  291. kafka-eio
  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. mfetch
  331. miaou-core
  332. middleware
  333. migra
  334. mimic
  335. minicaml = "0.3.1" | >= "0.4"
  336. mirage >= "4.0.0"
  337. mirage-block-partition
  338. mirage-block-ramdisk
  339. mirage-channel >= "4.0.1"
  340. mirage-crypto-ec
  341. mirage-flow-unix
  342. mirage-kv >= "2.0.0"
  343. mirage-kv-mem
  344. mirage-kv-unix >= "3.0.0"
  345. mirage-logs
  346. mirage-nat
  347. mirage-net-unix
  348. mirage-runtime < "4.7.0"
  349. mirage-tc
  350. mjson
  351. mlgpx
  352. mmdb < "0.3.0"
  353. mnd
  354. mqtt
  355. mrmime >= "0.2.0"
  356. msgpck >= "1.6"
  357. mssql
  358. multibase
  359. multicore-magic
  360. multihash
  361. multihash-digestif
  362. multipart-form-data
  363. multipart_form
  364. multipart_form-eio
  365. multipart_form-lwt
  366. multipart_form-miou
  367. named-pipe
  368. nanoid
  369. nbd >= "4.0.3"
  370. nbd-tool
  371. neo4j_bolt
  372. neodriver
  373. neodriver_core
  374. neodriver_eio
  375. neodriver_packstream
  376. nloge
  377. nocoiner
  378. noise
  379. non_empty_list
  380. nx < "1.0.0~alpha3"
  381. nx-datasets
  382. nx-text
  383. OCADml >= "0.6.0"
  384. obatcher
  385. object
  386. ocaml-ai-sdk
  387. ocaml-index < "5.4.1-503"
  388. ocaml-r >= "0.4.0"
  389. ocaml-version >= "3.5.0"
  390. ocamlformat < "0.25.1"
  391. ocamlformat-lib
  392. ocamlformat-mlx-lib
  393. ocamlformat-rpc < "removed"
  394. ocamline
  395. ocgtk
  396. ochre
  397. ochre-cli
  398. ocluster
  399. ocue
  400. odoc < "2.1.1"
  401. oenv >= "0.1.0"
  402. ohex
  403. oidc
  404. oktree >= "0.2.4"
  405. opam-0install
  406. opam-0install-cudf >= "0.5.0"
  407. opam-compiler
  408. opam-file-format >= "2.1.1"
  409. opam-repomin
  410. opencage
  411. opentelemetry >= "0.6"
  412. opentelemetry-client
  413. opentelemetry-client-cohttp-eio
  414. opentelemetry-client-cohttp-lwt >= "0.6"
  415. opentelemetry-client-ocurl >= "0.6"
  416. opentelemetry-client-ocurl-lwt
  417. opentelemetry-cohttp-lwt >= "0.6"
  418. opentelemetry-logs
  419. opentelemetry-lwt >= "0.6"
  420. opium
  421. opium-graphql
  422. opium-testing
  423. opium_kernel
  424. orewa
  425. orgeat
  426. ortac-core
  427. ortac-wrapper
  428. osnap < "0.3.0"
  429. osx-acl
  430. osx-attr
  431. osx-cf
  432. osx-fsevents
  433. osx-keychain
  434. osx-membership
  435. osx-mount
  436. osx-xattr
  437. otoggl
  438. owl >= "0.7.0" & != "0.9.0" & != "1.0.0"
  439. owl-base < "0.5.0"
  440. owl-ode >= "0.1.0" & != "0.2.0"
  441. owl-symbolic
  442. par_incr
  443. parseff
  444. passe
  445. passmaker
  446. patch
  447. pbkdf
  448. pecu >= "0.2"
  449. pf-qubes
  450. pg_query >= "0.9.6"
  451. pgx
  452. pgx_unix
  453. pgx_value_core
  454. pgx_value_ptime
  455. phylogenetics
  456. piaf
  457. picos < "0.5.0"
  458. picos_meta
  459. piece_rope
  460. plebeia >= "2.0.0"
  461. polyglot
  462. polymarket
  463. polynomial
  464. ppx_blob >= "0.3.0"
  465. ppx_catch
  466. ppx_deriving_cmdliner
  467. ppx_deriving_ezjsonm
  468. ppx_deriving_qcheck
  469. ppx_deriving_rpc
  470. ppx_deriving_yaml
  471. ppx_ezlua
  472. ppx_hegel_generator
  473. ppx_hegel_test
  474. ppx_inline_alcotest
  475. ppx_map
  476. ppx_marshal
  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. sm
  569. smaws-clients
  570. smaws-lib
  571. smol
  572. smol-helpers
  573. smtml >= "0.30.0"
  574. sodium-fmt
  575. solidity-alcotest
  576. sosie
  577. soteria
  578. sowilo < "1.0.0~alpha3"
  579. spdx_licenses
  580. spectrum >= "0.2.0"
  581. spectrum_capabilities
  582. spectrum_palette_ppx
  583. spectrum_palettes
  584. spectrum_tools
  585. spin >= "0.7.0"
  586. spurs < "0.1.1"
  587. squirrel
  588. ssh-agent
  589. ssl >= "0.6.0"
  590. starred_ml < "0.0.8"
  591. stem
  592. stramon-lib
  593. stringx
  594. styled-ppx
  595. swapfs
  596. symex >= "0.2"
  597. symphony-orchestrator-tui
  598. synchronizer >= "0.2"
  599. syslog-rfc5424 < "0.2"
  600. syto
  601. tabr
  602. talon < "1.0.0~alpha3"
  603. tar-eio >= "3.5.0"
  604. tar-mirage
  605. tbls
  606. tcpip
  607. tdigest < "2.1.0"
  608. term-indexing
  609. term-tools
  610. termaid
  611. terminal
  612. terminal_size >= "0.1.1"
  613. terminus
  614. terminus-cohttp
  615. terminus-hlc
  616. terml
  617. testo
  618. testo-lwt
  619. textmate-language >= "0.3.0"
  620. textrazor
  621. thread-table
  622. timedesc
  623. timere
  624. timmy
  625. timmy-jsoo
  626. timmy-lwt
  627. timmy-unix
  628. tls >= "0.12.8"
  629. toc
  630. topojson
  631. topojsone
  632. trail
  633. traits
  634. transept
  635. tsort >= "2.2.0"
  636. tw
  637. twostep
  638. type_eq
  639. type_id
  640. typeid >= "1.0.1"
  641. tyre >= "0.4"
  642. tyxml >= "4.2.0"
  643. tyxml-jsx
  644. tyxml-ppx >= "4.3.0"
  645. tyxml-syntax
  646. ucharset
  647. uecc
  648. ulid
  649. universal-portal
  650. unix-dirent
  651. unix-errno
  652. unix-sys-resource
  653. unix-sys-stat
  654. unix-time
  655. unstrctrd
  656. uring < "0.4"
  657. user-agent-parser
  658. uspf
  659. uspf-lwt
  660. uspf-mirage
  661. uspf-unix
  662. utcp
  663. utop >= "2.13.0"
  664. validate
  665. validator
  666. valkey
  667. vercel
  668. vhd-format-lwt >= "0.13.0"
  669. wayland >= "2.0"
  670. wcwidth
  671. websocketaf
  672. wire
  673. x509 >= "0.7.0"
  674. xapi-rrd
  675. xapi-stdext-date
  676. xapi-stdext-encodings
  677. xapi-stdext-std >= "4.16.0"
  678. xdge
  679. xgboost
  680. yaml
  681. yaml-sexp
  682. yocaml
  683. yocaml_syndication >= "2.0.0"
  684. yocaml_yaml < "2.0.0"
  685. yojson >= "1.6.0"
  686. yojson-five
  687. yuscii >= "0.3.0"
  688. yuujinchou >= "1.0.0"
  689. zar
  690. zed >= "3.2.2"
  691. zlist < "0.4.0"

Conflicts (1)

  1. result < "1.5"