{"id":13420035,"url":"https://github.com/jimporter/mettle","last_synced_at":"2025-04-05T09:07:07.906Z","repository":{"id":15054351,"uuid":"17780492","full_name":"jimporter/mettle","owner":"jimporter","description":"A C++20 unit test framework","archived":false,"fork":false,"pushed_at":"2025-03-26T22:56:13.000Z","size":3815,"stargazers_count":122,"open_issues_count":16,"forks_count":13,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-26T23:30:30.271Z","etag":null,"topics":["c-plus-plus","unit-testing"],"latest_commit_sha":null,"homepage":"https://jimporter.github.io/mettle","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jimporter.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","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":"2014-03-15T17:01:37.000Z","updated_at":"2025-03-26T22:56:08.000Z","dependencies_parsed_at":"2023-02-13T18:31:16.460Z","dependency_job_id":"b3e27f71-4ca8-41e8-b00c-c9153f8561ba","html_url":"https://github.com/jimporter/mettle","commit_stats":{"total_commits":794,"total_committers":8,"mean_commits":99.25,"dds":0.2103274559193955,"last_synced_commit":"73730563b1784104e0fb6b7b42567161e4b6a0dc"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimporter%2Fmettle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimporter%2Fmettle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimporter%2Fmettle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimporter%2Fmettle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jimporter","download_url":"https://codeload.github.com/jimporter/mettle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247312078,"owners_count":20918344,"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":["c-plus-plus","unit-testing"],"created_at":"2024-07-30T22:01:24.959Z","updated_at":"2025-04-05T09:07:07.866Z","avatar_url":"https://github.com/jimporter.png","language":"C++","readme":"# mettle\n\n[![Latest release][release-image]][release-link]\n[![Documentation][documentation-image]][documentation-link]\n[![Build status][ci-image]][ci-link]\n\n**mettle** is a \"batteries included\" unit testing framework for C++20. Its\nmission is to provide a full toolbox to address your testing needs and to look\ngood doing it.\n\n## Features\n\n#### Build your own assertions\n\nExpectations (assertions) are defined using composable matchers that\nautomatically generate human-readable output, ensuring even complex objects are\neasy to test.\n\n#### Nest your tests\n\nSuites group your tests together and can be nested as deeply as you need,\nso you can use their hierarchy to set up and tear down your fixtures for you.\n\n#### Don't repeat yourself\n\nType- and value-parameterized tests let you write your tests once and apply them\nto multiple implementations or preconditions.\n\n#### Aggregate everything\n\nThe `mettle` unified test runner makes it a snap to write multiple, independent\ntest files – even ones running completely different kinds of tests – and\naggregate them into a single list of results.\n\n## A Brief Example\n\nA picture is worth a thousand words, and code's almost as good (I'm sure it's\nworth at least 100 words), so let's take a look at a test file:\n\n```c++\n#include \u003cmettle.hpp\u003e\nusing namespace mettle;\n\nsuite\u003c\u003e basic(\"a basic suite\", [](auto \u0026_) {\n\n  _.test(\"a test\", []() {\n    expect(true, equal_to(true));\n  });\n\n  for(int i = 0; i \u003c 4; i++) {\n    _.test(\"test number \" + std::to_string(i), [i]() {\n      expect(i % 2, less(2));\n    });\n  }\n\n  subsuite\u003c\u003e(_, \"a subsuite\", [](auto \u0026_) {\n    _.test(\"a sub-test\", []() {\n      expect(true, equal_to(true));\n    });\n  });\n\n});\n```\n\n## License\n\nThis library is licensed under the [BSD 3-Clause license](LICENSE).\n\n[release-image]: https://img.shields.io/github/release/jimporter/mettle.svg\n[release-link]: https://github.com/jimporter/mettle/releases/latest\n[documentation-image]: https://img.shields.io/badge/docs-mettle-blue.svg\n[documentation-link]: https://jimporter.github.io/mettle/\n[ci-image]: https://github.com/jimporter/mettle/actions/workflows/build.yml/badge.svg\n[ci-link]: https://github.com/jimporter/mettle/actions/workflows/build.yml?query=branch%3Amaster\n","funding_links":[],"categories":["TODO scan for Android support in followings","C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjimporter%2Fmettle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjimporter%2Fmettle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjimporter%2Fmettle/lists"}