Compare commits

..

8 Commits

4 changed files with 47 additions and 52 deletions
+17 -22
View File
@@ -1,43 +1,38 @@
# Task 06G4GBSQ2WRGD5HGYPYZZ4TYH0
# Task 06G4M8WHGQ4P3GQMPEEH0RJRHM
Add a --strict mode to the healthcheck
Give the healthcheck a --list-checks flag
- Project: test-e2e
- Source: gitea:test-e2e/13
- Source: burnin/run14-c
- Priority: 0
## Instructions
Three phases, in this order.
Give `scripts/orchestra_e2e_healthcheck.sh` a `--list-checks` flag that prints the name of each check it performs, one per line, and exits 0.
## Phase 1 — `--strict` on the healthcheck
This is deliberately two pieces of work, and the plan should carry two phases:
`scripts/orchestra_e2e_healthcheck.sh --strict` must reject an unrecognised flag: print `unknown flag: <flag>` on stderr and exit 2. Without `--strict` the current silent-ignore behaviour is unchanged, and `--help` still wins from any position.
1. Name the checks. The script performs its checks inline. Introduce one list of check names and drive the existing run from that list, with no change to any output or exit status.
2. Add the flag. `--list-checks` prints the names from that list and exits 0. Add one line to the usage text describing it.
## Phase 2 — cover `--strict` in the existing self-test
## Verification policy for this project
Extend `scripts/orchestra_e2e_selftest.sh`, which already asserts the plain and `--json` runs. Add assertions that `--strict --nonsense` exits 2 and that `--strict` alone exits 0. Keep its existing `fail()` helper and its existing assertions.
Only two commands may appear on a `- run:` line, exactly:
## Phase 3 — keep the pinned usage text honest
- `["bash", "-n", "<path>"]`
- `["bash", "scripts/orchestra_e2e_healthcheck.sh"]`
`scripts/test_healthcheck.sh` pins the healthcheck's exact `--help` output in a hardcoded `USAGE` variable. Phase 1 changes nothing about `--help`, so this phase only confirms the pin still holds.
Verify this phase by running the pinned test itself:
- run: ["bash", "scripts/test_healthcheck.sh"]
## Constraints
The project's verification policy allows exactly two command shapes:
["bash", "-n", "<one file>"]
["bash", "scripts/orchestra_e2e_healthcheck.sh"]
Anything else is refused when you seal the plan. `scripts/test_healthcheck.sh` is NOT permitted as an automated command. Update it as a manual step so its expected `--help` text matches, and list that as a manual check.
## Research first
Establish at least three findings with distinct confidence: at least one `fact`, one `inference`, one `assumption`. Cite at least two in References.
Establish at least three findings with distinct confidence: at least one `fact`, one `inference`, one `assumption`.
## Quality gate
bash -n scripts/*.sh && bash scripts/orchestra_e2e_healthcheck.sh
## Completion
Run the configured quality gate. When the task is ready for the worker to verify and deliver, create `.orchestra/done`. Do not write a prose completion report.
+29 -17
View File
@@ -1,39 +1,51 @@
#!/usr/bin/env bash
readonly VERSION=1.0.0
readonly CHECKS=(script-runs)
# emit <format> <template> [args...]: the single output path.
# format: text or json print; none suppresses (--quiet). Explicit argument,
# never read from an enclosing variable.
emit() {
local format=$1
shift
[ "$format" = none ] || printf "$@"
}
main() {
local quiet=
local json=
local strict=
local unknown=
for arg in "$@"; do
if [ "$arg" = --help ]; then
printf 'Usage: %s [--quiet]\n\n' "${0##*/}"
printf 'Healthcheck script for Orchestra E2E tests.\n'
printf 'Exits 0 with a success message if all checks pass.\n'
printf ' --quiet Suppress the success message; still exits 0.\n'
emit text 'Usage: %s [--quiet]\n\n' "${0##*/}"
emit text 'Healthcheck script for Orchestra E2E tests.\n'
emit text 'Exits 0 with a success message if all checks pass.\n'
emit text ' --quiet Suppress the success message; still exits 0.\n'
emit text ' --list-checks Print the name of each check; exits 0.\n'
emit text 'Version: %s\n' "$VERSION"
exit 0
elif [ "$arg" = --list-checks ]; then
for name in "${CHECKS[@]}"; do
emit text '%s\n' "$name"
done
exit 0
elif [ "$arg" = --quiet ]; then
quiet=1
elif [ "$arg" = --json ]; then
json=1
elif [ "$arg" = --strict ]; then
strict=1
else
[ -n "$unknown" ] || unknown=$arg
fi
done
if [ -n "$strict" ] && [ -n "$unknown" ]; then
printf 'unknown flag: %s\n' "$unknown" >&2
exit 2
fi
local format=text
[ -n "$quiet" ] && format=none
[ -n "$json" ] && format=json
if [ -n "$json" ]; then
printf '{"status":"ok","checks":1}\n'
if [ "$format" = json ]; then
emit "$format" '{"status":"ok","checks":%d}\n' "${#CHECKS[@]}"
exit 0
fi
[ -n "$quiet" ] || printf 'OK - all healthchecks passed\n'
emit "$format" 'OK - all healthchecks passed\n'
exit 0
}
-12
View File
@@ -34,16 +34,4 @@ case "$jout" in
*) fail '--json run stdout prefix: want {"status":' "$jout" ;;
esac
# --strict rejects an unknown flag
sout=$(bash "$healthcheck" --strict --nonsense 2>&1)
sstatus=$?
[ "$sstatus" -eq 2 ] || fail "--strict --nonsense exit status: want 2, got $sstatus" "$sout"
# --strict alone is accepted
gout=$(bash "$healthcheck" --strict)
gstatus=$?
[ "$gstatus" -eq 0 ] || fail "--strict run exit status: want 0, got $gstatus" "$gout"
printf 'selftest: ok\n'
+1 -1
View File
@@ -3,7 +3,7 @@
HC="$(dirname "$0")/orchestra_e2e_healthcheck.sh"
OK='OK - all healthchecks passed'
USAGE="$(printf 'Usage: orchestra_e2e_healthcheck.sh [--quiet]\n\nHealthcheck script for Orchestra E2E tests.\nExits 0 with a success message if all checks pass.\n --quiet Suppress the success message; still exits 0.')"
USAGE="$(printf 'Usage: orchestra_e2e_healthcheck.sh [--quiet]\n\nHealthcheck script for Orchestra E2E tests.\nExits 0 with a success message if all checks pass.\n --quiet Suppress the success message; still exits 0.\n --list-checks Print the name of each check; exits 0.\nVersion: 1.0.0')"
fails=0
check() { # check <expected-stdout> <label> [args...]