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

Conflicts (2)

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