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

Conflicts (2)

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