pytest-dev / pytest-dev/pytest
tempdir hardening fails when filesystem doesn't track ownership
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 14.5k
- Forks
- 3.4k
- Avg merge
- 2d 9h
- Merged PRs (30d)
- 35
Description
#8516 verifies that tmpdir and tmp_path etc. are owned by the user. This fails on filesystems that do not track ownership.
In my use case, I am using Buildbarn's FUSE storage on Linux where ownership is always reported as 0. This has the benefit that actions reading the ownership, e.g. tar, will be deterministic.
My workaround is to use the following in my test file:
if __name__ == "__main__":
sys.exit(pytest.main([
"--basetemp",
Path(os.environ["TEST_TMPDIR"]),
__file__,
]))
Would it make sense to allow rootdir_stat.st_uid == 0 in src/_pytest/tmpdir.py? An alternative is to disable the check with an environment variable.
Related issues: #8414 and #10738.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in src/_pytest/tmpdir.py at the ownership check around line 176, then read related issues #8414 and #10738 for the existing context. Determine how pytest should behave when a filesystem reports uid 0, and finish with behavior that supports the described Buildbarn FUSE use case without weakening the check unnecessarily.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- testing
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100