Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f5dd1de57a | |||
| 3b66b2b6a6 | |||
| a09fd607a4 | |||
| 419e17fce2 | |||
| 1d8c3e1f6b | |||
| bf0f287aca | |||
| 5bcffb337f | |||
| affbbe411b | |||
| ec320c8240 |
@@ -1,65 +1,38 @@
|
||||
# Task 06G4FT0MB733H2ZCZ237WFHFD8
|
||||
# Task 06G4M8WHGQ4P3GQMPEEH0RJRHM
|
||||
|
||||
Give the healthcheck a self-test and a machine-readable mode
|
||||
Give the healthcheck a --list-checks flag
|
||||
|
||||
- Project: test-e2e
|
||||
- Source: gitea:test-e2e/10
|
||||
- Source: burnin/run14-c
|
||||
- Priority: 0
|
||||
|
||||
## Instructions
|
||||
|
||||
Three pieces of work, in order. Plan them as exactly three phases in that 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 — a self-test for the healthcheck
|
||||
This is deliberately two pieces of work, and the plan should carry two phases:
|
||||
|
||||
New file `scripts/orchestra_e2e_selftest.sh`, executable, `#!/usr/bin/env bash`.
|
||||
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.
|
||||
|
||||
It runs `scripts/orchestra_e2e_healthcheck.sh`, then asserts:
|
||||
## Verification policy for this project
|
||||
|
||||
- exit status is 0
|
||||
- stdout contains `OK`
|
||||
Only two commands may appear on a `- run:` line, exactly:
|
||||
|
||||
On failure it prints which assertion failed and exits 1. On success it prints `selftest: ok` and exits 0.
|
||||
- `["bash", "-n", "<path>"]`
|
||||
- `["bash", "scripts/orchestra_e2e_healthcheck.sh"]`
|
||||
|
||||
Verification for this phase is automated only. The one check is:
|
||||
|
||||
- run: ["bash", "-n", "scripts/orchestra_e2e_selftest.sh"]
|
||||
|
||||
Do not add a manual step to this phase.
|
||||
|
||||
## Phase 2 — `--json` on the healthcheck
|
||||
|
||||
`scripts/orchestra_e2e_healthcheck.sh --json` prints exactly one line:
|
||||
|
||||
{"status":"ok","checks":1}
|
||||
|
||||
and exits 0. Without `--json` the existing human output is unchanged, and `--help` keeps working. `--json` and `--help` together behave as `--help`.
|
||||
|
||||
Verification for this phase must include both an automated check and a manual step. The JSON shape is a judgement a human confirms by reading it, so state the manual step as the exact command a human runs and the exact line they should see.
|
||||
|
||||
## Phase 3 — teach the self-test about `--json`
|
||||
|
||||
Extend `scripts/orchestra_e2e_selftest.sh` to run the healthcheck twice: once plain and once with `--json`. Assert the plain run still contains `OK`, and assert the `--json` run prints one line beginning with `{"status":`.
|
||||
|
||||
Verification for this phase is automated only:
|
||||
|
||||
- run: ["bash", "-n", "scripts/orchestra_e2e_selftest.sh"]
|
||||
- run: ["bash", "scripts/orchestra_e2e_healthcheck.sh"]
|
||||
|
||||
## Constraints
|
||||
|
||||
The project's verification policy allows exactly two command shapes:
|
||||
|
||||
["bash", "-n", "<one file>"]
|
||||
["bash", "scripts/orchestra_e2e_healthcheck.sh"]
|
||||
|
||||
A `run:` line outside those is refused when the plan seals, not later.
|
||||
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
|
||||
|
||||
Before planning, establish at least three findings and label their confidence honestly: at least one `fact`, one `inference`, and one `assumption`. The plan must cite at least two of them 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.
|
||||
|
||||
@@ -1,14 +1,33 @@
|
||||
#!/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=
|
||||
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
|
||||
@@ -17,12 +36,16 @@ main() {
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -n "$json" ]; then
|
||||
printf '{"status":"ok","checks":1}\n'
|
||||
local format=text
|
||||
[ -n "$quiet" ] && format=none
|
||||
[ -n "$json" ] && format=json
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
@@ -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...]
|
||||
|
||||
Reference in New Issue
Block a user