{"id":13687190,"url":"https://github.com/hedgehogqa/haskell-hedgehog","last_synced_at":"2025-04-13T23:55:49.992Z","repository":{"id":18709081,"uuid":"85124760","full_name":"hedgehogqa/haskell-hedgehog","owner":"hedgehogqa","description":"Release with confidence, state-of-the-art property testing for Haskell.","archived":false,"fork":false,"pushed_at":"2025-04-03T04:55:50.000Z","size":981,"stargazers_count":685,"open_issues_count":104,"forks_count":107,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-04-06T21:09:26.620Z","etag":null,"topics":["haskell","property-based-testing","property-testing","quickcheck","test","testing","testing-tools"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hedgehogqa.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"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":"2017-03-15T21:57:18.000Z","updated_at":"2025-04-05T15:11:17.000Z","dependencies_parsed_at":"2024-01-14T16:10:16.439Z","dependency_job_id":"4b52598f-3a4b-4a17-b6cc-12312ed487c1","html_url":"https://github.com/hedgehogqa/haskell-hedgehog","commit_stats":{"total_commits":369,"total_committers":61,"mean_commits":6.049180327868853,"dds":0.6937669376693767,"last_synced_commit":"94dfee5f9f4c5ba4280d4d294fc414e8caea50a1"},"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hedgehogqa%2Fhaskell-hedgehog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hedgehogqa%2Fhaskell-hedgehog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hedgehogqa%2Fhaskell-hedgehog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hedgehogqa%2Fhaskell-hedgehog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hedgehogqa","download_url":"https://codeload.github.com/hedgehogqa/haskell-hedgehog/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248799922,"owners_count":21163403,"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":["haskell","property-based-testing","property-testing","quickcheck","test","testing","testing-tools"],"created_at":"2024-08-02T15:00:50.042Z","updated_at":"2025-04-13T23:55:49.967Z","avatar_url":"https://github.com/hedgehogqa.png","language":"Haskell","funding_links":[],"categories":["Haskell"],"sub_categories":[],"readme":"\u003c!--\nApologies to those who are able to read this. Unfortunately, Hackage\ndoesn't seem to render the HTML portion of the markdown spec so you may\nbe better off paying us a visit on GitHub instead:\nhttps://github.com/hedgehogqa/haskell-hedgehog\n\nhttps://preview.webflow.com/preview/hedgehogqa?utm_medium=preview_link\u0026utm_source=dashboard\u0026utm_content=hedgehogqa\u0026preview=e42e956627c1ec686ee73fc48a20fb71\u0026workflow=preview\n--\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg width=\"400\" src=\"https://github.com/hedgehogqa/haskell-hedgehog/raw/master/img/hedgehog-text-logo.png\" /\u003e\n\n# Release with confidence.\n\n[![Hackage][hackage-shield]][hackage] [![GitHub CI][github-shield]][github-ci]\n\n\u003cdiv align=\"left\"\u003e\n\n[Hedgehog](http://hedgehog.qa/) automatically generates a comprehensive array of test cases, exercising your software in ways human testers would never imagine.\n\nGenerate hundreds of test cases automatically, exposing even the most insidious of corner cases. Failures are automatically simplified, giving developers coherent, intelligible error messages.\n\n## Features\n\n- Integrated shrinking, shrinks obey invariants by construction.\n- Abstract state machine testing.\n- Generators allow monadic effects.\n- Range combinators for full control over the scope of generated numbers and collections.\n- Equality and roundtrip assertions show a diff instead of the two inequal values.\n- Template Haskell test runner which executes properties concurrently.\n\n## Example\n\nThe main module, [Hedgehog][haddock-hedgehog], includes almost\neverything you need to get started writing property tests with Hedgehog.\n\nIt is designed to be used alongside [Hedgehog.Gen][haddock-hedgehog-gen]\nand [Hedgehog.Range][haddock-hedgehog-range] which should be imported\nqualified. You also need to enable Template Haskell so the Hedgehog test\nrunner can find your properties.\n\n\n```hs\n{-# LANGUAGE TemplateHaskell #-}\n\nimport           Hedgehog\nimport qualified Hedgehog.Gen as Gen\nimport qualified Hedgehog.Range as Range\n```\n\nOnce you have your imports set up, you can write a simple property:\n\n```hs\nprop_reverse :: Property\nprop_reverse =\n  property $ do\n    xs \u003c- forAll $ Gen.list (Range.linear 0 100) Gen.alpha\n    reverse (reverse xs) === xs\n```\n\nAnd add the Template Haskell splice which will discover your properties:\n\n```hs\ntests :: IO Bool\ntests =\n  checkParallel $$(discover)\n```\n\nIf you prefer to avoid macros, you can specify the group of properties\nto run manually instead:\n\n```hs\n{-# LANGUAGE OverloadedStrings #-}\n\ntests :: IO Bool\ntests =\n  checkParallel $ Group \"Test.Example\" [\n      (\"prop_reverse\", prop_reverse)\n    ]\n```\n\nYou can then load the module in GHCi, and run it:\n\n```\nλ tests\n━━━ Test.Example ━━━\n  ✓ prop_reverse passed 100 tests.\n\n```\n\n## In Memory of Jacob Stanley\n\nAs we come to the end of our guide to haskell-hedgehog, we'd like to take a moment to remember and honor one of its key contributors, our dear friend, author and co-founder, Jacob Stanley.\n\nJacob's passion for Haskell and his commitment to creating high-quality, reliable software was truly inspiring. His work has shaped haskell-hedgehog in countless ways, and without him, it wouldn't be the project it is today.\n\nJacob passed away unexpectedly on April 9th. His absence is deeply felt, but his impact on this project, and on all of us who had the privilege to work with him, remains. We continue to maintain and develop haskell-hedgehog in his memory and in honor of his dedication to excellence in programming.\n\nAs you explore haskell-hedgehog, and possibly contribute to its ongoing development, we invite you to join us in remembering Jacob Stanley — a tremendous developer, collaborator, and friend.\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr /\u003e\n\u003cimg width=\"307\" src=\"https://github.com/hedgehogqa/haskell-hedgehog/raw/master/img/hedgehog-logo-grey.png\" /\u003e\n\n## Contributors\n\n\u003ca href=\"https://github.com/hedgehogqa/haskell-hedgehog/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=hedgehogqa/haskell-hedgehog\" /\u003e\n\u003c/a\u003e\n\n [hackage]: http://hackage.haskell.org/package/hedgehog\n [hackage-shield]: https://img.shields.io/hackage/v/hedgehog.svg?style=flat\n\n [github-shield]: https://github.com/hedgehogqa/haskell-hedgehog/actions/workflows/ci.yaml/badge.svg\n [github-ci]: https://github.com/hedgehogqa/haskell-hedgehog/actions/workflows/haskell-ci.yml\n\n [haddock-hedgehog]: http://hackage.haskell.org/package/hedgehog/docs/Hedgehog.html\n [haddock-hedgehog-gen]: http://hackage.haskell.org/package/hedgehog/docs/Hedgehog-Gen.html\n [haddock-hedgehog-range]: http://hackage.haskell.org/package/hedgehog/docs/Hedgehog-Range.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhedgehogqa%2Fhaskell-hedgehog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhedgehogqa%2Fhaskell-hedgehog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhedgehogqa%2Fhaskell-hedgehog/lists"}