on: pull_request: branches: - main jobs: test: runs-on: ubuntu-latest env: GOPRIVATE: github.com/anyproto steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: '^1.19.5' - name: git config run: git config --global url.https://${{ secrets.ANYTYPE_PAT }}@github.com/.insteadOf https://github.com/ # cache {{ - id: go-cache-paths run: | echo "GOCACHE=$(go env GOCACHE)" >> $GITHUB_OUTPUT echo "GOMODCACHE=$(go env GOMODCACHE)" >> $GITHUB_OUTPUT - uses: actions/cache@v3 with: path: | ${{ steps.go-cache-paths.outputs.GOCACHE }} ${{ steps.go-cache-paths.outputs.GOMODCACHE }} key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go-${{ matrix.go-version }}- # }} - name: deps run: make deps - name: unit tests run: make test - name: Quality Gate - Test coverage shall be above threshold env: TESTCOVERAGE_THRESHOLD: 0 run: | go test ./... -coverprofile coverage.out -covermode count go tool cover -func coverage.out echo "Quality Gate: checking test coverage is above threshold ..." echo "Threshold : $TESTCOVERAGE_THRESHOLD %" totalCoverage=`go tool cover -func=coverage.out | grep total | grep -Eo '[0-9]+\.[0-9]+'` echo "Current test coverage : $totalCoverage %" if (( $(echo "$totalCoverage $TESTCOVERAGE_THRESHOLD" | awk '{print ($1 > $2)}') )); then echo "OK" else echo "Current test coverage is below threshold. Please add more unit tests or adjust threshold to a lower value." echo "Failed" exit 1 fi