Align reviewer runtime and Telegram notifications
This commit is contained in:
82
skills/reviewer-runtime/tests/smoke-test.sh
Normal file → Executable file
82
skills/reviewer-runtime/tests/smoke-test.sh
Normal file → Executable file
@@ -66,6 +66,28 @@ run_helper() {
|
||||
return "$exit_code"
|
||||
}
|
||||
|
||||
run_helper_allowing_success_file() {
|
||||
local command_file=$1
|
||||
local stdout_file=$2
|
||||
local stderr_file=$3
|
||||
local status_file=$4
|
||||
local success_file=$5
|
||||
shift 5
|
||||
|
||||
set +e
|
||||
"$HELPER_PATH" \
|
||||
--command-file "$command_file" \
|
||||
--stdout-file "$stdout_file" \
|
||||
--stderr-file "$stderr_file" \
|
||||
--status-file "$status_file" \
|
||||
--success-file "$success_file" \
|
||||
"$@"
|
||||
local exit_code=$?
|
||||
set -e
|
||||
|
||||
return "$exit_code"
|
||||
}
|
||||
|
||||
test_delayed_success() {
|
||||
local dir=$1
|
||||
local command_file=$dir/delayed-success.sh
|
||||
@@ -120,6 +142,36 @@ printf "completed after soft timeout\n"
|
||||
assert_file_contains "$status_file" "state=completed"
|
||||
}
|
||||
|
||||
test_in_progress_heartbeats() {
|
||||
local dir=$1
|
||||
local command_file=$dir/in-progress-heartbeats.sh
|
||||
local stdout_file=$dir/in-progress-heartbeats.stdout
|
||||
local stderr_file=$dir/in-progress-heartbeats.stderr
|
||||
local status_file=$dir/in-progress-heartbeats.status
|
||||
|
||||
make_command "$command_file" '
|
||||
sleep 3
|
||||
printf "finished with heartbeat coverage\n"
|
||||
'
|
||||
|
||||
if run_helper "$command_file" "$stdout_file" "$stderr_file" "$status_file" \
|
||||
--poll-seconds 1 \
|
||||
--heartbeat-seconds 1 \
|
||||
--soft-timeout-seconds 5 \
|
||||
--stall-warning-seconds 4 \
|
||||
--hard-timeout-seconds 10; then
|
||||
local exit_code=0
|
||||
else
|
||||
local exit_code=$?
|
||||
fi
|
||||
|
||||
assert_exit_code "$exit_code" 0
|
||||
assert_file_contains "$stdout_file" "finished with heartbeat coverage"
|
||||
assert_file_contains "$status_file" "state=in-progress"
|
||||
assert_file_contains "$status_file" "In progress 1"
|
||||
assert_file_contains "$status_file" "In progress 2"
|
||||
}
|
||||
|
||||
test_nonzero_failure() {
|
||||
local dir=$1
|
||||
local command_file=$dir/nonzero-failure.sh
|
||||
@@ -173,6 +225,34 @@ exit 0
|
||||
assert_file_contains "$status_file" "state=completed-empty-output"
|
||||
}
|
||||
|
||||
test_success_file_allows_empty_stdout() {
|
||||
local dir=$1
|
||||
local command_file=$dir/success-file.sh
|
||||
local stdout_file=$dir/success-file.stdout
|
||||
local stderr_file=$dir/success-file.stderr
|
||||
local status_file=$dir/success-file.status
|
||||
local success_file=$dir/review-output.md
|
||||
|
||||
make_command "$command_file" "
|
||||
printf 'review body from redirected file\\n' > \"$success_file\"
|
||||
exit 0
|
||||
"
|
||||
|
||||
if run_helper_allowing_success_file "$command_file" "$stdout_file" "$stderr_file" "$status_file" "$success_file" \
|
||||
--poll-seconds 1 \
|
||||
--soft-timeout-seconds 5 \
|
||||
--stall-warning-seconds 3 \
|
||||
--hard-timeout-seconds 10; then
|
||||
local exit_code=0
|
||||
else
|
||||
local exit_code=$?
|
||||
fi
|
||||
|
||||
assert_exit_code "$exit_code" 0
|
||||
assert_file_contains "$success_file" "review body from redirected file"
|
||||
assert_file_contains "$status_file" "state=completed"
|
||||
}
|
||||
|
||||
test_signal_cleanup() {
|
||||
local dir=$1
|
||||
local command_file=$dir/signal-child.sh
|
||||
@@ -252,8 +332,10 @@ main() {
|
||||
|
||||
test_delayed_success "$tmp_dir"
|
||||
test_soft_timeout_continues "$tmp_dir"
|
||||
test_in_progress_heartbeats "$tmp_dir"
|
||||
test_nonzero_failure "$tmp_dir"
|
||||
test_empty_output_is_terminal "$tmp_dir"
|
||||
test_success_file_allows_empty_stdout "$tmp_dir"
|
||||
test_signal_cleanup "$tmp_dir"
|
||||
test_hard_timeout_escalation "$tmp_dir"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user