{"id":16618492,"url":"https://github.com/dimo414/parameterized_test","last_synced_at":"2025-10-29T19:31:40.562Z","repository":{"id":57652776,"uuid":"317524041","full_name":"dimo414/parameterized_test","owner":"dimo414","description":"A Rust macro to simplify creating repeated tests with different arguments","archived":false,"fork":false,"pushed_at":"2023-06-16T08:19:52.000Z","size":9,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-02T04:41:13.166Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/dimo414.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2020-12-01T11:46:40.000Z","updated_at":"2023-03-03T04:21:28.000Z","dependencies_parsed_at":"2024-10-12T02:20:31.954Z","dependency_job_id":"bfbb8efe-c23e-4029-9e3c-79c58e1b2756","html_url":"https://github.com/dimo414/parameterized_test","commit_stats":{"total_commits":4,"total_committers":1,"mean_commits":4.0,"dds":0.0,"last_synced_commit":"49656a6c504d4df4f7bd5371dfc502d199d8cb6f"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimo414%2Fparameterized_test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimo414%2Fparameterized_test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimo414%2Fparameterized_test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimo414%2Fparameterized_test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dimo414","download_url":"https://codeload.github.com/dimo414/parameterized_test/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238882427,"owners_count":19546515,"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":[],"created_at":"2024-10-12T02:20:23.454Z","updated_at":"2025-10-29T19:31:40.253Z","avatar_url":"https://github.com/dimo414.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `parameterized_test::create!()` macro\r\n\r\n[![crates.io](https://img.shields.io/crates/v/parameterized_test?logo=rust)](https://crates.io/crates/parameterized_test)\r\n[![docs.rs](https://img.shields.io/docsrs/parameterized_test?label=docs.rs)](https://docs.rs/parameterized_test)\r\n[![build status](https://img.shields.io/github/actions/workflow/status/dimo414/parameterized_test/rust.yml?branch=main)](https://github.com/dimo414/parameterized_test/actions)\r\n[![issues](https://img.shields.io/github/issues/dimo414/parameterized_test)](https://github.com/dimo414/parameterized_test/issues)\r\n\r\nThis small crate provides a `parameterized_test::create!()` macro to simplify creating repeated\r\ntests with different arguments.\r\n\r\nInspired by [Chris Morgan's StackOverflow post](https://stackoverflow.com/a/34666891/113632) and\r\noriginally documented in [this answer](https://stackoverflow.com/a/56663823/113632), this macro\r\nworks by dynamically generating a new macro which, in turn, generates separate tests for each test\r\ncase passed to the generated macro.\r\n\r\n**Note:** the exact API is still in development and may change in subsequent (pre-1.0) releases.\r\n\r\n## Syntax\r\n\r\n`parameterized_test::create()` expects four arguments:\r\n\r\n* A name for the test group, which will be used as the submodule name and the name of the generated\r\n  parameters macro.\r\n* One or more variable names, e.g. `foo` or `(bar, baz)` (note multiple variables must be\r\n  parenthesized).\r\n* The test body, multiple statements can be enclosed in `{ ... }`. \r\n\r\n## Example\r\n\r\nThis example creates two test cases, `tests::even::bad_case` and `tests::even::good_case`.\r\n\r\n```rust\r\nuse parameterized_test::create;\r\n\r\n#[cfg(test)]\r\nmod tests {\r\n    use super::*;\r\n\r\n    parameterized_test::create!{ even, n, { assert_eq!(n % 2, 0); } }\r\n    even! {\r\n        bad_case:  1, // this test case will fail\r\n        good_case: 2,\r\n    }\r\n}\r\n```\r\n\r\nTests can also specify multiple parameters:\r\n\r\n```rust\r\nuse parameterized_test::create;\r\n\r\n#[cfg(test)]\r\nmod tests {\r\n    use super::*;\r\n\r\n    parameterized_test::create!{ commutative, (i, j, k), {\r\n      assert_eq!(i, j);\r\n      assert_eq!(j, k);\r\n      assert_eq!(k, i); \r\n    }}\r\n    commutative! {\r\n        small: (1, 1, 1),\r\n        large: (100, 100, 100),\r\n    }\r\n}\r\n```\r\n\r\nThe `?` operator is also supported, similar to\r\n[standalone tests](https://doc.rust-lang.org/rust-by-example/testing/unit_testing.html#tests-and-):\r\n\r\n```rust\r\nuse parameterized_test::create;\r\n\r\n#[cfg(test)]\r\nmod tests {\r\n    use super::*;\r\n\r\n    parameterized_test::create!{ socket, path, {\r\n      let socket: SocketAddr = fs::read_to_string(path)?.parse()?;\r\n      assert_eq!(socket.is_ipv6(), true);\r\n    }}\r\n  socket! {\r\n        relative: \"foo.txt\",\r\n        absolute: \"/tmp/bar.txt\",\r\n    }\r\n}\r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimo414%2Fparameterized_test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdimo414%2Fparameterized_test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimo414%2Fparameterized_test/lists"}