◐ Shell
clean mode source ↗

GH-127381: pathlib ABCs: remove `PathBase.move()` and `move_into()` by barneygale · Pull Request #128337 · python/cpython

Expand Up @@ -1423,26 +1423,97 @@ def test_move_dangling_symlink(self): self.assertTrue(target.is_symlink()) self.assertEqual(source_readlink, target.readlink())
def test_move_file(self): base = self.cls(self.base) source = base / 'fileA' source_text = source.read_text() target = base / 'fileA_moved' result = source.move(target) self.assertEqual(result, target) self.assertFalse(source.exists()) self.assertTrue(target.exists()) self.assertEqual(source_text, target.read_text())
@patch_replace def test_move_file_other_fs(self): self.test_move_file()
def test_move_file_to_file(self): base = self.cls(self.base) source = base / 'fileA' source_text = source.read_text() target = base / 'dirB' / 'fileB' result = source.move(target) self.assertEqual(result, target) self.assertFalse(source.exists()) self.assertTrue(target.exists()) self.assertEqual(source_text, target.read_text())
@patch_replace def test_move_file_to_file_other_fs(self): self.test_move_file_to_file()
def test_move_file_to_dir(self): base = self.cls(self.base) source = base / 'fileA' target = base / 'dirB' self.assertRaises(OSError, source.move, target)
@patch_replace def test_move_file_to_dir_other_fs(self): self.test_move_file_to_dir()
def test_move_file_to_itself(self): base = self.cls(self.base) source = base / 'fileA' self.assertRaises(OSError, source.move, source)
def test_move_dir(self): base = self.cls(self.base) source = base / 'dirC' target = base / 'dirC_moved' result = source.move(target) self.assertEqual(result, target) self.assertFalse(source.exists()) self.assertTrue(target.is_dir()) self.assertTrue(target.joinpath('dirD').is_dir()) self.assertTrue(target.joinpath('dirD', 'fileD').is_file()) self.assertEqual(target.joinpath('dirD', 'fileD').read_text(), "this is file D\n") self.assertTrue(target.joinpath('fileC').is_file()) self.assertTrue(target.joinpath('fileC').read_text(), "this is file C\n")
@patch_replace def test_move_dir_other_fs(self): self.test_move_dir()
def test_move_dir_to_dir(self): base = self.cls(self.base) source = base / 'dirC' target = base / 'dirB' self.assertRaises(OSError, source.move, target) self.assertTrue(source.exists()) self.assertTrue(target.exists())
@patch_replace def test_move_dir_to_dir_other_fs(self): self.test_move_dir_to_dir()
def test_move_dir_to_itself(self): base = self.cls(self.base) source = base / 'dirC' self.assertRaises(OSError, source.move, source) self.assertTrue(source.exists())
def test_move_dir_into_itself(self): base = self.cls(self.base) source = base / 'dirC' target = base / 'dirC' / 'bar' self.assertRaises(OSError, source.move, target) self.assertTrue(source.exists()) self.assertFalse(target.exists())
@patch_replace def test_move_dir_into_itself_other_fs(self): self.test_move_dir_into_itself() Expand Down Expand Up @@ -1472,10 +1543,26 @@ def test_move_dir_symlink_to_itself_other_fs(self): def test_move_dangling_symlink_other_fs(self): self.test_move_dangling_symlink()
def test_move_into(self): base = self.cls(self.base) source = base / 'fileA' source_text = source.read_text() target_dir = base / 'dirA' result = source.move_into(target_dir) self.assertEqual(result, target_dir / 'fileA') self.assertFalse(source.exists()) self.assertTrue(result.exists()) self.assertEqual(source_text, result.read_text())
@patch_replace def test_move_into_other_os(self): self.test_move_into()
def test_move_into_empty_name(self): source = self.cls('') target_dir = self.base self.assertRaises(ValueError, source.move_into, target_dir)
@patch_replace def test_move_into_empty_name_other_os(self): self.test_move_into_empty_name() Expand Down Expand Up @@ -1794,6 +1881,37 @@ def test_rmdir(self): self.assertFileNotFound(p.stat) self.assertFileNotFound(p.unlink)
def test_delete_file(self): p = self.cls(self.base) / 'fileA' p._delete() self.assertFalse(p.exists()) self.assertFileNotFound(p._delete)
def test_delete_dir(self): base = self.cls(self.base) base.joinpath('dirA')._delete() self.assertFalse(base.joinpath('dirA').exists()) self.assertFalse(base.joinpath('dirA', 'linkC').exists( follow_symlinks=False)) base.joinpath('dirB')._delete() self.assertFalse(base.joinpath('dirB').exists()) self.assertFalse(base.joinpath('dirB', 'fileB').exists()) self.assertFalse(base.joinpath('dirB', 'linkD').exists( follow_symlinks=False)) base.joinpath('dirC')._delete() self.assertFalse(base.joinpath('dirC').exists()) self.assertFalse(base.joinpath('dirC', 'dirD').exists()) self.assertFalse(base.joinpath('dirC', 'dirD', 'fileD').exists()) self.assertFalse(base.joinpath('dirC', 'fileC').exists()) self.assertFalse(base.joinpath('dirC', 'novel.txt').exists())
def test_delete_missing(self): tmp = self.cls(self.base, 'delete') tmp.mkdir() # filename is guaranteed not to exist filename = tmp / 'foo' self.assertRaises(FileNotFoundError, filename._delete)
@needs_symlinks def test_delete_symlink(self): tmp = self.cls(self.base, 'delete') Expand Down