Race condition in `provider.unit.test.ts` due to slow initial execution
還沒有人認領這個 Issue。
評估
- 難度
- 3/5
- 預估耗時
- 1-2 天
- 新手友好度
- 58/100
- Issue 類型
- 缺陷
- 描述清晰度
- 基本清楚
- 活躍度
- 冷清
- 技術堆疊
- typescript
- 領域
- testing
研究方向
從 provider.unit.test.ts 和 AttachProcessProvider suite 開始,然後在緩慢或冷啟動的環境中執行 npm run test,以重現逾時和後續的 stub 失敗。完成的標準是 suite 中的第一個測試能可靠地完成,且 Linux 和 macOS 的斷言通過,同時呼叫不會在測試之間洩漏。
由索引模型根據 Issue 內容生成。
描述
📝 Description
We are observing intermittent test failures during the first run of the unit tests, specifically within the AttachProcessProvider suite.
The root cause appears to be a Race Condition triggered by slow environment startup:
- First Test Timeout: The first test case (e.g., Linux process list) takes longer than 2000ms to resolve (likely due to initial module loading or environment lag), causing a Mocha timeout error.
- Polluted Assertions: While the second test is running, the asynchronous call from the first (timed-out) test finally completes.
- Double Call Error: This causes the
sinonstub (likeplainExec) to record an extra call during the second test's execution context, leading to an assertion failure:expected plainExec to be called once but it was called twice(or similar).
586 passing (6s)
27 pending
2 failing
1) Attach to process - process provider
The Linux process list command should be called if the platform is Linux:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/home/runner/work/vscode-python-debugger/vscode-python-debugger/testDir/out/test/unittest/attachQuickPick/provider.unit.test.js)
at listOnTimeout (node:internal/timers:585:17)
at process.processTimers (node:internal/timers:521:7)
2) Attach to process - process provider
The macOS process list command should be called if the platform is macOS:
AssertError: expected plainExec to be called once and with exact arguments
🛠 Steps to Reproduce
- Run tests in a resource-constrained environment (like a cold GitHub Actions runner or a slow local machine).
- Execute npm run test (or the equivalent test runner command).
- Observe that the first test fails with a timeout, and subsequent tests fail because stubs were called by the "ghost" of the previous failed test.
- Run the tests again immediately; observe that all tests (including the previously failed ones) now pass.
Environment: CI (GitHub Runner) https://github.com/ZA139/vscode-python-debugger/actions/runs/25676102630/job/75374288168 / Local Windows
- 主要語言
- TypeScript
- 星號
- 181
- 分支
- 126
- 平均合併
- 2 天 3 小時
- 30 天內合併 PR
- 3
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
microsoft/vscode-python-debugger 的其他 Issue
-
triage-needed
難度 2/5 1-3 小時 新手友好度 78/100
microsoft/vscode-python-debugger#1110 ·
-
triage-needed
難度 1/5 1-3 小時 新手友好度 88/100
microsoft/vscode-python-debugger#1024 · 1 則留言 ·
-
triage-needed
microsoft/vscode-python-debugger#1111 · 1 個 reaction · 已指派 1 人 ·
-
triage-needed
microsoft/vscode-python-debugger#1106 · 1 個 reaction · 已指派 2 人 ·
-
triage-needed
microsoft/vscode-python-debugger#1104 · 1 個 reaction · 已指派 1 人 ·
查看 microsoft/vscode-python-debugger 的全部 Issue
相似的 Issue
-
clawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster no-stale P3
難度 2/5 1-3 小時 新手友好度 78/100
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
難度 1/5 1 小時以內 新手友好度 76/100
-
code-quality refactoring
難度 2/5 1-3 小時 新手友好度 84/100
github/gh-aw-firewall#8816 ·
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
難度 2/5 1-3 小時 新手友好度 74/100
langchain-ai/deepagents#6450 ·
-
難度 1/5 1 小時以內 新手友好度 88/100
vercel/react-tweet#225 ·