name: test-go # Go server: vet + golangci-lint + short race tests. Runs on push to # dev/main and PRs to main, scoped to Go-side files only — web-only or # Flutter-only diffs don't trigger this workflow. # # Integration tests needing Postgres/ffmpeg run locally via docker-compose; # they should guard with testing.Short() so this short-mode run skips them. # # `web/build/` has a committed placeholder index.html so go:embed succeeds # without needing the SPA to be freshly built. Real builds happen in # release.yml (container) and locally during dev. on: push: branches: [dev, main] paths: - '**/*.go' - 'go.mod' - 'go.sum' - 'sqlc.yaml' - 'internal/**' - 'cmd/**' - '.forgejo/workflows/test-go.yml' pull_request: branches: [main] paths: - '**/*.go' - 'go.mod' - 'go.sum' - 'sqlc.yaml' - 'internal/**' - 'cmd/**' - '.forgejo/workflows/test-go.yml' jobs: test: runs-on: go-ci steps: - name: Checkout uses: actions/checkout@v4 - name: Toolchain versions run: | go version golangci-lint --version - name: go vet run: go vet ./... - name: golangci-lint run: golangci-lint run ./... - name: go test (short, race) run: go test -short -race ./...