blob: e71e1fc476f1b1bd8a757adc7bfafba890653f15 [file] [log] [blame]
Earl Lee2e463fb2025-04-17 11:22:22 -07001name: go_tests
2on:
3 workflow_call:
Josh Bleecher Snyder936ba622025-04-30 20:53:21 +00004 inputs:
5 ref:
6 description: "The git ref to checkout"
7 required: false
8 type: string
9 default: ""
Philip Zeyliger037f3162025-06-20 22:26:31 +000010 working-directory:
11 description: "Working directory for the workflow"
12 required: false
13 type: string
14 default: "."
Earl Lee2e463fb2025-04-17 11:22:22 -070015 push:
16 branches-ignore:
Josh Bleecher Snyder93bb66a2025-04-30 16:29:05 -070017 - "queue-main-*"
18 - "queue-dev-*"
Earl Lee2e463fb2025-04-17 11:22:22 -070019 pull_request:
20jobs:
21 test:
Philip Zeyliger8a290e52025-06-15 20:59:58 -070022 runs-on: "linux-x64-ubuntu-latest-64-core"
Earl Lee2e463fb2025-04-17 11:22:22 -070023 steps:
Josh Bleecher Snyder936ba622025-04-30 20:53:21 +000024 - uses: actions/checkout@v4
25 with:
26 ref: ${{ inputs.ref }}
Earl Lee2e463fb2025-04-17 11:22:22 -070027
28 - uses: actions/setup-go@v5
29 with:
Philip Zeyliger037f3162025-06-20 22:26:31 +000030 go-version-file: "${{ inputs.working-directory || '.'}}/go.mod"
Earl Lee2e463fb2025-04-17 11:22:22 -070031 cache: true
32
Josh Bleecher Snyder2a32f012025-06-05 19:40:07 -070033 - name: Cache Go 1.24.4
Earl Lee2e463fb2025-04-17 11:22:22 -070034 uses: actions/cache@v4
35 with:
36 path: |
37 ~/.cache/go-build
Josh Bleecher Snyder2a32f012025-06-05 19:40:07 -070038 key: ${{ runner.os }}-go1.24.4-${{ hashFiles('**/go.sum') }}
Earl Lee2e463fb2025-04-17 11:22:22 -070039 restore-keys: |
Josh Bleecher Snyder2a32f012025-06-05 19:40:07 -070040 ${{ runner.os }}-go1.24.4-
Earl Lee2e463fb2025-04-17 11:22:22 -070041
philip.zeyliger46be0962025-06-14 17:51:15 +000042 - name: Optimize APT
Philip Zeyliger037f3162025-06-20 22:26:31 +000043 working-directory: ${{ inputs.working-directory || '.'}}
44 run: |
45 pwd
46 ./.github/scripts/optimize-apt.sh
philip.zeyliger46be0962025-06-14 17:51:15 +000047
Earl Lee2e463fb2025-04-17 11:22:22 -070048 - name: Install tools
49 run: |
50 go install golang.org/x/tools/gopls@latest
Philip Zeyliger6c1f34f2025-04-23 19:33:03 -070051 go install gotest.tools/gotestsum@latest
Josh Bleecher Snyder833a0f82025-04-24 18:39:36 +000052 go install mvdan.cc/gofumpt@latest
53 go install golang.org/x/tools/cmd/goimports@latest
Philip Zeyligerc0131342025-06-13 21:07:08 -070054 # Empirically (by logging into runners with tmate), there are versions of Chromium/Chrome in /opt/google/chrome
Philip Zeyligera35de5f2025-06-14 12:00:48 -070055 # and /usr/local/share/chromium/chrome-linux, and /usr/bin/chromium links to the former. Therefore, we
56 # don't need to apt-get it separately.
Philip Zeyliger037f3162025-06-20 22:26:31 +000057
Philip Zeyligera35de5f2025-06-14 12:00:48 -070058 # If you wish to do some interactive debugging, the following is handy. It will print
59 # an SSH command that you can use to connect to the runner instance.
60 - name: tmate debugging (disabled)
61 if: false
62 run: |
63 sudo apt-get update && sudo apt-get install -y tmate
64 set -x
65 tmate -S /tmp/tmate.sock.${GITHUB_RUN_ID} new-session -d
66 tmate -S /tmp/tmate.sock.${GITHUB_RUN_ID} wait tmate-ready
67 tmate -S /tmp/tmate.sock.${GITHUB_RUN_ID} display -p '#{tmate_ssh}'
68 sleep 1800
Earl Lee2e463fb2025-04-17 11:22:22 -070069
70 - name: Go generate
Philip Zeyliger037f3162025-06-20 22:26:31 +000071 working-directory: ${{ inputs.working-directory || '.'}}
Earl Lee2e463fb2025-04-17 11:22:22 -070072 run: |
73 go generate ./...
Josh Bleecher Snyder88c61bd2025-04-30 13:40:34 -070074 # if go generate created a diff
75 if ! git diff --exit-code; then
76 echo "go generate created a diff"
77 git diff
78 exit 1
79 fi
Earl Lee2e463fb2025-04-17 11:22:22 -070080
81 - name: Run tests
Philip Zeyliger037f3162025-06-20 22:26:31 +000082 working-directory: ${{ inputs.working-directory || '.'}}
Earl Lee2e463fb2025-04-17 11:22:22 -070083 run: |
Josh Bleecher Snyder923a3ba2025-05-05 15:27:13 -070084 GOEXPERIMENT=synctest gotestsum --format testname -- ./...
85 GOEXPERIMENT=synctest gotestsum --format testname -- -race ./...