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

Conflicts (2)

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