Nimblesite / Nimblesite/SharpLsp

make _test-vsix cannot go green on Windows — Linux-shaped staging assertions + temp-dir EPERM cleanup flakes

Open
#162 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
TypeScript
Stars
132
Forks
5
Avg merge
6h 24m
Merged PRs (30d)
27

Description

Running the full make _test-vsix gate on Windows 11 (the primary .NET dev OS) has pre-existing platform failures unrelated to feature work:

1. Extensionless sidecar filename assertions (3 tests)

  • bundled-sidecars.test.ts 'sidecars are present in bin/all/' asserts bin/all/sharplsp-sidecar-csharp — on Windows staging produces sharplsp-sidecar-csharp.exe (Makefile EXE_EXT), so existsSync fails.
  • 00-vsix-dev-binary-staging.test.ts 'keeps both required sidecars bundled...' — same class.
  • bundled-binary.test.ts 'sharplsp resolves from bundled source' fails downstream of the same staging-shape mismatch.

These pass in CI because ci.yml runs the gate on ubuntu only. Fix: assert platform-correct names (process.platform === 'win32' ? name + '.exe' : name), as bundled-binary.test.ts already does for the LSP binary itself.

2. after-hook EPERM temp cleanup flakes (2+ tests)

Error: EPERM, Permission denied: \?\C:\Users\...\Temp\sharplsp-debug-cmd-e2e-qGlWOA
Error: EPERM, Permission denied: \?\C:\Users\...\Temp\sharplsp-workflow-PS5Gjv

Windows holds file locks (watchers/processes) while suite teardown rmSyncs the fixture tree — same failure class as the project-deps watcher crash fixed earlier (see VSCODE-REACTIVITY-SPEC §4 fix). Teardowns need retry-on-EPERM (rmSync with maxRetries/retryDelay) and/or disposing watchers before deletion.

Evidence

Full gate on Windows: 539 passing, 16 failing — of which only 1 is an intentional tracked repro (#160). The rest split across the two classes above plus in-flight local edits. Log excerpt available on request.

Windows is where .NET developers live — the gate should be green here, not just on ubuntu CI.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running the Windows make _test-vsix gate and inspect bundled-sidecars.test.ts, 00-vsix-dev-binary-staging.test.ts, and bundled-binary.test.ts, using the existing platform-aware LSP assertion as a reference. Then trace the after-hook cleanup for the debug-command and workflow fixtures, and review VSCODE-REACTIVITY-SPEC §4. Done means the gate passes on Windows without breaking the Ubuntu assertions, including reliable temporary-directory cleanup.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
build-system, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.