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


Current Status

Phase: closed
Last updated: 2026-07-16 by idd-close

Key Decisions

Scope Changes

  • (none)

Blocking

  • (none)

Closing

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions