name: Test on: pull_request: push: tags: - v* branches: - main permissions: contents: read jobs: test: name: Test strategy: fail-fast: false matrix: go-version: [1.25.10, 1.26.x] platform: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{matrix.platform}} steps: - name: Check out code uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Set up Go ${{matrix.go-version}} uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 with: go-version: ${{matrix.go-version}} - name: Test run: go run ./cmd/task test completion: name: Completion strategy: fail-fast: false matrix: platform: [ubuntu-latest, macos-latest] runs-on: ${{matrix.platform}} steps: - name: Check out code uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Set up Go uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 with: go-version: 1.26.x # zsh and pwsh are preinstalled on the runners; only fish is missing # (plus zsh on the Linux image). - name: Install shells (Linux) if: runner.os == 'Linux' run: sudo apt-get update && sudo apt-get install -y zsh fish - name: Install shells (macOS) if: runner.os == 'macOS' run: brew install fish - name: Test completion # Strict mode fails the run if any shell is missing, so we never get a # false pass when a runner image stops shipping one (e.g. pwsh). env: TASK_COMPLETION_STRICT: "1" run: go run ./cmd/task test:completion