package alcotest

  1. Overview
  2. Docs
Alcotest is a lightweight and colourful test framework

Install

dune-project
 Dependency

Authors

Maintainers

Sources

alcotest-1.9.1.tbz
sha256=1e29c3b41d4329062105b723dfda3aff86b8cef5e7c7500d0e491fc5fd78e482
sha512=c49d402fa636dcf11f81917610dd1d2eca8606c8919aede4db23710d071f6046a8f93c78de9fbfee26637a53ca67f71fad500bfa2478b7f0f059608a492dd0a5

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 (1)

  1. odoc with-doc

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

Conflicts (2)

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