{"id":29354297,"url":"https://github.com/lusingander/gotip","last_synced_at":"2026-06-08T05:31:14.679Z","repository":{"id":303155669,"uuid":"1014162513","full_name":"lusingander/gotip","owner":"lusingander","description":"Go Test Interactive Picker 🧪","archived":false,"fork":false,"pushed_at":"2026-05-03T02:02:46.000Z","size":2094,"stargazers_count":33,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-03T04:08:11.432Z","etag":null,"topics":["bubbletea","go","go-test","go-testing","golang","test","tui","unit-testing"],"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/lusingander.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-05T07:06:39.000Z","updated_at":"2026-05-03T02:02:50.000Z","dependencies_parsed_at":"2025-12-19T09:00:19.638Z","dependency_job_id":null,"html_url":"https://github.com/lusingander/gotip","commit_stats":null,"previous_names":["lusingander/gotip"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/lusingander/gotip","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Fgotip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Fgotip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Fgotip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Fgotip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lusingander","download_url":"https://codeload.github.com/lusingander/gotip/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Fgotip/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34050225,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["bubbletea","go","go-test","go-testing","golang","test","tui","unit-testing"],"created_at":"2025-07-09T03:12:52.193Z","updated_at":"2026-06-08T05:31:14.673Z","avatar_url":"https://github.com/lusingander.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gotip\n\nGo Test Interactive Picker\n\n\u003cimg src=\"./img/demo.gif\" width=600\u003e\n\n## About\n\ngotip is a TUI application for interactively selecting and running Go tests.\n\nKey features:\n\n- Fuzzy filtering of test cases\n- Detection of subtest names defined via table-driven tests (partial support)\n- List discovered tests in text or JSON format\n- Run individual subtests or grouped subtests\n- View and re-run tests from execution history\n\n## Installation\n\n```\ngo install github.com/lusingander/gotip/cmd/gotip@latest\n```\n\n## Usage\n\n### Basic usage\n\nIn a directory containing a `go.mod` file, run:\n\n```\ngotip\n```\n\nWhile a test is selected, press \u003ckbd\u003eEnter\u003c/kbd\u003e to run it using `go test`.\n\n### Passing additional arguments\n\nYou can pass extra flags directly to `go test` by appending them after `--`:\n\n```\ngotip -- -v -count=1\n```\n\n### Running a parent test group\n\nWhile a test is selected, press \u003ckbd\u003eBackspace\u003c/kbd\u003e to move up to its parent test group.\n\nThis allows you to execute all subtests under that group.  \nFor example, if you have `TestFoo/Bar/Baz` selected, pressing \u003ckbd\u003eBackspace\u003c/kbd\u003e will select `TestFoo/Bar`, and running it will execute all tests under that prefix.\n\nIf subtest names could not be automatically discovered, gotip defaults to selecting the nearest available parent test.\n\n\u003cimg src=\"./img/group.gif\" width=600\u003e\n\n### Using test history\n\nPress \u003ckbd\u003eTab\u003c/kbd\u003e to switch to History view, or launch directly with the `--view=history` option.\n\nIn this view, you can select and run tests from your previous execution history, just like in the regular view.\n\nThe history data is stored under `~/.local/state/gotip/history/`.\n\n\u003cimg src=\"./img/history.gif\" width=600\u003e\n\n### Rerunning the last test\n\nYou can rerun the last executed test without showing the UI by using the `--rerun` option:\n\n```\ngotip --rerun\n```\n\nThis will immediately execute the most recent test from your history.\n\n### Listing discovered tests\n\nYou can inspect the statically discovered test tree without opening the UI:\n\n```\ngotip list\n```\n\nExample text output:\n\n```text\n# ./foo/foo_test.go\n- TestFoo\n  - case1\n  - case2\n- TestBar\n```\n\nFor machine-readable output, use JSON:\n\n```\ngotip list --format=json\n```\n\nExample JSON output:\n\n```json\n{\n  \"files\": [\n    {\n      \"path\": \"./foo/foo_test.go\",\n      \"tests\": [\n        {\n          \"name\": \"TestFoo\",\n          \"subtests\": [\n            { \"name\": \"case1\", \"resolved\": true, \"subtests\": [] }\n          ]\n        }\n      ]\n    }\n  ]\n}\n```\n\nThe JSON output follows [`schema/list.schema.json`](./schema/list.schema.json).\n\nThe `list` command uses the same discovery rules as the TUI, including subtest inference and `--skip-subtests`.\n\n### Options\n\n```\nUsage:\n  gotip [OPTIONS] [list]\n\nApplication Options:\n  -v, --view=[all|history]   Default view (default: all)\n  -f, --filter=[fuzzy|exact] Default filter type (default: fuzzy)\n  -s, --skip-subtests        Skip subtest detection\n  -r, --rerun                Rerun the last test without showing the UI\n  -V, --version              Print version\n\nHelp Options:\n  -h, --help                 Show this help message\n\nAvailable commands:\n  list  List discovered tests\n```\n\n`gotip list --help` shows options specific to the non-interactive listing command:\n\n```\nUsage:\n  gotip [OPTIONS] list [list-OPTIONS]\n\n[list command options]\n      -s, --skip-subtests      Skip subtest detection\n          --format=[text|json] Output format (default: text)\n```\n\n### Config\n\ngotip supports both global and project-specific configuration.\n\n- Global config\n  - Place your global config at `~/.config/gotip/gotip.toml`. This applies to all projects.\n- Project config\n  - Place a `gotip.toml` file in your current working directory. This applies only to the current project.\n\nIf both global and project configs exist, they are merged.  \nFor overlapping keys, the project config takes precedence.\n\nThe format is as follows:\n\n```toml\n# Specifies the command used to run tests.\n# If omitted, the default command is used.\n# type: list of strings\ncommand = []\n# Specify file path patterns to exclude from processing using the .gitignore format.\n# https://git-scm.com/docs/gitignore/en#_pattern_format\n# type: list of strings\nignore = []\n\n[history]\n# Limits the number of test executions to keep in history.\n# type: integer\nlimit = 100\n# Format used to display timestamps in the history view.\n# Uses Go's time format syntax.\n# type: string\ndate_format = \"2006-01-02 15:04:05\"\n```\n\n#### `command`\n\nThe `command` field allows you to customize how tests are executed.\n\nYou can use this to always pass specific flags or use an external test runner instead of the default.\n\nFor example, to use [gotestsum](https://github.com/gotestyourself/gotestsum), you can configure it like this:\n\n```toml\ncommand = [\"gotestsum\", \"--format\", \"testname\", \"--\", \"-run\", \"${name}\", \"${package}\"]\n```\n\n`${name}` and `${package}` are placeholders that will be replaced at runtime with the selected test name pattern and package name, respectively.\n\nIf not specified, the following default command is used:\n\n```toml\ncommand = [\"go\", \"test\", \"-run\", \"${name}\", \"${package}\"]\n```\n\n### Keybindings\n\n| Key                         | Description                                |\n| --------------------------- | ------------------------------------------ |\n| \u003ckbd\u003eCtrl-c\u003c/kbd\u003e           | Quit                                       |\n| \u003ckbd\u003ej\u003c/kbd\u003e \u003ckbd\u003e↓\u003c/kbd\u003e  | Select next item                           |\n| \u003ckbd\u003ek\u003c/kbd\u003e \u003ckbd\u003e↑\u003c/kbd\u003e  | Select previous item                       |\n| \u003ckbd\u003el\u003c/kbd\u003e \u003ckbd\u003e→\u003c/kbd\u003e  | Select next page                           |\n| \u003ckbd\u003eh\u003c/kbd\u003e \u003ckbd\u003e←\u003c/kbd\u003e  | Select previous page                       |\n| \u003ckbd\u003eEnter\u003c/kbd\u003e            | Run the selected test                      |\n| \u003ckbd\u003eBackspace\u003c/kbd\u003e        | Select parent test group                   |\n| \u003ckbd\u003e/\u003c/kbd\u003e                | Enter filtering mode                       |\n| \u003ckbd\u003eEnter\u003c/kbd\u003e            | Confirm filter (in filtering mode)         |\n| \u003ckbd\u003eEsc\u003c/kbd\u003e              | Clear filtering mode                       |\n| \u003ckbd\u003eCtrl-x\u003c/kbd\u003e           | Toggle filtering type                      |\n| \u003ckbd\u003eTab\u003c/kbd\u003e              | Switch view                                |\n| \u003ckbd\u003e?\u003c/kbd\u003e                | Show help                                  |\n\n## Planned features\n\n- Launch with initial filter based on package or test name\n- Custom keybindings\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flusingander%2Fgotip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flusingander%2Fgotip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flusingander%2Fgotip/lists"}