{"id":37825683,"url":"https://github.com/mmirolim/gtr","last_synced_at":"2026-01-16T15:45:16.628Z","repository":{"id":57510904,"uuid":"234972135","full_name":"mmirolim/gtr","owner":"mmirolim","description":"Go autotesting tool with cruise control","archived":false,"fork":false,"pushed_at":"2020-02-19T18:33:27.000Z","size":261,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-20T10:17:39.733Z","etag":null,"topics":["go","golang","test-automation","test-driven-development","test-runner"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mmirolim.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":"2020-01-19T21:40:25.000Z","updated_at":"2024-06-20T10:17:39.735Z","dependencies_parsed_at":"2022-09-26T17:50:59.697Z","dependency_job_id":null,"html_url":"https://github.com/mmirolim/gtr","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/mmirolim/gtr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmirolim%2Fgtr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmirolim%2Fgtr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmirolim%2Fgtr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmirolim%2Fgtr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mmirolim","download_url":"https://codeload.github.com/mmirolim/gtr/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmirolim%2Fgtr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28479409,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","golang","test-automation","test-driven-development","test-runner"],"created_at":"2026-01-16T15:45:15.977Z","updated_at":"2026-01-16T15:45:16.621Z","avatar_url":"https://github.com/mmirolim.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/mmirolim/gtr.svg)](https://travis-ci.org/mmirolim/gtr)\n[![GoDoc](https://godoc.org/github.com/mmirolim/gtr?status.svg)](http://godoc.org/github.com/mmirolim/gtr)\n[![codecov](https://codecov.io/gh/mmirolim/gtr/branch/master/graph/badge.svg)](https://codecov.io/gh/mmirolim/gtr)\n[![Go Report Card](https://goreportcard.com/badge/github.com/mmirolim/gtr)](https://goreportcard.com/badge/github.com/mmirolim/gtr)\n\n# GTR - Go Test Runner\n\nGo auto testing tool with cruise control. GTR uses coverage profile data and/or pointer analysis to find affected tests by file changes (git diff) and runs only identified subset of tests then notifies using desktop notifications. You don't need to define manually a particular test or package to run or wait for all repository tests to run. GTR helps to get faster and more reliable feedback from your tests without too much context switching between testing and writing code. Good fit for TDD and CD.\n\n[![asciicast](https://asciinema.org/a/NWCyhilRr7bdbrnVd0b9CVaKv.svg)](https://asciinema.org/a/NWCyhilRr7bdbrnVd0b9CVaKv?t=10)\n\n## Edge cases\n\n- At an early stage of development\n- Works (tested) only with go standard testing library\n- May not find all affected tests (using different strategies and/or analysis may help)\n- Reflection operations are not supported (may not resolve affected code, coverage strategy may help)\n- May become slow with big projects (try coverage strategy)\n- May fail with “too many open files” error if file-descriptors limit is not enough\n- Needs more extensive testing (tested only on linux and darwin)\n\n# Installation\n\t\n gtr requires go and git commands to be available\n\t\n\tgo get -u github.com/mmirolim/gtr\n\n\t\n# Usage\n\t\n Run it in git enabled project root folder or pass -C flag with a path to the git root directory.\n \n There are 2 strategies:\n \n- analysis - uses source code analysis using pointer/static/cha/rta algorithm from golang.org/x/tools/go\n- coverage - uses coverage profile data to find tests which are affected by file changes\n    \n By default -strategy=analysis -analysis=pointer is used.\n If -strategy=coverage used, gtr runs all tests on startup to update coverage data. Coverage data will be stored in .gtr directory. To use old data set -run-init flag to false. \n \n\tgtr\n\tgtr: watcher running...\n\t\n \n \n\tgtr help\n\tUsage of gtr:\n\t  -C string\n\t\t\tdirectory to watch (default \".\")\n\t  -strategy string\n\t\t\tstrategy analysis or coverage (default analysis)\n\t  -analysis string\n\t\t\tsource code analysis to use pointer, static, rta, cha (default pointer)\n\t  -run-init bool\n\t\t\truns init steps like on first run get coverage for all tests on coverage strategy (default true)\n\t  -args string\n\t\t\targs to the test binary\n\t  -auto-commit bool\n\t\t\tauto commit on tests pass (default false)\n\t  -delay int\n\t\t\tdelay in Milliseconds (default 1000)\n\t  -exclude-dirs string\n\t\t\tprefixes to exclude sep by comma (default \"vendor,node_modules\")\n\t  -exclude-file-prefix string\n\t\t\tprefixes to exclude sep by comma (default \"#\")\n\t\t\t\n It uses default go test cmd to run tests, cpu and gtr itself is limited to NumCPU/2 so it will run smoothly along\n\n\tgo test -v -vet off -failfast -cpu 2 -run TestZ$|TestC$/(A=1|B=2) pkga pkgb -args -x -v\n\n\n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmirolim%2Fgtr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmmirolim%2Fgtr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmirolim%2Fgtr/lists"}