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

tomerfiliba / plumbum / 29882703861
88%

Build:
DEFAULT BRANCH: master
Ran 22 Jul 2026 01:18AM UTC
Jobs 15
Files 46
Run time 1min
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: 87.526% (+0.04%) from 87.49%
29882703861

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

1340 of 1792 branches covered (74.78%)

34 of 38 new or added lines in 4 files covered. (89.47%)

5529 of 6317 relevant lines covered (87.53%)

12.42 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
75.96
-0.03% plumbum/machines/paramiko_machine.py
2
84.66
-0.4% plumbum/machines/remote.py
Jobs
ID Job ID Ran Files Coverage
1 test-windows-latest-3.14 - 29882703861.1 22 Jul 2026 01:22AM UTC 46
70.5
GitHub Action Run
2 test-windows-latest-3.11 - 29882703861.2 22 Jul 2026 01:22AM UTC 46
70.68
GitHub Action Run
3 test-macos-latest-3.15 - 29882703861.3 22 Jul 2026 01:22AM UTC 46
85.77
GitHub Action Run
4 test-ubuntu-latest-pypy-3.11 - 29882703861.4 22 Jul 2026 01:22AM UTC 46
85.96
GitHub Action Run
5 test-macos-latest-3.11 - 29882703861.5 22 Jul 2026 01:22AM UTC 46
85.8
GitHub Action Run
6 test-ubuntu-latest-3.14 - 29882703861.6 22 Jul 2026 01:22AM UTC 46
85.98
GitHub Action Run
7 test-macos-latest-3.14 - 29882703861.7 22 Jul 2026 01:22AM UTC 46
85.77
GitHub Action Run
8 test-macos-latest-3.9 - 29882703861.8 22 Jul 2026 01:22AM UTC 46
85.76
GitHub Action Run
9 test-ubuntu-latest-3.9 - 29882703861.9 22 Jul 2026 01:22AM UTC 46
85.97
GitHub Action Run
10 test-ubuntu-latest-3.15 - 29882703861.10 22 Jul 2026 01:22AM UTC 46
85.98
GitHub Action Run
11 test-ubuntu-latest-3.12 - 29882703861.11 22 Jul 2026 01:22AM UTC 46
86.01
GitHub Action Run
12 test-ubuntu-latest-3.11 - 29882703861.12 22 Jul 2026 01:22AM UTC 46
85.8
GitHub Action Run
13 test-windows-latest-3.9 - 29882703861.13 22 Jul 2026 01:22AM UTC 46
70.64
GitHub Action Run
14 test-ubuntu-latest-3.13 - 29882703861.14 22 Jul 2026 01:22AM UTC 46
85.98
GitHub Action Run
15 test-ubuntu-latest-3.10 - 29882703861.15 22 Jul 2026 01:22AM UTC 46
86.01
GitHub Action Run
Source Files on build 29882703861
  • 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 Repo
  • 26ee7c46 on github
  • Prev Build on master (#29844480577)
  • Next Build on master (#29888045439)
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