{"id":18433677,"url":"https://github.com/zabawaba99/gomutate","last_synced_at":"2025-04-07T19:31:30.644Z","repository":{"id":57511027,"uuid":"52188385","full_name":"zabawaba99/gomutate","owner":"zabawaba99","description":"Mutation testing for Go","archived":false,"fork":false,"pushed_at":"2016-02-29T04:08:52.000Z","size":589,"stargazers_count":5,"open_issues_count":8,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-30T09:01:50.897Z","etag":null,"topics":["go","mutate","mutation-testing"],"latest_commit_sha":null,"homepage":"","language":"Go","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/zabawaba99.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":"2016-02-21T03:14:05.000Z","updated_at":"2022-03-05T19:30:56.000Z","dependencies_parsed_at":"2022-09-26T17:01:02.455Z","dependency_job_id":null,"html_url":"https://github.com/zabawaba99/gomutate","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/zabawaba99%2Fgomutate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zabawaba99%2Fgomutate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zabawaba99%2Fgomutate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zabawaba99%2Fgomutate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zabawaba99","download_url":"https://codeload.github.com/zabawaba99/gomutate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247716274,"owners_count":20984211,"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":["go","mutate","mutation-testing"],"created_at":"2024-11-06T05:35:19.091Z","updated_at":"2025-04-07T19:31:30.045Z","avatar_url":"https://github.com/zabawaba99.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gomutate [![Build Status](https://travis-ci.org/zabawaba99/gomutate.svg?branch=master)](https://travis-ci.org/zabawaba99/gomutate) [![Coverage Status](https://coveralls.io/repos/github/zabawaba99/gomutate/badge.svg?branch=master)](https://coveralls.io/github/zabawaba99/gomutate?branch=master)\n\nA mutation testing tool for Go programs.\n\nGomutate was inspired by the [Pitest](http://pitest.org/) tool\nused for mutation testing on the JVM.\n\n## Usage\n\nInstall the binary:\n\n```bash\ngo get github.com/zabawaba99/gomutate/cmd/gomutate\n```\n\nNavigate to the directory of your project and run:\n\n```bash\ngomutate ./...\n```\n\nThe above command will run the default mutations on all packages in your\nproject.\n\n### Flags\n\n```\nUsage:\n  gomutate [OPTIONS]\n\nApplication Options:\n  -d, --debug    Show debug information\n  -m, --mutator= The mutators to apply (conditionals-boundary)\n\nHelp Options:\n  -h, --help     Show this help message\n```\n\n## Available mutators\n\n* [conditionals-boundary](http://pitest.org/quickstart/mutators/#CONDITIONALS_BOUNDARY)\n* [negate-conditionals](http://pitest.org/quickstart/mutators/#NEGATE_CONDITIONALS)\n\n## Mutation Tests\n\nA chunk of the documentation below was taken from [Pitest](http://pitest.org/)\nsince they did a great job of explaining what mutation testing is and why\nyou should do it.\n\n### What is mutation testing?\n\nMutation testing is conceptually quite simple.\n\nFaults (or **mutations**) are automatically seeded into your code, then your tests are run.\nIf your tests fail then the mutation is **killed**, if your tests pass then the\nmutation **lived**.\n\nThe quality of your tests can be gauged from the percentage of mutations killed.\n\n### What?\n\nTo put it another way - Gomutate runs your unit tests against automatically modified\nversions of your application code. When the application code changes, it should produce\ndifferent results and cause the unit tests to fail. If a unit test does not fail in this\nsituation, it may indicate an issue with the test suite.\n\n### Why?\n\nTraditional test coverage (i.e line, statement, branch etc) measures only which code is\n**executed** by your tests. It does **not** check that your tests are actually able to\n**detect faults** in the executed code. It is therefore only able to identify code\nthe is definitely **not tested**.\n\nThe most extreme example of the problem are tests with no assertions. Fortunately these\nare uncommon in most code bases. Much more common is code that is only partially tested\nby its suite. A suite that only **partially tests** code can still execute all its\nbranches.\n\nAs it is actually able to detect whether each statement is meaningfully tested, mutation\ntesting is the **gold standard** against which all other types of coverage are measured.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzabawaba99%2Fgomutate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzabawaba99%2Fgomutate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzabawaba99%2Fgomutate/lists"}