diff options
| author | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2025-04-04 09:52:22 +0200 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2025-04-07 16:11:36 +0200 |
| commit | 8ad3e80e88201f4c557f6fa79fcfc0f8a0961830 (patch) | |
| tree | 0823e460a23931e7dcb098d2d8d34783fb1ec335 /tests | |
| parent | d4a2809c2b878317a4fa0e1cbaf07322ffd7f2fb (diff) | |
Fixed #36298 -- Truncated the overwritten file content in file_move_safe().
Regression in 58cd4902a71a3695dd6c21dc957f59c333db364c.
Thanks Baptiste Mispelon for the report.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/files/tests.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/files/tests.py b/tests/files/tests.py index 4f6d1fa74b..7e365aae39 100644 --- a/tests/files/tests.py +++ b/tests/files/tests.py @@ -496,6 +496,27 @@ class FileMoveSafeTests(unittest.TestCase): os.close(handle_b) os.close(handle_c) + def test_file_move_ensure_truncation(self): + with tempfile.NamedTemporaryFile(delete=False) as src: + src.write(b"content") + src_name = src.name + self.addCleanup( + lambda: os.remove(src_name) if os.path.exists(src_name) else None + ) + + with tempfile.NamedTemporaryFile(delete=False) as dest: + dest.write(b"This is a longer content.") + dest_name = dest.name + self.addCleanup(os.remove, dest_name) + + with mock.patch("django.core.files.move.os.rename", side_effect=OSError()): + file_move_safe(src_name, dest_name, allow_overwrite=True) + + with open(dest_name, "rb") as f: + content = f.read() + + self.assertEqual(content, b"content") + class SpooledTempTests(unittest.TestCase): def test_in_memory_spooled_temp(self): |
