diff options
Diffstat (limited to '.github/workflows/checks.yml')
| -rw-r--r-- | .github/workflows/checks.yml | 65 |
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 |
