package alcotest

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

Install

dune-project
 Dependency

Authors

Maintainers

Sources

alcotest-1.7.0.tbz
sha256=812bacdb34b45e88995e07d7306bdab2f72479ef1996637f1d5d1f41667902df
sha512=4ae1ba318949ec9db8b87bc8072632a02f0e4003a95ab21e474f5c34c3b5bde867b0194a2d0ea7d9fc4580c70a30ca39287d33a8c134acc7611902f79c7b7ce8

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.

Published: 27 Feb 2023

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.1.0"
  6. astring
  7. fmt >= "0.8.7"
  8. ocaml >= "4.05.0"
  9. dune >= "3.0"

Dev Dependencies (1)

  1. odoc with-doc

  1. ahrocksdb
  2. albatross >= "1.5.4"
  3. alcotest-async = "1.7.0"
  4. alg_structs_qcheck
  5. algaeff
  6. ambient-context
  7. ambient-context-eio
  8. ambient-context-lwt
  9. angstrom >= "0.7.0"
  10. ansi >= "0.6.0"
  11. anycache >= "0.7.4"
  12. anycache-async
  13. anycache-lwt
  14. archetype >= "1.4.2"
  15. archi
  16. arp
  17. arrakis < "1.1.0"
  18. art
  19. asai
  20. asak >= "0.2"
  21. asli >= "0.2.0"
  22. asn1-combinators >= "0.2.5"
  23. atd >= "2.3.3"
  24. atdgen >= "2.10.0"
  25. atdpy
  26. atdts
  27. backoff
  28. base32
  29. base64 >= "2.1.2" & < "3.2.0" | >= "3.4.0"
  30. bastet
  31. bastet_lwt
  32. bech32
  33. bechamel >= "0.5.0"
  34. bigarray-overlap
  35. bigstringaf
  36. bitlib
  37. blake2
  38. bloomf
  39. bls12-381 < "0.4.1" | >= "3.0.0" & < "18.0"
  40. bls12-381-hash
  41. bls12-381-js >= "0.4.2"
  42. bls12-381-js-gen >= "0.4.2"
  43. bls12-381-legacy
  44. bls12-381-signature
  45. bls12-381-unix
  46. blurhash
  47. brisk-reconciler
  48. builder-web
  49. bytebuffer
  50. ca-certs
  51. ca-certs-nss
  52. cachet
  53. cactus
  54. caldav
  55. calendar >= "3.0.0"
  56. callipyge
  57. camlix
  58. camlkit
  59. camlkit-base
  60. capnp-rpc
  61. capnp-rpc-unix
  62. caqti >= "1.7.0"
  63. caqti-async >= "1.7.0"
  64. caqti-driver-mariadb >= "1.7.0"
  65. caqti-driver-postgresql >= "1.7.0"
  66. caqti-driver-sqlite3 >= "1.7.0"
  67. caqti-dynload >= "2.0.1"
  68. caqti-eio
  69. caqti-lwt >= "1.7.0"
  70. caqti-miou
  71. carray
  72. carton < "1.0.0"
  73. carton-git
  74. carton-lwt >= "0.4.3" & < "1.0.0"
  75. catala >= "0.6.0"
  76. cborl
  77. cf-lwt
  78. chacha
  79. chamelon
  80. chamelon-unix
  81. charrua-client
  82. charrua-server
  83. checked_oint
  84. checkseum >= "0.0.3"
  85. cid
  86. clarity-lang
  87. class_group_vdf
  88. cohttp
  89. cohttp-curl-async
  90. cohttp-curl-lwt
  91. cohttp-eio >= "6.0.0~beta2"
  92. colombe >= "0.2.0"
  93. color
  94. commons
  95. conan
  96. conan-cli
  97. conan-database
  98. conan-lwt
  99. conan-unix
  100. conex < "0.10.0"
  101. conex-mirage-crypto
  102. conformist
  103. cookie
  104. corosync
  105. cow >= "2.2.0"
  106. css
  107. css-parser
  108. cstruct
  109. cstruct-sexp
  110. ctypes-zarith
  111. cuid
  112. curly
  113. current
  114. current-albatross-deployer
  115. current_git >= "0.7.1"
  116. current_incr
  117. data-encoding
  118. dates_calc
  119. dbase4
  120. decimal >= "0.3.0"
  121. decompress
  122. depyt
  123. digestif >= "0.9.0"
  124. dirsp-exchange-kbb2017
  125. dirsp-proscript-mirage
  126. dirsp-ps2ocaml
  127. dispatch >= "0.4.1"
  128. dkim
  129. dkim-bin
  130. dkim-mirage
  131. dkml-dune-dsl-show
  132. dkml-install
  133. dkml-install-installer
  134. dkml-install-runner
  135. dkml-package-console
  136. dns >= "4.4.1"
  137. dns-cli
  138. dns-client >= "4.6.3"
  139. dns-forward-lwt-unix
  140. dns-resolver
  141. dns-server
  142. dns-tsig
  143. dnssd
  144. dnssec
  145. docfd >= "2.2.0"
  146. dockerfile >= "8.2.7"
  147. domain-local-await >= "0.2.1"
  148. domain-local-timeout
  149. domain-name
  150. dream
  151. dream-htmx
  152. dream-pure
  153. dscheck >= "0.1.1"
  154. duff
  155. dune-deps >= "1.4.0"
  156. dune-release >= "1.0.0"
  157. duration
  158. echo
  159. eio < "0.12"
  160. eio_linux
  161. eio_windows
  162. emile
  163. encore
  164. eqaf >= "0.5"
  165. equinoxe
  166. equinoxe-cohttp
  167. equinoxe-hlc
  168. ezgzip
  169. ezjsonm
  170. ezjsonm-lwt
  171. FPauth
  172. FPauth-core
  173. FPauth-responses
  174. FPauth-strategies
  175. faraday != "0.2.0"
  176. farfadet
  177. fat-filesystem
  178. ff
  179. ff-pbt
  180. flex-array
  181. forester >= "5.0"
  182. fsevents-lwt
  183. functoria
  184. fungi
  185. geojson
  186. geoml >= "0.1.1"
  187. git
  188. git-cohttp
  189. git-cohttp-unix
  190. git-kv >= "0.2.0"
  191. git-mirage
  192. git-net
  193. git-split
  194. git-unix
  195. gitlab-unix
  196. glicko2
  197. gmap
  198. gobba
  199. gpt
  200. graphql
  201. graphql-async
  202. graphql-cohttp >= "0.13.0"
  203. graphql-lwt
  204. graphql_parser != "0.11.0"
  205. graphql_ppx
  206. h1
  207. h1_parser
  208. h2
  209. hacl
  210. hacl-star >= "0.6.0" & < "0.7.2"
  211. hacl_func
  212. hacl_x25519
  213. highlexer
  214. hkdf
  215. hockmd
  216. html_of_jsx
  217. http
  218. http-multipart-formdata < "2.0.0"
  219. httpaf >= "0.2.0"
  220. httpun
  221. httpun-ws
  222. hugin
  223. hvsock
  224. icalendar
  225. imagelib
  226. index
  227. inferno >= "20220603"
  228. influxdb-async
  229. influxdb-lwt
  230. inquire < "0.2.0"
  231. interval-map
  232. iomux
  233. irmin
  234. irmin-bench
  235. irmin-chunk
  236. irmin-cli
  237. irmin-containers
  238. irmin-fs
  239. irmin-git
  240. irmin-graphql
  241. irmin-pack
  242. irmin-pack-tools
  243. irmin-test != "3.6.1"
  244. irmin-tezos
  245. irmin-unix
  246. irmin-watcher
  247. jekyll-format
  248. jose
  249. json-data-encoding >= "0.9"
  250. json_decoder
  251. jsonxt
  252. junit_alcotest < "2.2.0"
  253. jwto
  254. kaun
  255. kcas >= "0.6.0"
  256. kcas_data >= "0.6.0"
  257. kdf
  258. ke >= "0.2"
  259. kkmarkdown
  260. kmt
  261. lambda-runtime
  262. lambda_streams
  263. lambda_streams_async
  264. lambdapi
  265. ledgerwallet-tezos >= "0.2.1" & < "0.4.0"
  266. letters
  267. lmdb >= "1.0"
  268. lockfree >= "0.3.1"
  269. logical
  270. logtk >= "1.6"
  271. lp
  272. lp-glpk
  273. lp-glpk-js < "0.5.0"
  274. lp-gurobi < "0.5.0"
  275. lru
  276. lt-code
  277. luv
  278. mazeppa
  279. mbr-format
  280. mdx >= "1.6.0"
  281. mec
  282. mechaml >= "1.2.1"
  283. merlin = "4.17.1-501"
  284. merlin-lib >= "4.17.1-501"
  285. metrics
  286. middleware
  287. mimic
  288. minicaml = "0.3.1" | >= "0.4"
  289. mirage >= "4.0.0"
  290. mirage-block-partition
  291. mirage-block-ramdisk
  292. mirage-channel >= "4.0.1"
  293. mirage-crypto-ec
  294. mirage-flow-unix
  295. mirage-kv >= "2.0.0"
  296. mirage-kv-mem
  297. mirage-kv-unix >= "3.0.0"
  298. mirage-logs
  299. mirage-nat
  300. mirage-net-unix
  301. mirage-runtime < "4.7.0"
  302. mirage-tc
  303. mjson
  304. mlgpx
  305. mmdb < "0.3.0"
  306. mnd
  307. mqtt
  308. mrmime >= "0.2.0"
  309. msgpck >= "1.6"
  310. mssql >= "2.0.3"
  311. multibase
  312. multicore-magic
  313. multihash
  314. multihash-digestif
  315. multipart-form-data
  316. multipart_form
  317. multipart_form-eio
  318. multipart_form-lwt
  319. multipart_form-miou
  320. named-pipe
  321. nanoid
  322. nbd >= "4.0.3"
  323. nbd-tool
  324. nloge
  325. nocoiner
  326. non_empty_list
  327. nx
  328. nx-datasets
  329. nx-text
  330. OCADml >= "0.6.0"
  331. obatcher
  332. ocaml-index < "5.4.1-503"
  333. ocaml-r >= "0.4.0"
  334. ocaml-version >= "3.5.0"
  335. ocamlformat >= "0.13.0" & < "0.25.1"
  336. ocamlformat-lib
  337. ocamlformat-mlx-lib
  338. ocamlformat-rpc < "removed"
  339. ocamline
  340. ocluster
  341. octez-bls12-381-hash
  342. octez-bls12-381-signature
  343. octez-libs
  344. octez-mec
  345. ocue
  346. odoc < "2.1.1"
  347. ohex
  348. oidc
  349. opam-0install
  350. opam-0install-cudf >= "0.5.0"
  351. opam-compiler
  352. opam-file-format >= "2.1.1"
  353. opencage
  354. opentelemetry >= "0.6"
  355. opentelemetry-client-cohttp-eio
  356. opentelemetry-client-cohttp-lwt >= "0.6"
  357. opentelemetry-client-ocurl >= "0.6"
  358. opentelemetry-cohttp-lwt >= "0.6"
  359. opentelemetry-logs
  360. opentelemetry-lwt >= "0.6"
  361. opium
  362. opium-graphql
  363. opium-testing
  364. opium_kernel
  365. orewa
  366. orgeat
  367. ortac-core
  368. ortac-wrapper
  369. osnap < "0.3.0"
  370. osx-acl
  371. osx-attr
  372. osx-cf
  373. osx-fsevents
  374. osx-membership
  375. osx-mount
  376. osx-xattr
  377. otoggl
  378. owl >= "0.7.0" & != "0.9.0" & != "1.0.0"
  379. owl-base < "0.5.0"
  380. owl-ode >= "0.1.0" & != "0.2.0"
  381. owl-symbolic
  382. par_incr
  383. passmaker
  384. patch
  385. pbkdf
  386. pecu >= "0.2"
  387. pf-qubes
  388. pg_query >= "0.9.6"
  389. pgx >= "1.0"
  390. pgx_unix >= "1.0"
  391. pgx_value_core
  392. pgx_value_ptime
  393. phylogenetics
  394. piaf
  395. picos < "0.5.0"
  396. picos_meta
  397. piece_rope
  398. plebeia >= "2.0.0"
  399. polyglot
  400. polynomial
  401. ppx_blob >= "0.3.0"
  402. ppx_catch
  403. ppx_deriving_cmdliner
  404. ppx_deriving_ezjsonm
  405. ppx_deriving_qcheck
  406. ppx_deriving_rpc
  407. ppx_deriving_yaml
  408. ppx_inline_alcotest
  409. ppx_map
  410. ppx_marshal
  411. ppx_parser
  412. ppx_protocol_conv >= "5.0.0"
  413. ppx_protocol_conv_json >= "5.0.0"
  414. ppx_protocol_conv_jsonm >= "5.0.0"
  415. ppx_protocol_conv_msgpack >= "5.0.0"
  416. ppx_protocol_conv_xml_light >= "5.0.0"
  417. ppx_protocol_conv_xmlm
  418. ppx_protocol_conv_yaml >= "5.0.0"
  419. ppx_repr
  420. ppx_subliner
  421. ppx_units
  422. ppx_yojson >= "1.1.0"
  423. pratter
  424. prbnmcn-ucb1 >= "0.0.2"
  425. prc
  426. preface
  427. pretty_expressive
  428. prettym
  429. proc-smaps
  430. producer
  431. progress
  432. prom
  433. prometheus < "1.2"
  434. prometheus-app
  435. protocell
  436. protocol-9p < "0.11.0" | >= "0.11.2"
  437. protocol-9p-unix
  438. proton
  439. psq
  440. pyast
  441. qcheck >= "0.25"
  442. qcheck-alcotest
  443. qcheck-core >= "0.25"
  444. quickjs
  445. quill
  446. randii
  447. reason-standard
  448. red-black-tree
  449. reparse >= "2.0.0" & < "3.0.0"
  450. reparse-unix < "2.1.0"
  451. resp
  452. resp-unix >= "0.10.0"
  453. resto >= "0.9"
  454. rfc1951 < "1.0.0"
  455. routes < "2.0.0"
  456. rpc
  457. rpclib
  458. rpclib-async
  459. rpclib-lwt
  460. rpmfile < "0.3.0"
  461. rpmfile-eio
  462. rpmfile-unix
  463. rune
  464. SZXX >= "4.0.0"
  465. salsa20
  466. salsa20-core
  467. sanddb >= "0.2"
  468. saturn != "0.4.1"
  469. saturn_lockfree != "0.4.1"
  470. scrypt-kdf
  471. secp256k1 >= "0.4.1"
  472. secp256k1-internal
  473. semver >= "0.2.1"
  474. sendmail
  475. sendmail-lwt
  476. sendmail-miou-unix
  477. sendmail-mirage
  478. sendmsg
  479. seqes
  480. server-reason-react
  481. session-cookie
  482. session-cookie-async
  483. session-cookie-lwt
  484. sherlodoc
  485. sihl < "0.2.0"
  486. sihl-type
  487. slug
  488. smaws-clients
  489. smaws-lib
  490. smol
  491. smol-helpers
  492. sodium-fmt
  493. solidity-alcotest
  494. sowilo
  495. spdx_licenses
  496. spectrum >= "0.2.0"
  497. spin >= "0.7.0"
  498. spurs
  499. squirrel
  500. ssh-agent
  501. ssl >= "0.6.0"
  502. starred_ml
  503. stramon-lib
  504. stringx
  505. styled-ppx
  506. swapfs
  507. syslog-rfc5424
  508. tabr
  509. tar-mirage
  510. tcpip
  511. tdigest < "2.1.0"
  512. term-indexing
  513. term-tools
  514. terminal
  515. terminal_size >= "0.1.1"
  516. terminus
  517. terminus-cohttp
  518. terminus-hlc
  519. terml
  520. testo
  521. testo-lwt
  522. textmate-language >= "0.3.0"
  523. textrazor
  524. tezos-base-test-helpers < "17.3"
  525. tezos-bls12-381-polynomial
  526. tezos-client-base < "17.3"
  527. tezos-client-base-unix < "17.3"
  528. tezos-crypto >= "16.0" & < "17.3"
  529. tezos-crypto-dal < "17.3"
  530. tezos-error-monad >= "12.3" & < "17.3"
  531. tezos-event-logging-test-helpers < "17.3"
  532. tezos-plompiler = "0.1.3"
  533. tezos-plonk = "0.1.3"
  534. tezos-shell-services >= "16.0" & < "17.3"
  535. tezos-stdlib != "12.3" & < "17.3"
  536. tezos-test-helpers < "17.3"
  537. tezos-version >= "16.0" & < "17.3"
  538. tezos-webassembly-interpreter < "17.3"
  539. thread-table
  540. timedesc
  541. timere
  542. timmy
  543. timmy-jsoo
  544. timmy-lwt
  545. timmy-unix
  546. tls >= "0.12.8"
  547. toc
  548. topojson
  549. topojsone
  550. trail
  551. traits
  552. transept
  553. tsort >= "2.2.0"
  554. twostep
  555. type_eq
  556. type_id
  557. typeid >= "1.0.1"
  558. tyre >= "0.4"
  559. tyxml >= "4.2.0"
  560. tyxml-jsx
  561. tyxml-ppx >= "4.3.0"
  562. tyxml-syntax
  563. uecc
  564. ulid
  565. universal-portal
  566. unix-dirent
  567. unix-errno
  568. unix-sys-resource
  569. unix-sys-stat
  570. unix-time
  571. unstrctrd
  572. uring < "0.4"
  573. user-agent-parser
  574. uspf
  575. uspf-lwt
  576. uspf-mirage
  577. uspf-unix
  578. utop >= "2.13.0"
  579. validate
  580. validator
  581. vercel
  582. vhd-format-lwt >= "0.13.0"
  583. vpnkit
  584. wayland >= "2.0"
  585. wcwidth
  586. websocketaf
  587. x509 >= "0.7.0"
  588. xapi-rrd
  589. xapi-stdext-date
  590. xapi-stdext-encodings
  591. xapi-stdext-std >= "4.16.0"
  592. yaml
  593. yaml-sexp
  594. yocaml
  595. yocaml_syndication >= "2.0.0"
  596. yocaml_yaml < "2.0.0"
  597. yojson >= "1.6.0"
  598. yojson-five
  599. yuscii >= "0.3.0"
  600. yuujinchou >= "1.0.0"
  601. zar
  602. zed >= "3.2.2"
  603. zlist < "0.4.0"

Conflicts (1)

  1. result < "1.5"