summaryrefslogtreecommitdiff
path: root/.github/workflows/push.yml
blob: a16f7b6ba99b45decf16f8ff439c6a9bc1fdd6dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
name: Per-commit 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
      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: 1.18
      - 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: 1.18
      - 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