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

Conflicts (2)

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