|
2 | 2 |
|
3 | 3 | import unittest |
4 | 4 |
|
| 5 | +try: |
| 6 | + from unittest import mock |
| 7 | +except ImportError: |
| 8 | + import mock |
| 9 | + |
5 | 10 | from parameterized import parameterized_class |
6 | 11 |
|
| 12 | + |
7 | 13 | import fs.move |
8 | 14 | from fs import open_fs |
9 | | -from fs.errors import ResourceReadOnly |
| 15 | +from fs.errors import FSError, ResourceReadOnly |
10 | 16 | from fs.path import join |
11 | 17 | from fs.wrap import read_only |
12 | 18 |
|
@@ -145,22 +151,24 @@ def test_move_file_read_only_mem_dest(self): |
145 | 151 | ) |
146 | 152 | self.assertTrue(src.exists("file.txt")) |
147 | 153 |
|
148 | | - def test_move_dir_cleanup(self): |
149 | | - src_fs = open_fs("mem://") |
150 | | - src_fs.makedirs("foo/bar") |
151 | | - src_fs.touch("foo/bar/baz.txt") |
152 | | - src_fs.touch("foo/test.txt") |
153 | | - |
154 | | - dst_fs = open_fs("mem://") |
155 | | - dst_fs.create("test.txt") |
156 | | - |
157 | | - ro_src = read_only(src_fs) |
158 | | - |
159 | | - with self.assertRaises(ResourceReadOnly): |
160 | | - fs.move.move_dir(ro_src, "/foo", dst_fs, "/") |
| 154 | + def test_move_file_cleanup_on_error(self): |
| 155 | + with open_fs("mem://") as src, open_fs("mem://") as dst: |
| 156 | + src.writetext("file.txt", "Content") |
| 157 | + with mock.patch.object(src, "remove") as mck: |
| 158 | + mck.side_effect = FSError |
| 159 | + with self.assertRaises(FSError): |
| 160 | + fs.move.move_file(src, "file.txt", dst, "file.txt") |
| 161 | + self.assertTrue(src.exists("file.txt")) |
| 162 | + self.assertFalse(dst.exists("file.txt")) |
161 | 163 |
|
162 | | - self.assertTrue(src_fs.exists("foo/bar/baz.txt")) |
163 | | - self.assertTrue(src_fs.exists("foo/test.txt")) |
164 | | - self.assertFalse(dst_fs.isdir("bar")) |
165 | | - self.assertFalse(dst_fs.exists("bar/baz.txt")) |
166 | | - self.assertTrue(dst_fs.exists("test.txt")) |
| 164 | + def test_move_file_no_cleanup_on_error(self): |
| 165 | + with open_fs("mem://") as src, open_fs("mem://") as dst: |
| 166 | + src.writetext("file.txt", "Content") |
| 167 | + with mock.patch.object(src, "remove") as mck: |
| 168 | + mck.side_effect = FSError |
| 169 | + with self.assertRaises(FSError): |
| 170 | + fs.move.move_file( |
| 171 | + src, "file.txt", dst, "file.txt", cleanup_dest_on_error=False |
| 172 | + ) |
| 173 | + self.assertTrue(src.exists("file.txt")) |
| 174 | + self.assertTrue(dst.exists("file.txt")) |
0 commit comments