Problem
Tests/MacDocCLITests/CLITestHelper.swift 的 run(_:timeout:):timeout 到期時呼叫 process.terminate() 後立即讀 process.terminationStatus。terminate() 只送 SIGTERM、不等待——process 還沒真正退出時讀 terminationStatus 會拋 ObjC 例外。
Type
bug
Expected
timeout 後 terminate() → waitUntilExit()(或有界輪詢 isRunning)→ 再讀 terminationStatus;測試以「逾時失敗」收場而非 crash 整個 test process。
Actual
實證(2026-07-08):.note 轉換在 clean build 後首次執行冷啟超過 30s timeout → *** -[NSConcreteTask terminationStatus]: task still running (NSInvalidArgumentException),XCTest 以 signal 6 中止,整個 suite 的其餘測試沒跑。
Impact
任何 CLI e2e 測試偶發變慢(冷啟、CI 負載)就會把 test process 整個炸掉,掩蓋真正的結果。單行修正 + 低風險。
Sibling concern surfaced during #131 filing (session 2026-07-08); parent context: #131
Problem
Tests/MacDocCLITests/CLITestHelper.swift的run(_:timeout:):timeout 到期時呼叫process.terminate()後立即讀process.terminationStatus。terminate()只送 SIGTERM、不等待——process 還沒真正退出時讀 terminationStatus 會拋 ObjC 例外。Type
bug
Expected
timeout 後
terminate()→waitUntilExit()(或有界輪詢 isRunning)→ 再讀 terminationStatus;測試以「逾時失敗」收場而非 crash 整個 test process。Actual
實證(2026-07-08):
.note轉換在 clean build 後首次執行冷啟超過 30s timeout →*** -[NSConcreteTask terminationStatus]: task still running (NSInvalidArgumentException),XCTest 以 signal 6 中止,整個 suite 的其餘測試沒跑。Impact
任何 CLI e2e 測試偶發變慢(冷啟、CI 負載)就會把 test process 整個炸掉,掩蓋真正的結果。單行修正 + 低風險。