blob: 95049cd377b667eaa3c5834ea04c3ef516e456e6 [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: ""
Earl Lee2e463fb2025-04-17 11:22:22 -070010 push:
11 branches-ignore:
Josh Bleecher Snyder93bb66a2025-04-30 16:29:05 -070012 - "queue-main-*"
13 - "queue-dev-*"
Earl Lee2e463fb2025-04-17 11:22:22 -070014 pull_request:
15jobs:
16 test:
Sean McCullough9abbf922025-04-18 13:17:38 -070017 runs-on: "ubuntu-latest"
Earl Lee2e463fb2025-04-17 11:22:22 -070018 steps:
Josh Bleecher Snyder936ba622025-04-30 20:53:21 +000019 - uses: actions/checkout@v4
20 with:
21 ref: ${{ inputs.ref }}
Earl Lee2e463fb2025-04-17 11:22:22 -070022
23 - uses: actions/setup-go@v5
24 with:
25 go-version-file: "go.mod"
26 cache: true
27
Josh Bleecher Snyder2a32f012025-06-05 19:40:07 -070028 - name: Cache Go 1.24.4
Earl Lee2e463fb2025-04-17 11:22:22 -070029 uses: actions/cache@v4
30 with:
31 path: |
32 ~/.cache/go-build
Josh Bleecher Snyder2a32f012025-06-05 19:40:07 -070033 key: ${{ runner.os }}-go1.24.4-${{ hashFiles('**/go.sum') }}
Earl Lee2e463fb2025-04-17 11:22:22 -070034 restore-keys: |
Josh Bleecher Snyder2a32f012025-06-05 19:40:07 -070035 ${{ runner.os }}-go1.24.4-
Earl Lee2e463fb2025-04-17 11:22:22 -070036
philip.zeyliger46be0962025-06-14 17:51:15 +000037 - name: Optimize APT
38 run: ./.github/scripts/optimize-apt.sh
39
Earl Lee2e463fb2025-04-17 11:22:22 -070040 - name: Install tools
41 run: |
42 go install golang.org/x/tools/gopls@latest
Philip Zeyliger6c1f34f2025-04-23 19:33:03 -070043 go install gotest.tools/gotestsum@latest
Josh Bleecher Snyder833a0f82025-04-24 18:39:36 +000044 go install mvdan.cc/gofumpt@latest
45 go install golang.org/x/tools/cmd/goimports@latest
Philip Zeyligerc0131342025-06-13 21:07:08 -070046 # Empirically (by logging into runners with tmate), there are versions of Chromium/Chrome in /opt/google/chrome
Philip Zeyligera35de5f2025-06-14 12:00:48 -070047 # and /usr/local/share/chromium/chrome-linux, and /usr/bin/chromium links to the former. Therefore, we
48 # don't need to apt-get it separately.
49
50 # If you wish to do some interactive debugging, the following is handy. It will print
51 # an SSH command that you can use to connect to the runner instance.
52 - name: tmate debugging (disabled)
53 if: false
54 run: |
55 sudo apt-get update && sudo apt-get install -y tmate
56 set -x
57 tmate -S /tmp/tmate.sock.${GITHUB_RUN_ID} new-session -d
58 tmate -S /tmp/tmate.sock.${GITHUB_RUN_ID} wait tmate-ready
59 tmate -S /tmp/tmate.sock.${GITHUB_RUN_ID} display -p '#{tmate_ssh}'
60 sleep 1800
Earl Lee2e463fb2025-04-17 11:22:22 -070061
62 - name: Go generate
63 run: |
64 go generate ./...
Josh Bleecher Snyder88c61bd2025-04-30 13:40:34 -070065 # if go generate created a diff
66 if ! git diff --exit-code; then
67 echo "go generate created a diff"
68 git diff
69 exit 1
70 fi
Earl Lee2e463fb2025-04-17 11:22:22 -070071
72 - name: Run tests
73 run: |
Josh Bleecher Snyder923a3ba2025-05-05 15:27:13 -070074 GOEXPERIMENT=synctest gotestsum --format testname -- ./...
75 GOEXPERIMENT=synctest gotestsum --format testname -- -race ./...