-
Notifications
You must be signed in to change notification settings - Fork 93
Add Python 3.12 to the test suite #764
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 5 commits
ccd41d2
3748e6a
39a80cf
d0cfd0e
887d6b0
164879d
ebd31f2
2a60d68
dcdb458
be93897
a0d1f72
cb03c5c
311c982
f1b954b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -576,6 +576,11 @@ def path(self) -> AnyStr: | |
dir_path = sep.join(names) | ||
return self.filesystem.absnormpath(dir_path) | ||
|
||
@property | ||
def is_junction(self) -> bool: | ||
# TODO: implement junctions | ||
return False | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This should probably return `self.filesystem.is_junction(self.path). |
||
|
||
def __getattr__(self, item: str) -> Any: | ||
"""Forward some properties to stat_result.""" | ||
if item in self.stat_types: | ||
|
@@ -3440,6 +3445,22 @@ def islink(self, path: AnyPath) -> bool: | |
""" | ||
return self._is_of_type(path, S_IFLNK, follow_symlinks=False) | ||
|
||
def isjunction(self, path: AnyPath) -> bool: | ||
"""Determine if path identifies a junction. | ||
|
||
Args: | ||
path: Path to filesystem object. | ||
|
||
Returns: | ||
`False` on posix systems. | ||
`True` if path is a junction on Windows. | ||
|
||
Raises: | ||
TypeError: if path is None. | ||
""" | ||
# TODO: implement junction on Windows | ||
return False | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think for the time being it is ok to just return |
||
|
||
def confirmdir( | ||
self, target_directory: AnyStr, check_owner: bool = False | ||
) -> FakeDirectory: | ||
|
@@ -3602,6 +3623,7 @@ def dir() -> List[str]: | |
"isdir", | ||
"isfile", | ||
"islink", | ||
"isjunction", | ||
"ismount", | ||
"join", | ||
"lexists", | ||
|
@@ -3702,6 +3724,20 @@ def islink(self, path: AnyStr) -> bool: | |
""" | ||
return self.filesystem.islink(path) | ||
|
||
def isjunction(self, path: AnyStr) -> bool: | ||
"""Determine whether path is a junction. | ||
|
||
Args: | ||
path: Path to filesystem object. | ||
|
||
Returns: | ||
`True` if path is a junction. | ||
|
||
Raises: | ||
TypeError: if path is None. | ||
""" | ||
return self.filesystem.isjunction(path) | ||
|
||
def getmtime(self, path: AnyStr) -> float: | ||
"""Returns the modification time of the fake file. | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -32,8 +32,10 @@ | |
import fnmatch | ||
import functools | ||
import inspect | ||
import ntpath | ||
import os | ||
import pathlib | ||
import posixpath | ||
import re | ||
import sys | ||
from pathlib import PurePath | ||
|
@@ -383,6 +385,7 @@ class _FakeWindowsFlavour(_FakeFlavour): | |
| {"COM%d" % i for i in range(1, 10)} | ||
| {"LPT%d" % i for i in range(1, 10)} | ||
) | ||
pathmod = ntpath | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This class attribute was present but seemingly unused before python/cpython#95450 |
||
|
||
def is_reserved(self, parts): | ||
"""Return True if the path is considered reserved under Windows.""" | ||
|
@@ -459,6 +462,8 @@ class _FakePosixFlavour(_FakeFlavour): | |
independent of FakeFilesystem properties. | ||
""" | ||
|
||
pathmod = posixpath | ||
|
||
def is_reserved(self, parts): | ||
return False | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -632,6 +632,7 @@ def test_symlink_to(self): | |
self.assertTrue(path.is_symlink()) | ||
|
||
@unittest.skipIf(sys.version_info < (3, 8), "link_to new in Python 3.8") | ||
@unittest.skipIf(sys.version_info >= (3, 12), "link_to removed in Python 3.12") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, this had been deprecated before (actually renamed to |
||
def test_link_to(self): | ||
self.skip_if_symlink_not_supported() | ||
file_name = self.make_path("foo", "bar.txt") | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would probably just disable the tests with extra requirements for 3.12 (by adding a version check to the respective steps). It is common that larger packages do not support a new Python in early development stages. We can remove the check later.