package alcotest

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

Install

dune-project
 Dependency

Authors

Maintainers

Sources

alcotest-1.9.1.tbz
sha256=1e29c3b41d4329062105b723dfda3aff86b8cef5e7c7500d0e491fc5fd78e482
sha512=c49d402fa636dcf11f81917610dd1d2eca8606c8919aede4db23710d071f6046a8f93c78de9fbfee26637a53ca67f71fad500bfa2478b7f0f059608a492dd0a5

Description

Alcotest exposes simple interface to perform unit tests. It exposes a simple TESTABLE module type, a check function to assert test predicates and a run function to perform a list of unit -> unit test callbacks.

Alcotest provides a quiet and colorful output where only faulty runs are fully displayed at the end of the run (with the full logs ready to inspect), with a simple (yet expressive) query language to select the tests to run.

Added to opam-repository:

README

A lightweight and colourful test framework.


Alcotest exposes a simple interface to perform unit tests. It exposes a simple TESTABLE module type, a check function to assert test predicates and a run function to perform a list of unit -> unit test callbacks.

Alcotest provides a quiet and colorful output where only faulty runs are fully displayed at the end of the run (with the full logs ready to inspect), with a simple (yet expressive) query language to select the tests to run. See the manpage for details.

The API documentation can be found here. For information on contributing to Alcotest, see CONTRIBUTING.md.

OCaml-CI Build Status Alcotest Documentation


Examples

A simple example (taken from examples/simple.ml):

Generated by the following test suite specification:

(* Build with `ocamlbuild -pkg alcotest simple.byte` *)

(* A module with functions to test *)
module To_test = struct
  let lowercase = String.lowercase_ascii
  let capitalize = String.capitalize_ascii
  let str_concat = String.concat ""
  let list_concat = List.append
end

(* The tests *)
let test_lowercase () =
  Alcotest.(check string) "same string" "hello!" (To_test.lowercase "hELLO!")

let test_capitalize () =
  Alcotest.(check string) "same string" "World." (To_test.capitalize "world.")

let test_str_concat () =
  Alcotest.(check string) "same string" "foobar" (To_test.str_concat ["foo"; "bar"])

let test_list_concat () =
  Alcotest.(check (list int)) "same lists" [1; 2; 3] (To_test.list_concat [1] [2; 3])

(* Run it *)
let () =
  let open Alcotest in
  run "Utils" [
      "string-case", [
          test_case "Lower case"     `Quick test_lowercase;
          test_case "Capitalization" `Quick test_capitalize;
        ];
      "string-concat", [ test_case "String mashing" `Quick test_str_concat  ];
      "list-concat",   [ test_case "List mashing"   `Slow  test_list_concat ];
    ]

The result is a self-contained binary which displays the test results. Use dune exec examples/simple.exe -- --help to see the runtime options.

Here's an example of a of failing test suite:

By default, only the first failing test log is printed to the console (and all test logs are captured on disk). Pass --show-errors to print all error messages.

Using Alcotest with opam and Dune

Add (alcotest :with-test) to the depends stanza of your dune-project file, or "alcotest" {with-test} to your opam file. Use the with-test package variable to declare your tests opam dependencies. Call opam to install them:

$ opam install --deps-only --with-test .

You can then declare your test and link with Alcotest: (test (libraries alcotest …) …), and run your tests:

$ dune runtest

Selecting tests to execute

You can filter which tests to run by supplying a regular expression matching the names of the tests to execute, or by passing a regular expression and a comma-separated list of test numbers (or ranges of test numbers, e.g. 2,4..9):

$ ./simple.native test '.*concat*'
Testing Utils.
[SKIP]     string-case            0   Lower case.
[SKIP]     string-case            1   Capitalization.
[OK]       string-concat          0   String mashing.
[OK]       list-concat            0   List mashing.
The full test results are available in `_build/_tests`.
Test Successful in 0.000s. 2 tests run.

$ ./simple.native test 'string-case' '1..3'
Testing Utils.
[SKIP]     string-case            0   Lower case.
[OK]       string-case            1   Capitalization.
[SKIP]     string-concat          0   String mashing.
[SKIP]     list-concat            0   List mashing.
The full test results are available in `_build/_tests`.
Test Successful in 0.000s. 1 test run.

Note that you cannot filter by test case name (i.e. Lower case or Capitalization), you must filter by test name & number instead.

See the examples directory for more examples.

Quick and Slow tests

