#!/usr/bin/env bash set -eu HERE=$(cd "$(dirname "$0")" && pwd) RUN=$HERE/../scripts/codex-models.sh TMP=$(mktemp -d) trap 'rm -rf "$TMP"' EXIT # stub codex that returns fake catalog mkdir -p "$TMP/bin" cat > "$TMP/bin/codex" <<'STUB' #!/usr/bin/env bash if [[ "$1" == "debug" && "$2" == "models" ]]; then cat <<'JSON' {"models":[ {"slug":"gpt-5.6-sol","display_name":"GPT-5.6-Sol","visibility":"list","default_reasoning_level":"low","supported_reasoning_levels":[{"effort":"low"},{"effort":"high"}],"description":"x"}, {"slug":"gpt-reserve","visibility":"hide","default_reasoning_level":"medium","supported_reasoning_levels":[{"effort":"low"}],"description":"y"}, {"slug":"gpt-5.5","display_name":"GPT-5.5","visibility":"list","default_reasoning_level":"medium","supported_reasoning_levels":[{"effort":"low"},{"effort":"medium"}],"description":"z"} ]} JSON else echo "stub: unknown args $*" >&2; exit 1; fi STUB chmod +x "$TMP/bin/codex" # 1. filters hide, keeps list (via stub, PATH hoist) OUT=$(PATH="$TMP/bin:$PATH" "$RUN") echo "$OUT" | grep -q "gpt-5.6-sol" echo "$OUT" | grep -q "gpt-5.5" if echo "$OUT" | grep -q "gpt-reserve"; then echo "FAIL: hide leaked"; exit 1; fi echo "$OUT" | grep -q '"levels": \[' echo "models test: PASS (stubbed)" # 2. --stdin path piped fixture cat > "$TMP/fake.json" <<'JSON' {"models":[{"slug":"a","visibility":"list","display_name":"A","default_reasoning_level":"low","supported_reasoning_levels":[{"effort":"low"}],"description":"d"}]} JSON OUT2=$(cat "$TMP/fake.json" | "$RUN" --stdin) echo "$OUT2" | grep -q '"slug": "a"' echo "stdin test: PASS" echo "ALL PASS"