name: GitHub Actions CI on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: name: CI runs-on: ubuntu-latest steps: - name: Set up Go 1.x uses: actions/setup-go@v2 with: # Run on the latest minor release of Go 1.19: go-version: ^1.19 id: go - name: Check out code into the Go module directory uses: actions/checkout@v2 - name: Ensure all files were formatted as per gofmt run: | [ "$(gofmt -l $(find . -name '*.go') 2>&1)" = "" ] - name: Get dependencies run: | go get -v -t -d ./... - name: Go Vet run: | go vet - name: Build run: | go build -v . - name: Test run: | go test -c - name: Build Docker container with i3 run: | docker build --pull --no-cache --rm -t=goi3 -f travis/Dockerfile . - name: Run tests in Docker container # The --init flag is load-bearing! Xserver(1) (including the Xvfb variant) # will not send SIGUSR1 for readiness notification to pid 1, so we need to # ensure that the i3.test process is not pid 1: # https://gitlab.freedesktop.org/xorg/xserver/-/blob/4195e8035645007be313ade79032b8d561ceec6c/os/connection.c#L207 run: | docker run --init -v $PWD:/usr/src goi3 ./i3.test -test.v