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@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version: ${{ matrix.go-version }} - name: Cache Go modules uses: actions/cache@v4 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@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version: '1.23' - name: Cache Go modules uses: actions/cache@v4 with: path: | ~/.cache/go-build ~/go/pkg/mod key: ${{ runner.os }}-go-1.23-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go-1.23- - 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@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version: '1.23' - name: Cache Go modules uses: actions/cache@v4 with: path: | ~/.cache/go-build ~/go/pkg/mod key: ${{ runner.os }}-go-1.23-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go-1.23- - name: Download dependencies run: go mod download - name: Run tests with race detector run: go test -race -timeout=10m ./...