Skip to content

Commit cec3e06

Browse files
committed
add movedir tests
1 parent f1a7bfb commit cec3e06

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

fs/errors.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"IllegalBackReference",
3535
"InsufficientStorage",
3636
"InvalidCharsInPath",
37+
"InvalidMoveOperation",
3738
"InvalidPath",
3839
"MissingInfoNamespace",
3940
"NoSysPath",
@@ -303,6 +304,12 @@ class DirectoryNotEmpty(ResourceError):
303304
default_message = "directory '{path}' is not empty"
304305

305306

307+
class InvalidMoveOperation(ResourceError):
308+
"""Attempt to move a folder into its own subfolder."""
309+
310+
default_message = "you cannot move '{path}' into its own subfolder"
311+
312+
306313
class ResourceLocked(ResourceError):
307314
"""Attempt to use a locked resource."""
308315

fs/test.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1885,6 +1885,25 @@ def test_movedir(self):
18851885
with self.assertRaises(errors.DirectoryExpected):
18861886
self.fs.movedir("foo2/foofoo.txt", "foo2/baz/egg")
18871887

1888+
def test_movedir_onto_itself(self):
1889+
folder = self.fs.makedir("folder")
1890+
folder.writetext("file1.txt", "Hello1")
1891+
sub = folder.makedir("sub")
1892+
sub.writetext("file2.txt", "Hello2")
1893+
1894+
self.fs.movedir("folder", "folder")
1895+
self.assert_text("folder/file1.txt", "Hello1")
1896+
self.assert_text("folder/sub/file2.txt", "Hello2")
1897+
1898+
def test_movedir_into_its_own_subfolder(self):
1899+
folder = self.fs.makedir("folder")
1900+
folder.writetext("file1.txt", "Hello1")
1901+
sub = folder.makedir("sub")
1902+
sub.writetext("file2.txt", "Hello2")
1903+
1904+
with self.assertRaises(errors.InvalidMoveOperation):
1905+
self.fs.movedir("folder", "folder/sub/")
1906+
18881907
def test_match(self):
18891908
self.assertTrue(self.fs.match(["*.py"], "foo.py"))
18901909
self.assertEqual(

0 commit comments

Comments
 (0)