In general you should use `Quick tests: tests that are ran on any invocations of the test suite. You should only use `Slow tests for stress tests that are ran only on occasion (typically before a release or after a major change). These slow tests can be suppressed by passing the -q flag on the command line, e.g.:

$ ./test.exe -q # run only the quick tests
$ ./test.exe    # run quick and slow tests

Passing custom options to the tests

In most cases, the base tests are unit -> unit functions. However, it is also possible to pass an extra option to all the test functions by using 'a -> unit, where 'a is the type of the extra parameter.

In order to do this, you need to specify how this extra parameter is read on the command-line, by providing a Cmdliner term for command-line arguments which explains how to parse and serialize values of type 'a (note: do not use positional arguments, only optional arguments are supported).

For instance:

let test_nice i = Alcotest.(check int) "Is it a nice integer?" i 42

let int =
  let doc = "What is your preferred number?" in
  Cmdliner.Arg.(required & opt (some int) None & info ["n"] ~doc ~docv:"NUM")

let () =
  Alcotest.run_with_args "foo" int [
    "all", ["nice", `Quick, test_nice]
  ]

Will generate test.exe such that:

$ test.exe test
test.exe: required option -n is missing

$ test.exe test -n 42
Testing foo.
[OK]                all          0   int.

Lwt

Alcotest provides an Alcotest_lwt module that you could use to wrap Lwt test cases. The basic idea is that instead of providing a test function in the form unit -> unit, you provide one with the type unit -> unit Lwt.t and alcotest-lwt calls Lwt_main.run for you.

However, there are a couple of extra features:

  • If an async exception occurs, it will cancel your test case for you and fail it (rather than exiting the process).
  • You get given a switch, which will be turned off when the test case finishes (or fails). You can use that to free up any resources.

For instance:

let free () = print_endline "freeing all resources"; Lwt.return ()

let test_lwt switch () =
  Lwt_switch.add_hook (Some switch) free;
  Lwt.async (fun () -> failwith "All is broken");
  Lwt_unix.sleep 10.

let () =
  Lwt_main.run @@ Alcotest_lwt.run "foo" [
    "all", [
      Alcotest_lwt.test_case "one" `Quick test_lwt
    ]
  ]

Will generate:

$ test.exe
Testing foo.
[ERROR]             all          0   one.
-- all.000 [one.] Failed --
in _build/_tests/all.000.output:
freeing all resources
[failure] All is broken

Comparison with other testing frameworks

The README is pretty clear about that:

Alcotest is the only testing framework using colors!

More seriously, Alcotest is similar to ounit but it fixes a few of the problems found in that library:

  • Alcotest has a nicer output, it is easier to see what failed and what succeeded and to read the log outputs of the failed tests;
  • Alcotest uses combinators to define pretty-printers and comparators between the things to test.

Other nice tools doing different kind of testing also exist:

  • qcheck does random generation and property testing (e.g. Quick Check);
  • crowbar and bun are similar to qcheck, but use compiler-directed randomness, i.e. they take advantage of the AFL support the OCaml compiler;
  • ppx_inline_tests allows to write tests in the same file as your source-code; they will be run only in a special mode of compilation.

Dependencies (9)

  1. ocaml-syntax-shims
  2. uutf >= "1.0.1"
  3. stdlib-shims
  4. re >= "1.7.2"
  5. cmdliner >= "1.2.0"
  6. astring
  7. fmt >= "0.8.7"
  8. ocaml >= "4.08"
  9. dune >= "3.0"

