mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-01-17 22:40:11 -06:00
util: also run chmod on EPERM
Writing a test for this one is tricky, because I was seeing the issue
only when the directory being removed is a docker volume, so instead of
getting EACCES we get EPERM.
This is easy to reproduce though. The existing test fails when the
directory being used for the files is a docker volume:
```
% docker run \
-v $(mktemp -d):/tmp \
-v ${PWD}:/src \
-w /src \
python:3 \
bash -c 'pip install -e . && pip install -r requirements-dev.txt && python -m pytest tests/util_test.py'
```
This commit is contained in:
@@ -255,7 +255,7 @@ def rmtree(path: str) -> None:
|
||||
excvalue = exc[1]
|
||||
if (
|
||||
func in (os.rmdir, os.remove, os.unlink) and
|
||||
excvalue.errno == errno.EACCES
|
||||
excvalue.errno in (errno.EACCES, errno.EPERM)
|
||||
):
|
||||
for p in (path, os.path.dirname(path)):
|
||||
os.chmod(p, os.stat(p).st_mode | stat.S_IWUSR)
|
||||
|
||||
Reference in New Issue
Block a user