package alcotest

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

Install

dune-project
 Dependency

Authors

Maintainers

Sources

alcotest-1.8.0.tbz
sha256=cba1bd01707c8c55b4764bb0df8c9c732be321e1f1c1a96a406e56d8dbca1d0e
sha512=eebb034c990abd253f526e848a99881686d7bd3c7d1b1d373953d568d062e3d5aaa79b6b4807455aaa9a98710eca4ada30e816a0134717a380619a597575564d

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

  1. odoc with-doc
  2. cmdliner with-test & < "2.0.0"

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

Conflicts (2)

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