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

Conflicts (2)

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