Skip to content

Commit a98aed4

Browse files
committed
Loosen tests for OSError types.
1 parent e1c0d9e commit a98aed4

File tree

2 files changed

+8
-28
lines changed

2 files changed

+8
-28
lines changed

Lib/pathlib/_abc.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -881,18 +881,15 @@ def move(self, target):
881881
if not isinstance(target, PathBase):
882882
target = self.with_segments(target)
883883
if self.is_dir(follow_symlinks=False):
884-
delete_target = target.rmdir
884+
try:
885+
target.rmdir()
886+
except FileNotFoundError:
887+
pass
885888
copy_self = self.copytree
886889
delete_self = self.rmtree
887890
else:
888-
delete_target = target.unlink
889891
copy_self = self.copy
890892
delete_self = self.unlink
891-
try:
892-
# Ensure we get an appropriate OSError if the target exists.
893-
delete_target()
894-
except FileNotFoundError:
895-
pass
896893
copy_self(target, follow_symlinks=False, preserve_metadata=True)
897894
delete_self()
898895
return target

Lib/test/test_pathlib/test_pathlib_abc.py

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2008,22 +2008,14 @@ def test_move_file_to_dir(self):
20082008
base = self.cls(self.base)
20092009
source = base / 'fileA'
20102010
target = base / 'dirB'
2011-
if self.cls.parser is posixpath:
2012-
exc_type = IsADirectoryError
2013-
else:
2014-
exc_type = PermissionError
2015-
self.assertRaises(exc_type, source.move, target)
2011+
self.assertRaises(OSError, source.move, target)
20162012

20172013
def test_move_file_to_empty_dir(self):
20182014
base = self.cls(self.base)
20192015
source = base / 'fileA'
20202016
target = base / 'fileA_moved'
20212017
target.mkdir()
2022-
if self.cls.parser is posixpath:
2023-
exc_type = IsADirectoryError
2024-
else:
2025-
exc_type = PermissionError
2026-
self.assertRaises(exc_type, source.move, target)
2018+
self.assertRaises(OSError, source.move, target)
20272019

20282020
def test_move_dir(self):
20292021
base = self.cls(self.base)
@@ -2045,22 +2037,13 @@ def test_move_dir_to_file(self):
20452037
base = self.cls(self.base)
20462038
source = base / 'dirB'
20472039
target = base / 'fileA'
2048-
if self.cls.parser is posixpath:
2049-
exc_type = NotADirectoryError
2050-
else:
2051-
exc_type = PermissionError
2052-
self.assertRaises(exc_type, source.move, target)
2040+
self.assertRaises(OSError, source.move, target)
20532041

20542042
def test_move_dir_to_dir(self):
20552043
base = self.cls(self.base)
20562044
source = base / 'dirC'
20572045
target = base / 'dirB'
2058-
with self.assertRaises(OSError) as cm:
2059-
source.move(target)
2060-
if self.cls.parser is posixpath:
2061-
self.assertEqual(cm.exception.errno, errno.ENOTEMPTY)
2062-
else:
2063-
self.assertEqual(cm.exception.winerror, 5) # ERROR_ACCESS_DENIED
2046+
self.assertRaises(OSError, source.move, target)
20642047

20652048
def test_move_dir_to_empty_dir(self):
20662049
base = self.cls(self.base)

0 commit comments

Comments
 (0)