Contributing¶
Requirements¶
- Go 1.25 or newer (per
go.mod). - A POSIX shell for running the test scripts; on Windows use WSL or run the Go commands directly.
Common commands¶
go build ./cmd/gospeedtest # build the binary
go test -race ./... # full test suite, race detector on
go vet ./... # static checks
go run ./cmd/gospeedtest server # run server in dev
go run ./cmd/gospeedtest # run CLI against localhost:8080
Test coverage (current)¶
| Package | Coverage |
|---|---|
internal/speedtest |
~89 % |
internal/server |
~76 % |
internal/cli |
~17 % (helpers; the Bubble Tea render path is intentionally not unit-tested) |
cmd/gospeedtest |
0 % (thin flag dispatch) |
CI runs go vet, go build, and go test -race on Linux, macOS, and
Windows for every push and pull request.
Sending a PR¶
- Fork the repo.
- Run
go vet ./...andgo test -race ./...locally before pushing. - Keep changes scoped — the codebase is small enough that a "while I'm in there" cleanup is rarely worth the review noise.
- Open the PR against
main. CI must pass.
Working on the docs¶
The docs site you're reading is built with
MkDocs +
Material for MkDocs and
deployed to GitHub Pages by .github/workflows/docs.yml.
To preview your changes locally:
Markdown lives under docs/, configuration is mkdocs.yml. Any push
to main rebuilds and redeploys the site.