* Fix sidebar drag terminal resize lag * Add display resolution churn regression * Prelaunch display churn helper in e2e workflow * Use manifest handoff for display churn UI test * Fix e2e display churn harness startup * Resolve display churn UI test socket path * Use marker-based socket discovery in display UI test * Add failing sidebar drag portal regression tests * Fix sidebar drag terminal portal resize lag * Add failing scoped resize regression tests * Fix terminal portal resize scheduling lag * Add failing zsh resize prompt regression test * Fix zsh resize prompt duplication * Fix Sequoia sidebar resize regression * Guard display-resolution CI runner * Run display-resolution CI on WarpBuild * Allow backgrounded display regression app launch * Launch display regression app directly * Launch display regression app via NSWorkspace * Load display regression launch env from manifest * Write display regression manifest in runner temp dir * Write display regression manifest in shared tmp * Write display regression manifest in repo scratch dir * Launch display regression app with explicit env * Avoid xcodebuild broken pipe in compat CI * Launch display regression via XCUIApplication * Harden display regression socket readiness * Trust display socket diagnostics path * Replace display socket probe with render diagnostics * Write display churn start marker atomically * Move display churn harness out of /tmp --------- Co-authored-by: Lawrence Chen <lawrencecchen@users.noreply.github.com>
56 lines
2.3 KiB
Bash
Executable file
56 lines
2.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Regression test for https://github.com/manaflow-ai/cmux/issues/385.
|
|
# Ensures paid/gated CI jobs are never run for fork pull requests.
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
WORKFLOW_FILE="$ROOT_DIR/.github/workflows/ci.yml"
|
|
|
|
EXPECTED_IF="if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository"
|
|
|
|
if ! grep -Fq "$EXPECTED_IF" "$WORKFLOW_FILE"; then
|
|
echo "FAIL: Missing fork pull_request guard in $WORKFLOW_FILE"
|
|
echo "Expected line:"
|
|
echo " $EXPECTED_IF"
|
|
exit 1
|
|
fi
|
|
|
|
# tests: must use WarpBuild runner with fork guard (paid runner)
|
|
if ! awk '
|
|
/^ tests:/ { in_tests=1; next }
|
|
in_tests && /^ [^[:space:]]/ { in_tests=0 }
|
|
in_tests && /runs-on: warp-macos-15-arm64-6x/ { saw_warp=1 }
|
|
in_tests && /github.event.pull_request.head.repo.full_name == github.repository/ { saw_guard=1 }
|
|
END { exit !(saw_warp && saw_guard) }
|
|
' "$WORKFLOW_FILE"; then
|
|
echo "FAIL: tests block must keep both warp-macos-15-arm64-6x runner and fork guard"
|
|
exit 1
|
|
fi
|
|
|
|
# tests-build-and-lag: must use WarpBuild runner with fork guard (paid runner)
|
|
if ! awk '
|
|
/^ tests-build-and-lag:/ { in_tests=1; next }
|
|
in_tests && /^ [^[:space:]]/ { in_tests=0 }
|
|
in_tests && /runs-on: warp-macos-15-arm64-6x/ { saw_warp=1 }
|
|
in_tests && /github.event.pull_request.head.repo.full_name == github.repository/ { saw_guard=1 }
|
|
END { exit !(saw_warp && saw_guard) }
|
|
' "$WORKFLOW_FILE"; then
|
|
echo "FAIL: tests-build-and-lag block must keep both warp-macos-15-arm64-6x runner and fork guard"
|
|
exit 1
|
|
fi
|
|
|
|
# ui-display-resolution-regression: must use WarpBuild runner with fork guard (paid runner)
|
|
if ! awk '
|
|
/^ ui-display-resolution-regression:/ { in_tests=1; next }
|
|
in_tests && /^ [^[:space:]]/ { in_tests=0 }
|
|
in_tests && /runs-on: warp-macos-15-arm64-6x/ { saw_warp=1 }
|
|
in_tests && /github.event.pull_request.head.repo.full_name == github.repository/ { saw_guard=1 }
|
|
END { exit !(saw_warp && saw_guard) }
|
|
' "$WORKFLOW_FILE"; then
|
|
echo "FAIL: ui-display-resolution-regression block must keep both warp-macos-15-arm64-6x runner and fork guard"
|
|
exit 1
|
|
fi
|
|
|
|
echo "PASS: tests WarpBuild runner fork guard is present"
|
|
echo "PASS: tests-build-and-lag WarpBuild runner fork guard is present"
|
|
echo "PASS: ui-display-resolution-regression WarpBuild runner fork guard is present"
|