mirror of
https://github.com/python/cpython.git
synced 2025-09-12 03:37:09 +00:00
#22315: Use technique outlined in test_file_util
This commit is contained in:
parent
4b02e7041c
commit
e572ce3fb5
1 changed files with 5 additions and 22 deletions
|
@ -3,7 +3,7 @@ import unittest
|
|||
import os
|
||||
import stat
|
||||
import sys
|
||||
import contextlib
|
||||
from unittest.mock import patch
|
||||
|
||||
from distutils import dir_util, errors
|
||||
from distutils.dir_util import (mkpath, remove_tree, create_tree, copy_tree,
|
||||
|
@ -14,19 +14,6 @@ from distutils.tests import support
|
|||
from test.support import run_unittest
|
||||
|
||||
|
||||
@contextlib.context_manager
|
||||
def patch_obj(obj, attr, replacement):
|
||||
"""
|
||||
A poor man's mock.patch.object
|
||||
"""
|
||||
orig = getattr(obj, attr)
|
||||
try:
|
||||
setattr(obj, attr, replacement)
|
||||
yield
|
||||
finally:
|
||||
setattr(obj, attr, orig)
|
||||
|
||||
|
||||
class DirUtilTestCase(support.TempdirManager, unittest.TestCase):
|
||||
|
||||
def _log(self, msg, *args):
|
||||
|
@ -135,17 +122,13 @@ class DirUtilTestCase(support.TempdirManager, unittest.TestCase):
|
|||
self.assertEqual(ensure_relative('c:\\home\\foo'), 'c:home\\foo')
|
||||
self.assertEqual(ensure_relative('home\\foo'), 'home\\foo')
|
||||
|
||||
def test_copy_tree_exception_in_listdir(self):
|
||||
@patch('os.listdir', side_effect=OSError())
|
||||
def test_copy_tree_exception_in_listdir(self, listdir):
|
||||
"""
|
||||
An exception in listdir should raise a DistutilsFileError
|
||||
"""
|
||||
def new_listdir(path):
|
||||
raise OSError()
|
||||
# simulate a transient network error or other failure invoking listdir
|
||||
with patch_obj(os, 'listdir', new_listdir):
|
||||
args = 'src', None
|
||||
exc = errors.DistutilsFileError
|
||||
self.assertRaises(exc, dir_util.copy_tree, *args)
|
||||
with self.assertRaises(errors.DistutilsFileError):
|
||||
dir_util.copy_tree('src', None)
|
||||
|
||||
|
||||
def test_suite():
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue