summaryrefslogtreecommitdiffstats
path: root/Lib/distutils/tests/test_file_util.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/distutils/tests/test_file_util.py')
-rw-r--r--Lib/distutils/tests/test_file_util.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/Lib/distutils/tests/test_file_util.py b/Lib/distutils/tests/test_file_util.py
index 3c3e3dc..270f81e 100644
--- a/Lib/distutils/tests/test_file_util.py
+++ b/Lib/distutils/tests/test_file_util.py
@@ -2,10 +2,13 @@
import unittest
import os
import shutil
+import errno
+from unittest.mock import patch
from distutils.file_util import move_file
from distutils import log
from distutils.tests import support
+from distutils.errors import DistutilsFileError
from test.support import run_unittest
class FileUtilTestCase(support.TempdirManager, unittest.TestCase):
@@ -58,6 +61,23 @@ class FileUtilTestCase(support.TempdirManager, unittest.TestCase):
wanted = ['moving %s -> %s' % (self.source, self.target_dir)]
self.assertEqual(self._logs, wanted)
+ @patch('os.rename', side_effect=OSError('wrong', 1))
+ def test_move_file_exception_unpacking_rename(self, _):
+ # see issue 22182
+ with self.assertRaises(DistutilsFileError):
+ with open(self.source, 'w') as fobj:
+ fobj.write('spam eggs')
+ move_file(self.source, self.target, verbose=0)
+
+ @patch('os.rename', side_effect=OSError(errno.EXDEV, 'wrong'))
+ @patch('os.unlink', side_effect=OSError('wrong', 1))
+ def test_move_file_exception_unpacking_unlink(self, rename, unlink):
+ # see issue 22182
+ with self.assertRaises(DistutilsFileError):
+ with open(self.source, 'w') as fobj:
+ fobj.write('spam eggs')
+ move_file(self.source, self.target, verbose=0)
+
def test_suite():
return unittest.makeSuite(FileUtilTestCase)