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

Conflicts (2)

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