處理 AI review findings 並改寫 Node.js entrypoint #1

Merged
jiantw83 merged 58 commits from ai-review-resolve/20260624102518 into develop 2026-06-24 14:09:27 +00:00
Showing only changes of commit 688ed49974 - Show all commits
+101
View File
1
@@ -23,6 +23,39 @@ SH
chmod +x "$dir/codex"
}
make_fake_sleeping_codex() {
local dir="$1"
cat > "$dir/codex" <<'SH'
#!/bin/sh
trap 'exit 143' TERM
while true; do
sleep 1
done
SH
chmod +x "$dir/codex"
}
make_fake_signaled_codex() {
local dir="$1"
cat > "$dir/codex" <<'SH'
#!/bin/sh
kill -TERM $$
SH
chmod +x "$dir/codex"
}
make_fake_large_output_codex() {
local dir="$1"
cat > "$dir/codex" <<'SH'
#!/bin/sh
printf '0123456789'
SH
chmod +x "$dir/codex"
}
encoded_json() {
printf '%s' "$1" | base64 | tr -d '\n'
}
1
@@ -190,6 +223,70 @@ test_missing_codex_command_output() {
rm -rf "$tmpdir"
}
test_codex_timeout_output() {
local tmpdir
tmpdir="$(mktemp -d)"
make_fake_sleeping_codex "$tmpdir"
set +e
run_entrypoint "$tmpdir" OAUTH="$(encoded_json '{}')" MODEL="gpt-test" PROMPT="hello" CODEX_TIMEOUT_MS="100"
local status="$?"
set -e
assert_status "$status" 143
grep -q "status=failed" "$tmpdir/github-output" || die "timeout failed status output"
grep -q "Codex execution timed out after 100 ms" "$tmpdir/github-output" || die "timeout message output"
[[ ! -e "$tmpdir/codex-home/auth.json" ]] || die "auth.json was not cleaned up after timeout"
rm -rf "$tmpdir"
}
test_codex_signal_output() {
local tmpdir
tmpdir="$(mktemp -d)"
make_fake_signaled_codex "$tmpdir"
set +e
run_entrypoint "$tmpdir" OAUTH="$(encoded_json '{}')" MODEL="gpt-test" PROMPT="hello"
local status="$?"
set -e
assert_status "$status" 1
grep -q "status=failed" "$tmpdir/github-output" || die "signal failed status output"
grep -q "Codex process terminated by signal SIGTERM" "$tmpdir/github-output" || die "signal message output"
rm -rf "$tmpdir"
}
test_codex_output_truncation() {
local tmpdir
tmpdir="$(mktemp -d)"
make_fake_large_output_codex "$tmpdir"
run_entrypoint "$tmpdir" OAUTH="$(encoded_json '{}')" MODEL="gpt-test" PROMPT="hello" CODEX_OUTPUT_LIMIT_BYTES="5"
grep -q "status=completed" "$tmpdir/github-output" || die "truncated output completed status"
grep -q "01234" "$tmpdir/github-output" || die "truncated output prefix"
grep -q "\\[Output truncated\\]" "$tmpdir/github-output" || die "truncation message output"
rm -rf "$tmpdir"
}
test_invalid_execution_config_uses_defaults() {
local tmpdir
tmpdir="$(mktemp -d)"
make_fake_large_output_codex "$tmpdir"
run_entrypoint "$tmpdir" \
OAUTH="$(encoded_json '{}')" \
MODEL="gpt-test" \
PROMPT="hello" \
CODEX_TIMEOUT_MS="invalid" \
CODEX_OUTPUT_LIMIT_BYTES="invalid"
grep -q "status=completed" "$tmpdir/github-output" || die "invalid config completed status"
grep -q "0123456789" "$tmpdir/github-output" || die "invalid output limit did not use default"
! grep -q "\\[Output truncated\\]" "$tmpdir/github-output" || die "invalid output limit unexpectedly truncated"
rm -rf "$tmpdir"
}
test_missing_oauth
test_missing_model
test_invalid_base64
@@ -199,5 +296,9 @@ test_empty_prompt
test_prompt_with_shell_characters
test_failure_output
test_missing_codex_command_output
test_codex_timeout_output
test_codex_signal_output
test_codex_output_truncation
test_invalid_execution_config_uses_defaults
echo "entrypoint tests passed"