Issue #19856: shutil.move() failed to move a directory to other directory
on Windows if source name ends with os.altsep.
This commit is contained in:
parent
c2f665e721
commit
3a308b9f37
|
@ -484,7 +484,8 @@ rmtree.avoids_symlink_attacks = _use_fd_functions
|
||||||
def _basename(path):
|
def _basename(path):
|
||||||
# A basename() variant which first strips the trailing slash, if present.
|
# A basename() variant which first strips the trailing slash, if present.
|
||||||
# Thus we always get the last component of the path, even for directories.
|
# Thus we always get the last component of the path, even for directories.
|
||||||
return os.path.basename(path.rstrip(os.path.sep))
|
sep = os.path.sep + (os.path.altsep or '')
|
||||||
|
return os.path.basename(path.rstrip(sep))
|
||||||
|
|
||||||
def move(src, dst):
|
def move(src, dst):
|
||||||
"""Recursively move a file or directory to another location. This is
|
"""Recursively move a file or directory to another location. This is
|
||||||
|
|
|
@ -1481,6 +1481,15 @@ class TestMove(unittest.TestCase):
|
||||||
# Move a dir inside an existing dir on another filesystem.
|
# Move a dir inside an existing dir on another filesystem.
|
||||||
self.test_move_dir_to_dir()
|
self.test_move_dir_to_dir()
|
||||||
|
|
||||||
|
def test_move_dir_sep_to_dir(self):
|
||||||
|
self._check_move_dir(self.src_dir + os.path.sep, self.dst_dir,
|
||||||
|
os.path.join(self.dst_dir, os.path.basename(self.src_dir)))
|
||||||
|
|
||||||
|
@unittest.skipUnless(os.path.altsep, 'requires os.path.altsep')
|
||||||
|
def test_move_dir_altsep_to_dir(self):
|
||||||
|
self._check_move_dir(self.src_dir + os.path.altsep, self.dst_dir,
|
||||||
|
os.path.join(self.dst_dir, os.path.basename(self.src_dir)))
|
||||||
|
|
||||||
def test_existing_file_inside_dest_dir(self):
|
def test_existing_file_inside_dest_dir(self):
|
||||||
# A file with the same name inside the destination dir already exists.
|
# A file with the same name inside the destination dir already exists.
|
||||||
with open(self.dst_file, "wb"):
|
with open(self.dst_file, "wb"):
|
||||||
|
|
|
@ -20,6 +20,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #19856: shutil.move() failed to move a directory to other directory
|
||||||
|
on Windows if source name ends with os.altsep.
|
||||||
|
|
||||||
- Issue #14983: email.generator now always adds a line end after each MIME
|
- Issue #14983: email.generator now always adds a line end after each MIME
|
||||||
boundary marker, instead of doing so only when there is an epilogue. This
|
boundary marker, instead of doing so only when there is an epilogue. This
|
||||||
fixes an RFC compliance bug and solves an issue with signed MIME parts.
|
fixes an RFC compliance bug and solves an issue with signed MIME parts.
|
||||||
|
|
Loading…
Reference in New Issue