aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/test.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/test.yml')
-rw-r--r--.github/workflows/test.yml58
1 files changed, 58 insertions, 0 deletions
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 0000000..e6121cf
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,58 @@
+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