• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

tomerfiliba / plumbum / 29882703861 / 9
88%
master: 88%

Build:
DEFAULT BRANCH: master
Ran 22 Jul 2026 01:22AM UTC
Files 46
Run time 3s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Jul 2026 01:17AM UTC coverage: 85.971% (+0.04%) from 85.929%
29882703861.9

push

github

web-flow
fix: path/fs edge cases (access, unlink, chown, locked) (#825)

* fix: correct path/fs edge cases in access, unlink, chown, locked

Addresses several correctness bugs in the path and fs layers (#820):

- remote.RemotePath.access: handle F_OK (mode 0) as an existence check and
  test the "other" permission bits, not just owner/group; documented as a
  best-effort check that does not compare the caller's uid/gid.
- remote.RemotePath.unlink: no longer aliases delete() (rm -rf); it now
  refuses to recursively remove a real directory (raises EISDIR) and uses a
  non-recursive `rm -f` for files/symlinks, matching os.unlink.
- local.LocalPath.chown: pass -1 for an unspecified owner/group ("leave
  unchanged") instead of re-applying the parent's current uid/gid to every
  walked child.
- fs.AtomicFile.locked: honor blocking=False for the in-process thread lock
  too, raising OSError(EAGAIN) instead of hanging when another thread holds
  the lock.

Adds regression tests for the locally-testable fixes and pure-logic unit
tests for the remote access/unlink behavior (no SSH required).

Assisted-by: ClaudeCode:claude-opus-4.8

* fix: use lstat for remote unlink and require all access bits

Follow-up review fixes for the previous commit:

- RemotePath.unlink now checks link metadata via a new _path_lstat. On
  ParamikoMachine, SFTP stat follows symlinks, so a symlink to a
  directory was wrongly rejected as a directory and a dangling symlink
  was silently left in place. The shell backend's stat (no -L) already
  reports the link itself. The Paramiko lstat path also labels symlinks,
  so is_symlink() now works there.
- RemotePath.access now requires every requested permission bit instead
  of passing when any one bit matched, so a read-only file no longer
  satisfies access(os.R_OK | os.W_OK).

Assisted-by: ClaudeCode:claude-fable-5

1292 of 1777 branches covered (72.71%)

5411 of 6294 relevant lines covered (85.97%)

0.86 hits per line

Source Files on job test-ubuntu-latest-3.9 - 29882703861.9
  • Tree
  • List 46
  • Changed 6
  • Source Changed 0
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 29882703861
  • 26ee7c46 on github
  • Prev Job for on master (#29844480577.2)
  • Next Job for on master (#29888045439.7)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc