File tree 3 files changed +7
-16
lines changed
3 files changed +7
-16
lines changed Original file line number Diff line number Diff line change 16
16
from _pytest .outcomes import fail
17
17
from _pytest .pathlib import absolutepath
18
18
from _pytest .pathlib import commonpath
19
+ from _pytest .pathlib import safe_exists
19
20
20
21
if TYPE_CHECKING :
21
22
from . import Config
@@ -151,14 +152,6 @@ def get_dir_from_path(path: Path) -> Path:
151
152
return path
152
153
return path .parent
153
154
154
- def safe_exists (path : Path ) -> bool :
155
- # This can throw on paths that contain characters unrepresentable at the OS level,
156
- # or with invalid syntax on Windows (https://bugs.python.org/issue35306)
157
- try :
158
- return path .exists ()
159
- except OSError :
160
- return False
161
-
162
155
# These look like paths but may not exist
163
156
possible_paths = (
164
157
absolutepath (get_file_part_from_node_id (arg ))
Original file line number Diff line number Diff line change 1
1
import atexit
2
2
import contextlib
3
- import errno
4
3
import fnmatch
5
4
import importlib .util
6
5
import itertools
@@ -798,7 +797,7 @@ def safe_exists(p: Path) -> bool:
798
797
"""Like Path.exists(), but account for input arguments that might be too long (#11394)."""
799
798
try :
800
799
return p .exists ()
801
- except OSError as e :
802
- if e . errno == errno . ENAMETOOLONG :
803
- return False
804
- raise
800
+ except ( ValueError , OSError ) :
801
+ # ValueError: stat: path too long for Windows
802
+ # OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect
803
+ return False
Original file line number Diff line number Diff line change @@ -688,7 +688,6 @@ def test_safe_exists(tmp_path: Path) -> None:
688
688
Path ,
689
689
"exists" ,
690
690
autospec = True ,
691
- side_effect = OSError ( errno . EIO , "another kind of error " ),
691
+ side_effect = ValueError ( "name too long " ),
692
692
):
693
- with pytest .raises (OSError ):
694
- _ = safe_exists (p )
693
+ assert safe_exists (p ) is False
You can’t perform that action at this time.
0 commit comments