Files
ci-pipelines/.github/workflows/languages-go-test.yml
T

57 lines
1.4 KiB
YAML

name: Go Test
on:
workflow_call:
inputs:
go-version-file:
description: "Path to go.mod for version resolution"
type: string
default: "go.mod"
run-race:
description: "Enable race detector"
type: boolean
default: true
timeout:
description: "Test timeout (go test -timeout)"
type: string
default: "20m"
coverage:
description: "Upload coverage report as artifact"
type: boolean
default: true
jobs:
test:
name: go test
runs-on: ubuntu-latest
env:
GO_VERSION_FILE: ${{ inputs.go-version-file }}
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: ${{ env.GO_VERSION_FILE }}
cache: true
- name: Run tests
env:
TIMEOUT: ${{ inputs.timeout }}
run: |
ARGS="-timeout $TIMEOUT"
if [ "${{ inputs.run-race }}" = "true" ]; then
ARGS="$ARGS -race"
fi
if [ "${{ inputs.coverage }}" = "true" ]; then
ARGS="$ARGS -coverprofile=coverage.out -covermode=atomic"
fi
go test $ARGS ./...
- name: Upload coverage report
if: ${{ inputs.coverage }}
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: coverage.out
retention-days: 7