summaryrefslogtreecommitdiff
path: root/.github/workflows/checks.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/checks.yml')
-rw-r--r--.github/workflows/checks.yml65
1 files changed, 65 insertions, 0 deletions
diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml
new file mode 100644
index 0000000..6aaa038
--- /dev/null
+++ b/.github/workflows/checks.yml
@@ -0,0 +1,65 @@
+name: Checks
+
+on:
+ push:
+ workflow_dispatch:
+ pull_request:
+
+jobs:
+ unit_tests:
+ strategy:
+ matrix:
+ include:
+ - runs-on: ubuntu-latest
+ target: linux_amd64
+ - runs-on: windows-latest
+ target: windows_amd64
+ - runs-on: macos-latest
+ target: darwin_amd64
+ fail-fast: false
+
+ name: "Unit Tests on ${{ matrix.target }}"
+ runs-on: "${{ matrix.runs-on }}"
+ steps:
+ - name: "Disable git crlf conversions"
+ if: ${{ runner.os == 'Windows' }}
+ # HCL preserves the input line endings when processing a heredoc,
+ # and our tests for heredocs are written to expect the result for
+ # the source code as checked in to the repository, so git's normal
+ # tampering with the line endings would invalidate those tests.
+ run: |
+ git config --global core.autocrlf false
+ - name: "Fetch source code"
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
+ - name: Install Go
+ uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0
+ with:
+ go-version-file: go.mod
+ - name: Go test
+ run: |
+ go test ./... -race
+
+ fmt_and_vet:
+ name: "fmt and lint"
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: "Fetch source code"
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
+ - name: Install Go
+ uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0
+ with:
+ go-version-file: go.mod
+ - name: "Check vet"
+ run: |
+ go vet ./...
+ - name: "Check fmt"
+ run: |
+ go fmt ./...
+ if [[ -z "$(git status --porcelain)" ]]; then
+ echo "Formatting is consistent with 'go fmt'."
+ else
+ echo "Run 'go fmt ./...' to automatically apply standard Go style to all packages."
+ git status --porcelain
+ exit 1
+ fi