name: go-unit # 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 integration suite (testcontainers-driven, slow) lives in # `integration.yaml` and only fires for PRs into `development`/`main` # and pushes to `development`. on: push: paths: - 'backend/**' - 'gateway/**' - 'game/**' - 'pkg/**' - 'ui/core/**' - 'go.work' - 'go.work.sum' - '.gitea/workflows/go-unit.yaml' - '!**/*.md' pull_request: paths: - 'backend/**' - 'gateway/**' - 'game/**' - 'pkg/**' - 'ui/core/**' - 'go.work' - 'go.work.sum' - '.gitea/workflows/go-unit.yaml' - '!**/*.md' jobs: test: runs-on: ubuntu-latest defaults: run: shell: bash steps: - name: Checkout uses: actions/checkout@v4 with: submodules: recursive - name: Set up Go uses: actions/setup-go@v5 with: go-version-file: go.work cache: true - name: Run Go tests # client/ is the deprecated Fyne client; excluded from CI per # ui/PLAN.md ยง74. -count=1 disables Go's test cache so a green # run never depends on a previous runner's cached state. The # backend suite is run with -p 1 because most backend packages # spawn their own Postgres testcontainer, and parallel # Postgres bootstraps starve each other on a constrained # runner. pkg modules are listed one by one because ./pkg/... # does not recurse across the independent go.work modules # under pkg/. run: | go test -count=1 -p 1 ./backend/... go test -count=1 \ ./gateway/... \ ./game/... \ ./ui/core/... \ ./pkg/calc/... \ ./pkg/connector/... \ ./pkg/cronutil/... \ ./pkg/error/... \ ./pkg/geoip/... \ ./pkg/model/... \ ./pkg/postgres/... \ ./pkg/redisconn/... \ ./pkg/schema/... \ ./pkg/storage/... \ ./pkg/transcoder/... \ ./pkg/util/...