name: Tests · Go # Fast unit tests for the Go side of the monorepo. Runs on every push and pull # request whose path filter matches a Go source directory. The module list # grows as new go.work modules (gateway, pkg/*, platform/*) are added by later # stages. on: push: paths: - 'backend/**' - 'gateway/**' - 'pkg/**' - 'platform/**' - 'go.work' - 'go.work.sum' - '.gitea/workflows/go-unit.yaml' - '!**/*.md' pull_request: paths: - 'backend/**' - 'gateway/**' - 'pkg/**' - 'platform/**' - 'go.work' - 'go.work.sum' - '.gitea/workflows/go-unit.yaml' - '!**/*.md' jobs: test: runs-on: ubuntu-latest defaults: run: shell: bash env: # The engine consumes the published scrabble-solver module from this Gitea; # GOPRIVATE makes go fetch it directly (skipping the public proxy/checksum DB). # DICT_VERSION selects the dictionary DAWG release the engine tests load. GOPRIVATE: gitea.iliadenisov.ru/* DICT_VERSION: v1.0.0 steps: - name: Checkout uses: actions/checkout@v4 - name: Fetch dictionary DAWGs # The DAWGs moved to the scrabble-dictionary repo (the solver is now a # versioned module pinned in backend/go.mod, fetched via GOPRIVATE — no # sibling clone). They ship as a release artifact, one semver per set. run: | mkdir -p "${GITHUB_WORKSPACE}/dawg" curl -fsSL -o /tmp/dawg.tar.gz "https://gitea.iliadenisov.ru/developer/scrabble-dictionary/releases/download/${DICT_VERSION}/scrabble-dawg-${DICT_VERSION}.tar.gz" tar xzf /tmp/dawg.tar.gz -C "${GITHUB_WORKSPACE}/dawg" ls -la "${GITHUB_WORKSPACE}/dawg" - name: Set up Go uses: actions/setup-go@v5 with: go-version-file: go.work cache: true - name: gofmt run: | unformatted="$(gofmt -l .)" if [ -n "$unformatted" ]; then echo "gofmt needed on:"; echo "$unformatted"; exit 1 fi - name: vet run: go vet ./backend/... ./pkg/... ./gateway/... ./platform/telegram/... - name: build run: go build ./backend/... ./pkg/... ./gateway/... ./platform/telegram/... - name: test # -count=1 disables the test cache so a green run never depends on a # previous runner's cached state. BACKEND_DICT_DIR points the engine # tests at the DAWGs fetched from the dictionary release. env: BACKEND_DICT_DIR: ${{ github.workspace }}/dawg run: go test -count=1 ./backend/... ./pkg/... ./gateway/... ./platform/telegram/...