{"id":15531456,"url":"https://github.com/squiddev/omnomnom","last_synced_at":"2025-10-17T04:05:39.232Z","repository":{"id":81349654,"uuid":"193394962","full_name":"SquidDev/omnomnom","owner":"SquidDev","description":"An OCaml test runner inspired by Tasty","archived":false,"fork":false,"pushed_at":"2022-12-10T15:05:45.000Z","size":150,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-03T08:48:23.589Z","etag":null,"topics":["ocaml","unit-testing"],"latest_commit_sha":null,"homepage":null,"language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SquidDev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-23T20:59:23.000Z","updated_at":"2021-12-01T16:23:03.000Z","dependencies_parsed_at":"2023-03-12T13:43:07.206Z","dependency_job_id":null,"html_url":"https://github.com/SquidDev/omnomnom","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SquidDev%2Fomnomnom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SquidDev%2Fomnomnom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SquidDev%2Fomnomnom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SquidDev%2Fomnomnom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SquidDev","download_url":"https://codeload.github.com/SquidDev/omnomnom/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246107305,"owners_count":20724519,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ocaml","unit-testing"],"created_at":"2024-10-02T11:26:15.914Z","updated_at":"2025-10-17T04:05:34.188Z","avatar_url":"https://github.com/SquidDev.png","language":"OCaml","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Omnomnom\n\nAn OCaml test framework inspired by [Tasty][tasty].\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"doc/example.png\" /\u003e\n\u003c/p\u003e\n\n## What?\nOmnomnom is another test framework, in the likes of [ounit][ounit] or\n[alcotest][alcotest]. If you're looking for a more stable, battle-tested\nframework, I'd highly recommend checking those out.\n\nHowever, Omnomnom's primary goal is not to provide all mechanisms for writing\ntests (such as fancy assertion systems), but rather a way to mix multiple styles\nof tests, from different frameworks together, while providing as much\nextensibility as possible.\n\nOmnomnom test suites are built from two components: tests and ingredients. Both\nof these can be configured via a [Cmdliner][cmdliner] term, meaning it's easy to\nmodify behaviour via the command line.\n\nTests, as one may expect, are pretty basic - they define the options this test\ntakes, and the method to run for this test. Ingredients are all the other stuff\nwhich goes on as part of a test execution cycle - test filters, reporters, or\ncustom runners. It's trivial to mix and match these, to get the exact behaviour\nyou need.\n\n## Usage\nUsing omnomnom should be as simple as depending on the `omnomnom` library,\nopening `Omnomnom.test` and writing some tests! From there, you can build a a\ntest tree and use `Omnomnom.run` to execute it.\n\n```ocaml\nopen Omnomnom.Tests\n\nlet () = Omnomnom.run @@ group \"omnomnom\"\n  [ simple_test \"Will assert a value\" (fun () -\u003e\n        assert (List.hd [ 0 ] = 0);\n        ());\n    simple_test \"Will fail\" (fun () -\u003e\n        let _ = List.hd [] in\n        ());\n    pending \"A test which needs to be written.\" ()\n  ]\n```\n\nFor more complete examples, I'd recommend checkout out [our somewhat lacklustre\ntest suite][test_suite].\n\nPlease note that, due to the fact that Omnomnom is still a work-in-progress, it\nis not currently available on Opam. As a result you must build and install it\nmanually (which can just be done with `dune build @install; dune install`).\n\n## Features and roadmap\nOmnomnom was knocked together in a weekend, and tidied up the week\nafterwards. As a result, it's still missing a lot of features that one might\nconsider critical to a test framework.\n\n### Ingredients\n - [x] A fancy console reporter, with support for colours.\n - [ ] Test filters: both test paths and a include/exclude tag mechanism.\n - [ ] Test listing\n - [ ] Rerun failed tests\n - [x] JUnit test reporter.\n - [ ] Test Anything Protocol reporter.\n\n### Test integration\n - [x] Alcotest support\n - [ ] OUnit support\n - [x] QCheck support\n\n[tasty]: https://github.com/feuerbach/tasty \"Modern and extensible testing framework for Haskell\"\n[alcotest]: https://github.com/mirage/alcotest/ \"A lightweight and colourful test framework\"\n[ounit]: https://github.com/gildor478/ounit \"Unit testing framework loosely based on HUnit.\"\n[cmdliner]: https://erratique.ch/software/cmdliner \"Cmdliner allows the declarative definition of command line interfaces in OCaml.\"\n[test_suite]: https://github.com/SquidDev/omnomnom/tree/master/test \"Omnomnom's test suite.\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsquiddev%2Fomnomnom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsquiddev%2Fomnomnom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsquiddev%2Fomnomnom/lists"}