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. fxmacrodata
  213. geojson
  214. geoml >= "0.1.1"
  215. git
  216. git-cohttp
  217. git-cohttp-unix
  218. git-kv != "0.1.3"
  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"
  240. hacl_func
  241. hacl_x25519
  242. handlebars-ml >= "0.2.1"
  243. hedgehog-alcotest
  244. hegel
  245. highlexer
  246. hkdf
  247. hockmd
  248. html_of_jsx
  249. http
  250. http-multipart-formdata < "2.0.0"
  251. httpaf >= "0.2.0"
  252. httpcats
  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.3.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. lambda-runtime
  303. lambda_streams
  304. lambda_streams_async
  305. lambdapi
  306. layoutz
  307. letters
  308. liquid_ml >= "0.1.3"
  309. lmdb >= "1.0"
  310. lockfree >= "0.3.1"
  311. logical
  312. logtk
  313. lp
  314. lp-glpk
  315. lp-glpk-js < "0.5.0"
  316. lp-gurobi < "0.5.0"
  317. lru
  318. lt-code
  319. luv
  320. mazeppa
  321. mbr-format
  322. mdx
  323. mec
  324. mechaml >= "1.2.1"
  325. melange >= "7.0.0-51"
  326. melange-edn >= "0.5.0"
  327. menhir-lsp >= "0.3.3"
  328. menhirformat
  329. merlin = "4.17.1-501"
  330. merlin-lib >= "4.17.1-501"
  331. metrics
  332. mfat
  333. mfetch
  334. miaou-core
  335. middleware
  336. migra
  337. mimic
  338. minicaml = "0.3.1" | >= "0.4"
  339. mirage >= "4.0.0"
  340. mirage-block-partition
  341. mirage-block-ramdisk
  342. mirage-channel >= "4.0.1"
  343. mirage-crypto-ec
  344. mirage-flow-unix
  345. mirage-kv >= "2.0.0"
  346. mirage-kv-mem
  347. mirage-kv-unix >= "3.0.0"
  348. mirage-logs
  349. mirage-nat
  350. mirage-net-unix
  351. mirage-runtime < "4.7.0"
  352. mirage-tc
  353. mjson
  354. mlgpx
  355. mmdb < "0.3.0"
  356. mnd
  357. mqtt
  358. mrmime >= "0.2.0"
  359. msgpck >= "1.6"
  360. mssql
  361. multibase
  362. multicore-magic
  363. multihash
  364. multihash-digestif
  365. multipart-form-data
  366. multipart_form
  367. multipart_form-eio
  368. multipart_form-lwt
  369. multipart_form-miou
  370. named-pipe
  371. nanoid
  372. nbd >= "4.0.3"
  373. nbd-tool
  374. neo4j_bolt
  375. neodriver
  376. neodriver_core
  377. neodriver_eio
  378. neodriver_packstream
  379. nloge
  380. nocoiner
  381. noise
  382. non_empty_list
  383. nx < "1.0.0~alpha3"
  384. nx-datasets
  385. nx-text
  386. OCADml >= "0.6.0"
  387. obatcher
  388. object
  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_mica
  481. ppx_parser
  482. ppx_protocol_conv
  483. ppx_protocol_conv_json
  484. ppx_protocol_conv_jsonm
  485. ppx_protocol_conv_msgpack
  486. ppx_protocol_conv_xml_light
  487. ppx_protocol_conv_xmlm
  488. ppx_protocol_conv_yaml
  489. ppx_repr
  490. ppx_subliner
  491. ppx_units
  492. ppx_yojson >= "1.1.0"
  493. pratter
  494. prbnmcn-ucb1 >= "0.0.2"
  495. prc
  496. preface
  497. pretty_expressive
  498. prettym
  499. proc-smaps
  500. producer
  501. progress
  502. prom
  503. prometheus < "1.2"
  504. prometheus-app
  505. prometheus-eio
  506. prometheus-lwt
  507. prometheus-reporter
  508. protocell
  509. protocol-9p < "0.11.0" | >= "0.11.2"
  510. protocol-9p-unix
  511. proton
  512. psq
  513. public-suffix
  514. pxshot
  515. pyast
  516. qcaml
  517. qcheck >= "0.25"
  518. qcheck-alcotest
  519. qcheck-core >= "0.25"
  520. qcow-stream >= "0.13.0"
  521. qcow-tool = "0.13.0"
  522. qcow-types = "0.13.0"
  523. qdrant
  524. query-json
  525. quickjs
  526. quill < "1.0.0~alpha3"
  527. randii
  528. reason-standard
  529. red-black-tree
  530. reparse >= "2.0.0" & < "3.0.0"
  531. reparse-unix < "2.1.0"
  532. resp
  533. resp-unix >= "0.10.0"
  534. resto >= "0.9"
  535. rfc1951 < "1.0.0"
  536. routes < "2.0.0"
  537. rpc
  538. rpclib
  539. rpclib-async
  540. rpclib-lwt
  541. rpmfile < "0.3.0"
  542. rpmfile-eio
  543. rpmfile-unix
  544. rune < "1.0.0~alpha3"
  545. SZXX >= "4.0.0"
  546. saga
  547. salsa20
  548. salsa20-core
  549. sanddb >= "0.2"
  550. saturn != "0.4.1"
  551. saturn_lockfree != "0.4.1"
  552. scrypt-kdf
  553. secp256k1 >= "0.4.1"
  554. secp256k1-internal
  555. semver >= "0.2.1"
  556. sendmail
  557. sendmail-lwt
  558. sendmail-miou-unix
  559. sendmail-mirage
  560. sendmsg
  561. seqes
  562. server-reason-react
  563. session-cookie
  564. session-cookie-async
  565. session-cookie-lwt
  566. sha256-cng
  567. shakuhachi
  568. sherlodoc
  569. sihl < "0.2.0"
  570. sihl-type
  571. slug
  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. xkbcommon
  684. yaml
  685. yaml-sexp
  686. yocaml
  687. yocaml_syndication >= "2.0.0"
  688. yocaml_yaml < "2.0.0"
  689. yojson >= "1.6.0"
  690. yojson-five
  691. yuscii >= "0.3.0"
  692. yuujinchou >= "1.0.0"
  693. zar
  694. zed >= "3.2.2"
  695. zlist < "0.4.0"

Conflicts (2)

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