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

Conflicts (2)

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