name: Extended Tests on: workflow_dispatch: # Manual trigger schedule: - cron: '0 2 * * 0' # Weekly on Sunday at 2 AM UTC push: branches: [ master, main ] paths: - '**.go' - 'go.mod' - 'go.sum' jobs: # Run tests on older Go versions test-older-versions: name: Test on Go ${{ matrix.go-version }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest] go-version: ['1.20', '1.19'] steps: - name: Checkout code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Go uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: ${{ matrix.go-version }} - name: Cache Go modules uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: | ~/.cache/go-build ~/go/pkg/mod key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go-${{ matrix.go-version }}- - name: Download dependencies run: go mod download - name: Run tests run: go test -v -race ./... # Run benchmarks benchmark: name: Benchmark Tests runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Go uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: '1.24.x' - name: Cache Go modules uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: | ~/.cache/go-build ~/go/pkg/mod key: ${{ runner.os }}-go-1.24.x-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go-1.24.x- - name: Download dependencies run: go mod download - name: Run benchmarks run: go test -bench=. -benchmem ./... -run=^$ || echo "⚠️ No benchmarks found" # Test with race detector race-detector: name: Race Detector Tests runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Go uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: '1.24.x' - name: Cache Go modules uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: | ~/.cache/go-build ~/go/pkg/mod key: ${{ runner.os }}-go-1.24.x-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go-1.24.x- - name: Download dependencies run: go mod download - name: Run tests with race detector run: go test -race -timeout=10m ./...