From 3585cdfad6f96078a07b9838b090e664c077a630 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Fri, 17 Jul 2026 11:18:29 -0500 Subject: [PATCH] test(#812): reproduce false-positive gitea review comment --- .../tools/git/test-pr-review-gitea-comment.sh | 144 ++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 packages/mosaic/framework/tools/git/test-pr-review-gitea-comment.sh diff --git a/packages/mosaic/framework/tools/git/test-pr-review-gitea-comment.sh b/packages/mosaic/framework/tools/git/test-pr-review-gitea-comment.sh new file mode 100644 index 0000000..5dd1ccc --- /dev/null +++ b/packages/mosaic/framework/tools/git/test-pr-review-gitea-comment.sh @@ -0,0 +1,144 @@ +#!/usr/bin/env bash +# Regression harness for durable Gitea PR review comments (#812). + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +WORK_DIR="${MOSAIC_TEST_WORK_DIR:-$PWD/.mosaic-test-work/pr-review-gitea-comment}" +REPO_DIR="$WORK_DIR/repo" +BIN_DIR="$WORK_DIR/bin" +LOG_FILE="$WORK_DIR/tea.log" +OUTPUT_FILE="$WORK_DIR/output.log" + +cleanup() { + rm -rf "$WORK_DIR" +} +trap cleanup EXIT + +mkdir -p "$REPO_DIR" "$BIN_DIR" +git -C "$REPO_DIR" init -q +git -C "$REPO_DIR" remote add origin https://git.mosaicstack.dev/mosaicstack/stack.git + +cat > "$BIN_DIR/tea" <<'SH' +#!/usr/bin/env bash +set -euo pipefail + +printf '%s\n' "$*" >> "$PR_REVIEW_TEST_LOG" + +if [[ "$*" == "login list --output json" ]]; then + printf '%s\n' '[{"name":"mosaicstack","url":"https://git.mosaicstack.dev"}]' + exit 0 +fi + +case "${PR_REVIEW_TEST_MODE:-}" in + approve) + [[ "$*" == "pr approve 123 --repo mosaicstack/stack --login mosaicstack" ]] || exit 90 + ;; + request-changes) + [[ "$*" == "pr reject 123 --repo mosaicstack/stack --login mosaicstack --comment changes-required" ]] || exit 91 + ;; + legacy-fallback) + if [[ "$*" == pr\ comment* ]]; then + # tea v0.11.1 treats the nonexistent subcommand as `tea pr list` and exits 0. + printf '%s\n' 'INDEX TITLE STATE' + exit 0 + fi + if [[ "$*" == comment* ]]; then + printf '%s\n' 'supported comment write deliberately unavailable' >&2 + exit 23 + fi + exit 92 + ;; + comment-success|readback-failure) + if [[ "$*" == "comment 123 durable-body --login mosaicstack --repo mosaicstack/stack --output json" ]]; then + printf '%s\n' '{"id":456,"body":"durable-body"}' + exit 0 + fi + if [[ "$*" == "api --login mosaicstack /repos/mosaicstack/stack/issues/comments/456" ]]; then + if [[ "$PR_REVIEW_TEST_MODE" == "readback-failure" ]]; then + printf '%s\n' '{"id":456,"body":"different-body","issue_url":"https://git.mosaicstack.dev/api/v1/repos/mosaicstack/stack/issues/123"}' + else + printf '%s\n' '{"id":456,"body":"durable-body","issue_url":"https://git.mosaicstack.dev/api/v1/repos/mosaicstack/stack/issues/123"}' + fi + exit 0 + fi + if [[ "$*" == pr\ comment* ]]; then + # Reproduce the old false-positive fallback if the wrapper regresses. + printf '%s\n' 'INDEX TITLE STATE' + exit 0 + fi + exit 93 + ;; + write-failure) + if [[ "$*" == "comment 123 durable-body --login mosaicstack --repo mosaicstack/stack --output json" ]]; then + printf '%s\n' 'provider rejected comment' >&2 + exit 24 + fi + exit 94 + ;; + *) + exit 95 + ;; +esac +SH +chmod +x "$BIN_DIR/tea" + +run_review() { + local mode="$1" action="$2" comment="${3:-}" + : > "$LOG_FILE" + : > "$OUTPUT_FILE" + ( + cd "$REPO_DIR" + PATH="$BIN_DIR:$PATH" \ + PR_REVIEW_TEST_LOG="$LOG_FILE" \ + PR_REVIEW_TEST_MODE="$mode" \ + "$SCRIPT_DIR/pr-review.sh" -n 123 -a "$action" ${comment:+-c "$comment"} + ) > "$OUTPUT_FILE" 2>&1 +} + +run_review approve approve +grep -q '^pr approve 123 --repo mosaicstack/stack --login mosaicstack$' "$LOG_FILE" +grep -q 'Approved Gitea PR #123' "$OUTPUT_FILE" + +run_review request-changes request-changes changes-required +grep -q '^pr reject 123 --repo mosaicstack/stack --login mosaicstack --comment changes-required$' "$LOG_FILE" +grep -q 'Requested changes on Gitea PR #123' "$OUTPUT_FILE" + +if run_review legacy-fallback comment durable-body; then + echo "The old nonexistent tea pr comment fallback returned success" >&2 + cat "$OUTPUT_FILE" >&2 + exit 1 +fi +if grep -q '^pr comment ' "$LOG_FILE"; then + echo "Wrapper invoked unsupported tea pr comment" >&2 + exit 1 +fi +if grep -q 'Added comment to Gitea PR' "$OUTPUT_FILE"; then + echo "Wrapper reported success without durable persistence" >&2 + exit 1 +fi + +run_review comment-success comment durable-body +grep -q '^comment 123 durable-body --login mosaicstack --repo mosaicstack/stack --output json$' "$LOG_FILE" +grep -q '^api --login mosaicstack /repos/mosaicstack/stack/issues/comments/456$' "$LOG_FILE" +grep -q 'Added and verified comment on Gitea PR #123' "$OUTPUT_FILE" + +if run_review write-failure comment durable-body; then + echo "Expected provider write failure to return nonzero" >&2 + exit 1 +fi +if grep -q 'Added and verified comment' "$OUTPUT_FILE"; then + echo "Write failure reported durable success" >&2 + exit 1 +fi + +if run_review readback-failure comment durable-body; then + echo "Expected mismatched provider read-back to return nonzero" >&2 + exit 1 +fi +if grep -q 'Added and verified comment' "$OUTPUT_FILE"; then + echo "Read-back mismatch reported durable success" >&2 + exit 1 +fi + +echo "pr-review.sh durable Gitea comment regression passed"