Dev Dependencies (1)

  1. odoc with-doc

  1. ahrocksdb
  2. albatross >= "1.5.4"
  3. alcobar
  4. alcotest-async >= "1.9.1"
  5. alcotest-js >= "1.9.1"
  6. alcotest-lwt >= "1.9.1"
  7. alcotest-mirage >= "1.9.1"
  8. alg_structs_qcheck
  9. algaeff
  10. ambient-context
  11. ambient-context-eio
  12. ambient-context-lwt
  13. angstrom >= "0.7.0"
  14. ansi >= "0.6.0"
  15. anycache >= "0.7.4"
  16. anycache-lwt
  17. arc
  18. archetype >= "1.4.2"
  19. archi
  20. arp
  21. arrakis < "1.1.0"
  22. art
  23. asai
  24. asak
  25. asli >= "0.2.0"
  26. asn1-combinators >= "0.2.5"
  27. atd >= "2.3.3"
  28. atdgen >= "2.10.0"
  29. atdpy
  30. atdts
  31. avro-simple
  32. awskit
  33. awskit-eio
  34. awskit-lwt
  35. awskit-lwt-unix < "0.2.0"
  36. awskit-s3
  37. awskit-s3-eio < "0.2.0"
  38. awskit-s3-lwt < "0.2.0"
  39. awskit-s3-lwt-unix < "0.2.0"
  40. awskit-s3-sim
  41. azure-cosmos-db-eio
  42. backoff
  43. base32
  44. base64 >= "2.1.2" & < "3.2.0" | >= "3.4.0"
  45. bastet
  46. bastet_lwt
  47. bech32
  48. bechamel >= "0.5.0"
  49. bigarray-overlap
  50. bigstringaf
  51. biotk >= "0.4"
  52. bitlib
  53. bizowie-api
  54. blake2
  55. bloomf
  56. bls12-381 < "0.4.1" | >= "3.0.0" & < "18.0"
  57. bls12-381-hash
  58. bls12-381-js >= "0.4.2"
  59. bls12-381-js-gen >= "0.4.2"
  60. bls12-381-legacy
  61. bls12-381-signature
  62. bls12-381-unix
  63. blurhash
  64. bm25
  65. brisk-reconciler
  66. builder-web
  67. bytebuffer
  68. bytream >= "0.2"
  69. ca-certs
  70. ca-certs-nss
  71. cabal
  72. cachet
  73. cachet-lwt
  74. cachet-solo5
  75. cactus
  76. caldav
  77. calendar >= "3.0.0"
  78. calendars >= "2.0.0"
  79. callipyge
  80. camlix
  81. camlkit
  82. camlkit-base
  83. capnp-rpc
  84. capnp-rpc-unix
  85. caqti >= "1.7.0"
  86. caqti-async >= "1.7.0"
  87. caqti-driver-mariadb >= "1.7.0"
  88. caqti-driver-postgresql >= "1.7.0"
  89. caqti-driver-sqlite3 >= "1.7.0"
  90. caqti-dynload = "2.0.1"
  91. caqti-eio
  92. caqti-lwt >= "1.7.0"
  93. caqti-miou
  94. carray
  95. carton < "1.0.0"
  96. carton-git
  97. carton-lwt >= "0.4.3" & < "1.0.0"
  98. cascade
  99. catala >= "0.6.0"
  100. cborl
  101. cf-lwt
  102. chacha
  103. chamelon
  104. chamelon-unix
  105. charrua-client
  106. charrua-server
  107. checked_oint
  108. checkseum >= "0.0.3"
  109. cid
  110. clarity-lang
  111. class_group_vdf
  112. cohttp
  113. cohttp-curl-async
  114. cohttp-curl-lwt
  115. cohttp-eio >= "6.0.0~beta2"
  116. cohttp-mirage >= "6.3.0"
  117. colombe >= "0.2.0"
  118. color
  119. commons
  120. conan
  121. conan-cli
  122. conan-database
  123. conan-lwt
  124. conan-unix
  125. conex < "0.10.0"
  126. conex-mirage-crypto
  127. conformist
  128. contract
  129. cookie
  130. corosync
  131. cow >= "2.2.0"
  132. crockford
  133. css
  134. css-parser
  135. cstruct
  136. cstruct-sexp
  137. ctypes-zarith
  138. cuid
  139. cure2
  140. curly
  141. current
  142. current-albatross-deployer
  143. current_git >= "0.7.1"
  144. current_incr
  145. current_rpc >= "0.7.4"
  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
  171. docfd >= "13.0.0"
  172. dockerfile >= "8.2.7"
  173. dockerfile-opam >= "8.3.4"
  174. domain-local-await >= "0.2.1"
  175. domain-local-timeout
  176. domain-name
  177. dream
  178. dream-htmx
  179. dream-pure
  180. dscheck >= "0.1.1"
  181. duff
  182. dune-deps >= "1.4.0"
  183. dune-release >= "1.0.0"
  184. duration
  185. echo
  186. ecma-regex
  187. eio < "0.12"
  188. eio_linux
  189. eio_windows
  190. emile
  191. encore
  192. eqaf >= "0.5"
  193. equinoxe
  194. equinoxe-cohttp
  195. equinoxe-hlc
  196. ezgzip
  197. ezjsonm
  198. ezjsonm-lwt
  199. ezlua
  200. FPauth
  201. FPauth-core
  202. FPauth-responses
  203. FPauth-strategies
  204. faraday != "0.2.0"
  205. farfadet
  206. fat-filesystem
  207. fehu < "1.0.0~alpha3"
  208. ff
  209. ff-pbt
  210. flex-array
  211. flux
  212. fluxt
  213. forcamla
  214. forester >= "5.0"
  215. fsevents-lwt
  216. functoria
  217. fungi
  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. guardian >= "0.4.0"
  241. h1
  242. h1_parser
  243. h2
  244. hacl
  245. hacl-star >= "0.6.0"
  246. hacl_func
  247. hacl_x25519
  248. handlebars-ml >= "0.2.1"
  249. hedgehog-alcotest
  250. hegel
  251. highlexer
  252. hkdf
  253. hockmd
  254. html_of_jsx
  255. http
  256. http-multipart-formdata < "2.0.0"
  257. httpaf >= "0.2.0"
  258. httpcats
  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"
  292. json-data-encoding-bson >= "1.1.1"
  293. json_decoder
  294. jsonfeed
  295. jsonschema-core
  296. jsonschema-validation
  297. jsonxt
  298. junit_alcotest >= "2.2.0"
  299. jwto
  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. 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. mel-bastet
  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. 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 >= "4.0.1"
  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. modelkit
  363. modelkit-parallel
  364. mqtt
  365. mrmime >= "0.2.0"
  366. msgpck >= "1.6"
  367. mssql
  368. multibase
  369. multicore-magic
  370. multihash
  371. multihash-digestif
  372. multipart-form-data
  373. multipart_form
  374. multipart_form-eio
  375. multipart_form-lwt
  376. multipart_form-miou
  377. named-pipe
  378. nanoid
  379. nbd >= "4.0.3"
  380. nbd-tool
  381. nel
  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. ocaml-ai-sdk
  398. ocaml-index < "5.4.1-503"
  399. ocaml-r >= "0.4.0"
  400. ocaml-version >= "3.5.0"
  401. ocamlformat < "0.25.1"
  402. ocamlformat-lib
  403. ocamlformat-mlx-lib
  404. ocamlformat-rpc < "removed"
  405. ocamline
  406. ocgtk
  407. ochre
  408. ochre-cli
  409. ocluster
  410. ocue
  411. odoc < "2.1.1"
  412. oenv >= "0.1.0"
  413. ohex
  414. oidc
  415. oktree >= "0.2.4"
  416. opam-0install
  417. opam-0install-cudf >= "0.5.0"
  418. opam-compiler
  419. opam-file-format >= "2.1.1"
  420. opam-repomin
  421. opencage
  422. opentelemetry >= "0.6"
  423. opentelemetry-client
  424. opentelemetry-client-cohttp-eio
  425. opentelemetry-client-cohttp-lwt >= "0.6"
  426. opentelemetry-client-ocurl >= "0.6"
  427. opentelemetry-client-ocurl-lwt
  428. opentelemetry-cohttp-lwt >= "0.6"
  429. opentelemetry-logs
  430. opentelemetry-lwt >= "0.6"
  431. opium
  432. opium-graphql
  433. opium-testing
  434. opium_kernel
  435. orewa
  436. orgeat
  437. ortac-core
  438. ortac-wrapper
  439. osnap < "0.3.0"
  440. osx-acl
  441. osx-attr
  442. osx-cf
  443. osx-fsevents
  444. osx-keychain
  445. osx-membership
  446. osx-mount
  447. osx-xattr
  448. otoggl
  449. owl >= "0.7.0" & != "0.9.0" & != "1.0.0"
  450. owl-base < "0.5.0"
  451. owl-ode >= "0.1.0" & != "0.2.0"
  452. owl-symbolic
  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. pidgin
  471. piece_rope
  472. plebeia >= "2.0.0"
  473. polyglot
  474. polymarket
  475. polynomial
  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-lwt
  515. protocell
  516. protocol-9p < "0.11.0" | >= "0.11.2"
  517. protocol-9p-unix
  518. proton
  519. psq
  520. public-suffix
  521. purl
  522. pxshot
  523. pyast
  524. qcaml
  525. qcheck >= "0.25"
  526. qcheck-alcotest
  527. qcheck-core >= "0.25"
  528. qcow-stream >= "0.13.0"
  529. qcow-tool = "0.13.0"
  530. qcow-types = "0.13.0"
  531. qdrant
  532. query-json
  533. quickjs
  534. quill < "1.0.0~alpha3"
  535. randii
  536. reason-standard
  537. red-black-tree
  538. reparse >= "2.0.0" & < "3.0.0"
  539. reparse-unix < "2.1.0"
  540. resp
  541. resp-unix >= "0.10.0"
  542. resto >= "0.9"
  543. rfc1951 < "1.0.0"
  544. routes < "2.0.0"
  545. rpc
  546. rpclib
  547. rpclib-async
  548. rpclib-lwt
  549. rpmfile < "0.3.0"
  550. rpmfile-eio
  551. rpmfile-unix
  552. rune < "1.0.0~alpha3"
  553. runtime_events_tools >= "0.5.2"
  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. semver >= "0.2.1"
  565. sendmail
  566. sendmail-lwt
  567. sendmail-miou-unix
  568. sendmail-mirage
  569. sendmsg
  570. seqes
  571. server-reason-react
  572. session-cookie
  573. session-cookie-async
  574. session-cookie-lwt
  575. sha256-cng
  576. shakuhachi
  577. sherlodoc
  578. sihl < "0.2.0"
  579. sihl-type
  580. slug
  581. smaws-clients
  582. smaws-lib
  583. smol
  584. smol-helpers
  585. smtml >= "0.30.0"
  586. sodium-fmt
  587. solidity-alcotest
  588. soteria
  589. sowilo < "1.0.0~alpha3"
  590. spdx_licenses
  591. spectrum >= "0.2.0"
  592. spectrum_capabilities
  593. spectrum_palette_ppx
  594. spectrum_palettes
  595. spectrum_tools
  596. spin >= "0.7.0"
  597. spurs < "0.1.1"
  598. squirrel
  599. ssh-agent
  600. ssl >= "0.6.0"
  601. starred_ml
  602. stem
  603. stramon-lib
  604. stringx
  605. styled-ppx
  606. swapfs
  607. symex >= "0.2"
  608. symphony-orchestrator-tui
  609. synchronizer >= "0.2"
  610. syslog-rfc5424
  611. syto
  612. tabr
  613. talon < "1.0.0~alpha3"
  614. tar-eio >= "3.5.0"
  615. tar-mirage
  616. tbls
  617. tcpip
  618. tdigest < "2.1.0"
  619. term-indexing
  620. term-tools
  621. termaid
  622. terminal
  623. terminal_size >= "0.1.1"
  624. terminus
  625. terminus-cohttp
  626. terminus-hlc
  627. terml
  628. testo
  629. testo-lwt
  630. textmate-language >= "0.3.0"
  631. textrazor
  632. thread-table
  633. timedesc
  634. timere
  635. timmy
  636. timmy-jsoo
  637. timmy-lwt
  638. timmy-unix
  639. tls >= "0.12.8"
  640. toc
  641. topojson
  642. topojsone
  643. trail
  644. traits
  645. transept
  646. tsort >= "2.2.0"
  647. tw
  648. twostep
  649. type_eq
  650. type_id
  651. typeid >= "1.0.1"
  652. tyre >= "0.4"
  653. tyxml >= "4.2.0"
  654. tyxml-jsx
  655. tyxml-ppx >= "4.3.0"
  656. tyxml-syntax
  657. uecc
  658. ulid
  659. universal-portal
  660. unix-dirent
  661. unix-errno
  662. unix-sys-resource
  663. unix-sys-stat
  664. unix-time
  665. unstrctrd
  666. uring < "0.4"
  667. user-agent-parser
  668. uspf
  669. uspf-lwt
  670. uspf-mirage
  671. uspf-unix
  672. utcp
  673. utop >= "2.13.0"
  674. validate
  675. validator
  676. valkey
  677. vercel
  678. vhd-format-lwt >= "0.13.0"
  679. wayland >= "2.0"
  680. wcwidth
  681. websocketaf
  682. wire
  683. x509 >= "0.7.0"
  684. xapi-rrd
  685. xapi-stdext-date
  686. xapi-stdext-encodings
  687. xapi-stdext-std >= "4.16.0"
  688. xdge
  689. xkbcommon
  690. yaml
  691. yaml-sexp
  692. yocaml
  693. yocaml_syndication >= "2.0.0"
  694. yocaml_yaml < "2.0.0"
  695. yojson >= "1.6.0"
  696. yojson-five
  697. yuscii >= "0.3.0"
  698. yuujinchou >= "1.0.0"
  699. zar
  700. zed >= "3.2.2"
  701. zlist < "0.4.0"

Conflicts (2)

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