Skip to content

fix(test): CLITestHelper timeout 後直接讀 terminationStatus — process 未退出時拋 NSInvalidArgumentException (sibling concern from #131) #133

Description

@kiki830621

Problem

Tests/MacDocCLITests/CLITestHelper.swiftrun(_:timeout:):timeout 到期時呼叫 process.terminate()立即process.terminationStatusterminate() 只送 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions