* Fix CI test timeout: stream xcodebuild output and bump timeout to 30m The test split PR (#1717) applied output streaming (tee) and timeout bump only to ci-macos-compat.yml, not ci.yml. The main CI tests job was still capturing all xcodebuild output in a $() subshell (making logs blank) and using a 20 minute timeout (too tight after the test file split). Port the same fixes from ci-macos-compat.yml: - Stream xcodebuild output via tee so CI logs show progress in real time - Bump timeout-minutes from 20 to 30 - Update the SPM retry guard test for the new tee pattern * Fix hanging test: auto-confirm window close in last-surface Cmd+W test testCmdWClosesWindowWhenClosingLastSurfaceInLastWorkspace hung for 26+ minutes on CI because it sent Cmd+W to close the last surface without setting debugCloseMainWindowConfirmationHandler. The window close path shows a modal confirmation dialog that blocks the RunLoop indefinitely on headless runners. Set the handler to auto-confirm, matching the pattern used by testCmdCtrlWClosesWindowAfterConfirmation. * Skip last-surface close test on CI: PTY teardown blocks on headless runners The confirmation handler fix wasn't sufficient. The hang is in Ghostty surface/PTY teardown when closing the last terminal surface, not the window close confirmation. Shell process termination blocks indefinitely on headless CI runners without a TTY. Skip with XCTSkip when CI env var is set. The test still runs locally and can be covered via E2E on runners with virtual displays. * Skip hanging test via -skip-testing flag in xcodebuild The CI env var isn't visible inside xcodebuild's test host process, so the XCTSkip approach didn't work. Use -skip-testing on the xcodebuild command line instead. --------- Co-authored-by: Lawrence Chen <lawrencecchen@users.noreply.github.com>
22 lines
612 B
Bash
Executable file
22 lines
612 B
Bash
Executable file
#!/usr/bin/env bash
|
|
# Regression test for CI unit-test SwiftPM dependency flake handling.
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
WORKFLOW_FILE="$ROOT_DIR/.github/workflows/ci.yml"
|
|
|
|
REQUIRED_PATTERNS=(
|
|
"run_unit_tests()"
|
|
"Could not resolve package dependencies"
|
|
"rm -rf ~/Library/Caches/org.swift.swiftpm"
|
|
"run_unit_tests | tee /tmp/test-output.txt"
|
|
)
|
|
|
|
for pattern in "${REQUIRED_PATTERNS[@]}"; do
|
|
if ! grep -Fq "$pattern" "$WORKFLOW_FILE"; then
|
|
echo "FAIL: Missing pattern in ci.yml: $pattern"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
echo "PASS: CI unit-test SwiftPM retry guard is present"
|