025 — tp check fails on a missing check task that tp release will run (#157)
Status: in progress
Why
With a Taskfile.yml and no check: in task-plus.yml, tp release
runs task check as its check step and fails outright when the Taskfile
has no check task (task: Task "check" does not exist). tp check,
whose job is to say whether the project is ready for tp release, only
lists check among the missing standard tasks as a warning and exits 0.
A project passes tp check and then cannot release; the two commands
disagree about the same Taskfile.
A missing test or fmt task is a convention, and a warning is right
for it. A missing check task is a release blocker whenever the release
would run it, and tp check should say so at the level it means.
What changes
tp check, Taskfile section: when the release's check step resolves totask check(aTaskfile.ymlis present andcheck:is unset) and the Taskfile has nochecktask, report an error naming the fix: add achecktask or setcheck:intask-plus.yml. The other standard tasks stay warnings.- When
check:is set to commands that do not runtask check, the Taskfile'schecktask is not what the release runs; its absence stays the standard-task warning. - README
tp checkbullet forTaskfile.ymlsays which case is an error.
Acceptance
Taskfile.yml |
check: in task-plus.yml |
check task |
tp release check step |
tp check |
|---|---|---|---|---|
| present | unset | present | task check |
ok |
| present | unset | missing | task check fails: task does not exist |
error: add a check task or set check:; exit 1 |
| present | set, without task check |
missing | the configured commands | warning: missing standard task (as today) |
| present | set, naming task check |
missing | task check fails |
error, as the unset row |
| present | set, without task check |
present | the configured commands | ok |
| absent | unset | — | go fmt, go vet, go test when go.mod exists, else nothing |
warning: file not found (as today) |
Out of scope
- Checking that the configured
check:commands exist or run. - Running the check task from
tp check.
Decisions
none
Done when
- tests express the acceptance table and pass
- spec updated (README
tp check) - ADR written if a fork was resolved (none needed)
- roadmap ticked and stamped; changelog entry
- issue closed with a link to the release