mirror of
https://github.com/go-task/task.git
synced 2026-07-10 12:31:40 +02:00
Add completion/tests/ harnesses that exercise the engine protocol and every shell wrapper without a TTY: the engine via `task __complete`, bash/zsh by stubbing the completion-system helpers, fish via `complete -C`, and PowerShell via the completion API. A `test:completion` task and a matching CI job (with a strict mode that fails when an expected shell is missing) run them all. Writing the suite surfaced and fixed real wrapper bugs: - fish: `math` has no bitwise `&`, so every directive check errored; test bits with integer division + modulo instead. Also filter FilterFileExt results ourselves, as __fish_complete_suffix only prioritizes the extension. - powershell: `Get-ChildItem -Include` is ignored without -Recurse, so file extension filtering returned nothing; filter with Where-Object instead. - bash: guard empty-array expansion so completion with zero candidates does not trip `set -u` on bash 3.2. Also name the completion directive bits (NO_SPACE, FILTER_FILE_EXT, …) in every wrapper instead of using raw numbers.
67 lines
1.7 KiB
YAML
67 lines
1.7 KiB
YAML
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
|