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

Conflicts (2)

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