Skip to content

fix: also suppress readdir EACCES/EINVAL on the watched directory (#187)#298

Merged
alexander-akait merged 3 commits intomainfrom
claude/investigate-issue-187-mL3bZ
Apr 28, 2026
Merged

fix: also suppress readdir EACCES/EINVAL on the watched directory (#187)#298
alexander-akait merged 3 commits intomainfrom
claude/investigate-issue-187-mL3bZ

Conversation

@alexander-akait
Copy link
Copy Markdown
Member

@alexander-akait alexander-akait commented Apr 27, 2026

fixes #187

claude added 3 commits April 27, 2026 23:17
The lstat error path in `doScan` already swallows `EACCES`/`EPERM`/`EBUSY`
and `EINVAL` (Windows) so unreadable entries inside a watched parent (e.g.
`pagefile.sys` under `/mnt/c` on WSL) don't print "Watchpack Error
(initial scan)". Mirror the same set in the `readdir` error handler so an
unreadable directory itself is treated as removed instead of logging.

Adds regression tests covering both the lstat and readdir paths for
`EACCES`/`EPERM`, with the `EINVAL` variants gated to Windows where the
suppression actually applies.
Adds `ENODEV` to the list of error codes treated as "missing" / "directory
removed" in `doScan`. Closes the gap reported by CumpsD in #187:

    Watchpack Error (initial scan): Error: ENODEV: no such device, lstat '/efi'

`ENODEV` surfaces when an entry exists but its underlying device is gone
(unmounted, ejected, or never mounted), which is the same operational
situation as `ENOENT`/`EPERM` from watchpack's perspective: we can't
inspect the entry, so don't log noise — just treat it as gone.

Tests extended to cover ENODEV in both the lstat and readdir paths.
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 27, 2026

🦋 Changeset detected

Latest commit: 74bd5ff

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
watchpack Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@linux-foundation-easycla
Copy link
Copy Markdown

CLA Not Signed

@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented Apr 27, 2026

Merging this PR will not alter performance

✅ 36 untouched benchmarks


Comparing claude/investigate-issue-187-mL3bZ (74bd5ff) with main (b5de069)

Open in CodSpeed

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 28, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.87%. Comparing base (b5de069) to head (74bd5ff).
⚠️ Report is 4 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #298      +/-   ##
==========================================
+ Coverage   95.77%   95.87%   +0.10%     
==========================================
  Files           7        7              
  Lines        1183     1189       +6     
  Branches      346      352       +6     
==========================================
+ Hits         1133     1140       +7     
+ Misses         45       44       -1     
  Partials        5        5              
Flag Coverage Δ
integration 95.87% <100.00%> (+0.10%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@alexander-akait alexander-akait merged commit b00ac61 into main Apr 28, 2026
48 of 49 checks passed
@alexander-akait alexander-akait deleted the claude/investigate-issue-187-mL3bZ branch April 28, 2026 08:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Watchpack Error (initial scan): Error: EACCES: permission denied, lstat '/mnt/c/...'

2 participants