{"id":13507493,"url":"https://github.com/kellymclaughlin/rebar3-eqc-plugin","last_synced_at":"2025-06-17T03:35:21.292Z","repository":{"id":30099546,"uuid":"33649291","full_name":"kellymclaughlin/rebar3-eqc-plugin","owner":"kellymclaughlin","description":"A rebar3 plugin to enable the execution of Erlang QuickCheck properties ","archived":false,"fork":false,"pushed_at":"2020-03-03T20:25:25.000Z","size":60,"stargazers_count":13,"open_issues_count":9,"forks_count":20,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-10T19:48:24.623Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kellymclaughlin.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}},"created_at":"2015-04-09T04:59:04.000Z","updated_at":"2023-10-17T17:54:00.000Z","dependencies_parsed_at":"2022-09-26T18:30:46.538Z","dependency_job_id":null,"html_url":"https://github.com/kellymclaughlin/rebar3-eqc-plugin","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/kellymclaughlin/rebar3-eqc-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellymclaughlin%2Frebar3-eqc-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellymclaughlin%2Frebar3-eqc-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellymclaughlin%2Frebar3-eqc-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellymclaughlin%2Frebar3-eqc-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kellymclaughlin","download_url":"https://codeload.github.com/kellymclaughlin/rebar3-eqc-plugin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellymclaughlin%2Frebar3-eqc-plugin/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260286334,"owners_count":22986563,"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-08-01T02:00:35.112Z","updated_at":"2025-06-17T03:35:21.254Z","avatar_url":"https://github.com/kellymclaughlin.png","language":"Erlang","funding_links":[],"categories":["Build Tools"],"sub_categories":[],"readme":"A rebar3 plugin to enable the execution of Erlang QuickCheck properties\n\n## Description\n\nThis plugin provides the ability to run all or a subset of the EQC\nproperties defined in a project's applications with a simple rebar3\ncommand. For a property to be found and executed by the plugin it must\nuse the `prop_*` naming convention and be exported from the module in\nwhich it resides. Otherwise, the property name may be given using the\n`--properties` option. The number of times each property is executed\nis configurable as shown in the `Configuration` and `Usage` sections\nbelow with the default being 100 times. For users of the full version\nof EQC it is also possible to have each property execute for a certain\nperiod of time as opposed to a fixed number of iterations per\nproperty.\n\nThe plugin takes the approach of executing EQC properties directly as\nopposed to the common pattern of indirect execution via another test\nframework. There are still cases where it may be useful to use eunit\nor common_test for execution of EQC properties, but there are many\ncases where that is not required.\n\nThe plugin scans all source modules for EQC properties. Additionally\nit looks for standalone EQC properties in a top-level `eqc` directory.\n\nThe default plugin behavior is to execute all properties found in the\napplication source code or the `eqc` directory. This behavior can be overridden\nby using the `--properties` option to specify a comma-separated list of\nproperties to be executed. List entries may be of the form\n`ModuleName:PropertyName` or simply `PropertyName` if the property name is\nunique within the project. Additionally, as of version 1.1.0 there is a `--dir`\noption to override the default test directory location of `eqc`.\n\nThe plugin also has a counterexample mode. When a property fails when\nrun using the plugin a counterexample file is written to an `.eqc`\nsub-directory in the project directory. The counterexample files are\nnamed for the properties that generate them. This allows for\nrechecking a set of properties using their respective counterexample\nfiles except in cases where a project has properties sharing the same\nname in different modules. The `--properties` option may also be used\nwith counterexample mode to recheck a specific property or set of\nproperties.\n\n## Installation\n\nTo install the plugin using the Hex package manaage, add the following\nto the rebar.config file:\n\n```erlang\n{plugins, [rebar3_eqc]}\n```\n\nAlternatively, to install the plugin from github use the following:\n\n\n```erlang\n{plugins, [\n    {rebar3_eqc, \".*\", {git, \"https://github.com/kellymclaughlin/rebar3-eqc-plugin.git\", {tag, \"1.0.0\"}}}\n]}.\n\n```\n\nTo set the number of test executions to 500 instead of the default of\n100, add the following rebar.config entry:\n\n```erlang\n{eqc_opts, [{numtests, 500}]}.\n```\n\nTo specify that each property execute for 30 seconds, use this entry instead:\n\n```erlang\n{eqc_opts, [{testing_time, 30}]}.\n```\n\nThe `numtests` and `testing_time` options are mutually exclusive. If\nboth are specified, the `testing_time` setting is ignored.\n\n## Usage\n\nTo view the plugin usage menu with a full list of options and their\ndescriptions use `./rebar3 help eqc`. The following are some example\nscenarios of plugin usage.\n\nExecute each property the configured number of times or for the\nconfigured duration:\n\n```\n./rebar3 eqc\n```\n\nOverride the configuration in `rebar.config` or the default and\nexecute each property 10 times:\n\n```\n./rebar3 eqc -n 10\n```\n\nSimilarly, override the configuration in `rebar.config` or the default\nand execute each property for 45 seconds:\n\n```\n./rebar3 eqc -t 45\n```\n\nTo only execute the property `prop_test1` in the module `test_module`\nfor 1000 iterations use the following:\n\n```\n./rebar3 eqc -n 1000 -p test_module:prop_test1\n```\n\nTo execute the same test, but to have the plugin determine the module\nname use the following:\n\n```\n./rebar3 eqc -n 1000 -p prop_test1\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkellymclaughlin%2Frebar3-eqc-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkellymclaughlin%2Frebar3-eqc-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkellymclaughlin%2Frebar3-eqc-plugin/lists"}