diff --git a/.gitea/workflows/golang-tests.yaml b/.gitea/workflows/golang-tests.yaml index b861bb5..0131bde 100644 --- a/.gitea/workflows/golang-tests.yaml +++ b/.gitea/workflows/golang-tests.yaml @@ -40,3 +40,18 @@ jobs: - env: GOPROXY: ${{ vars.GOPROXY }} run: make test/unit + - id: coverage + name: Check coverage + run: | + coverage="$(make test/coverage | grep total | awk '{ print substr($3, 1, length($3)-1); }')" + echo "total_coverage=$coverage" >> $GITHUB_OUTPUT + echo "Total coverage: ${coverage}%" + - name: Fail if coverage is to low + run: | + threshold=50 + total_coverage=${{ steps.coverage.outputs.total_coverage }} + + if (( ${total_coverage%.*} < ${threshold} )); then + echo "ERROR: Coverage (${total_coverage}%) is below the threshold (${threshold}%)." 1>&2 + exit 1 + fi \ No newline at end of file diff --git a/.gitignore b/.gitignore index 99a1ab2..1d3e145 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ prometheus-fail2ban-exporter -coverage.txt +coverage.* dist \ No newline at end of file diff --git a/Makefile b/Makefile index a02764a..19797e8 100644 --- a/Makefile +++ b/Makefile @@ -40,7 +40,7 @@ PHONY+=test/unit test/unit: CGO_ENABLED=0 \ GOPROXY=$(shell go env GOPROXY) \ - go test -v -p 1 -coverprofile=coverage.txt -covermode=count -timeout 1200s ./... + go test -v -p 1 -coverprofile=coverage.out -covermode=count -timeout 1200s ./... PHONY+=test/integration test/integration: @@ -49,10 +49,10 @@ test/integration: go test -v -p 1 -count=1 -timeout 1200s ./it/... PHONY+=test/coverage -test/coverage: test/unit +test/coverage: CGO_ENABLED=0 \ GOPROXY=$(shell go env GOPROXY) \ - go tool cover -html=coverage.txt + go tool cover -func=coverage.out # GOLANGCI-LINT # ==============================================================================