feat: test framework supports turning off -race flag (#605) #564
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: coverage | |
on: | |
push: | |
branches: | |
- "main" | |
pull_request: | |
jobs: | |
coverage: | |
strategy: | |
matrix: | |
os: [ubuntu-latest] # TODO: add macos & windows | |
services: | |
postgres: | |
image: postgres | |
ports: | |
- 5432:5432 | |
env: | |
POSTGRES_PASSWORD: postgres | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ^1 | |
- name: Test | |
run: | | |
# We collect coverage data from two sources, | |
# 1) unit tests 2) integration tests | |
# | |
# https://go.dev/testing/coverage/ | |
# https://dustinspecker.com/posts/go-combined-unit-integration-code-coverage/ | |
# https://github.com/golang/go/issues/51430#issuecomment-1344711300 | |
mkdir -p coverage/unit | |
mkdir -p coverage/int | |
mkdir -p coverage/int2 | |
# Collect unit tests coverage | |
go test -failfast -race -timeout 5m -skip=^TestScript -cover ./... -args -test.gocoverdir=$PWD/coverage/unit | |
# Collect integration tests coverage | |
GOCOVERDIR=$PWD/coverage/int go test -failfast -race -timeout 5m -run=^TestScript ./... | |
SOFT_SERVE_DB_DRIVER=postgres \ | |
SOFT_SERVE_DB_DATA_SOURCE=postgres://postgres:postgres@localhost/postgres?sslmode=disable \ | |
GOCOVERDIR=$PWD/coverage/int2 go test -failfast -race -timeout 5m -run=^TestScript ./... | |
# Convert coverage data to legacy textfmt format to upload | |
go tool covdata textfmt -i=coverage/unit,coverage/int,coverage/int2 -o=coverage.txt | |
- uses: codecov/codecov-action@v5 | |
with: | |
file: ./coverage.txt |