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

Conflicts (2)

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