summaryrefslogblamecommitdiff
path: root/.github/workflows/test.yml
blob: e6121cf232dae4d32a5fa6754509ef43da81d21d (plain) (tree)

























































                                                                                   
name: CI
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

permissions:
  contents: read

jobs:
  verify-and-test-and-fuzz:
    strategy:
      matrix:
        go: ['1.19','1.20']
        os: [ubuntu-latest, macos-latest, windows-latest]
      fail-fast: true
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout Code
        uses: actions/checkout@v3

      - name: Setup Go ${{ matrix.go }}
        uses: actions/setup-go@v4
        with:
          go-version: ${{ matrix.go }}
          cache: false

      - name: Run GolangCI-Lint
        uses: golangci/golangci-lint-action@v3
        with:
          version: v1.53
          args: --timeout=5m

      - name: Run GoSec
        if: matrix.os == 'ubuntu-latest'
        uses: securego/gosec@master
        with:
          args: ./...

      - name: Run GoVulnCheck
        uses: golang/govulncheck-action@v1
        with:
          go-version-input: ${{ matrix.go }}
          go-package: ./...

      - name: Run Tests
        run: go test -race -cover -coverprofile=coverage -covermode=atomic -v ./...

      - name: Run Fuzz Tests
        run: go test -v -fuzz FuzzEncodeDecode -fuzztime 60s

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          files: ./coverage