name: CI on: push: branches: [main] pull_request: jobs: lint: name: Golang Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version-file: go.mod - name: Check go mod tidy run: go mod tidy && git diff --exit-code go.mod go.sum - uses: golangci/golangci-lint-action@v7 with: version: latest unit-test: name: Unit Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version-file: go.mod - name: Run unit tests run: go test ./... -cover -v fuzz-test: name: Fuzz Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version-file: go.mod - name: Run fuzz tests run: | for func in $(grep -r --include='*_test.go' -oh 'func Fuzz\w*' . | sed 's/func //'); do go test ./... -fuzz="^${func}$" -fuzztime=30s done mutation-test: name: Mutation Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version-file: go.mod - name: Install gremlins run: go install github.com/go-gremlins/gremlins/cmd/gremlins@latest - name: Run mutation tests run: gremlins unleash