Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e572ce3

Browse files
committed
#22315: Use technique outlined in test_file_util
1 parent 4b02e70 commit e572ce3

1 file changed

Lines changed: 5 additions & 22 deletions

File tree

Lib/distutils/tests/test_dir_util.py

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import os
44
import stat
55
import sys
6-
import contextlib
6+
from unittest.mock import patch
77

88
from distutils import dir_util, errors
99
from distutils.dir_util import (mkpath, remove_tree, create_tree, copy_tree,
@@ -14,19 +14,6 @@
1414
from test.support import run_unittest
1515

1616

17-
@contextlib.context_manager
18-
def patch_obj(obj, attr, replacement):
19-
"""
20-
A poor man's mock.patch.object
21-
"""
22-
orig = getattr(obj, attr)
23-
try:
24-
setattr(obj, attr, replacement)
25-
yield
26-
finally:
27-
setattr(obj, attr, orig)
28-
29-
3017
class DirUtilTestCase(support.TempdirManager, unittest.TestCase):
3118

3219
def _log(self, msg, *args):
@@ -135,17 +122,13 @@ def test_ensure_relative(self):
135122
self.assertEqual(ensure_relative('c:\\home\\foo'), 'c:home\\foo')
136123
self.assertEqual(ensure_relative('home\\foo'), 'home\\foo')
137124

138-
def test_copy_tree_exception_in_listdir(self):
125+
@patch('os.listdir', side_effect=OSError())
126+
def test_copy_tree_exception_in_listdir(self, listdir):
139127
"""
140128
An exception in listdir should raise a DistutilsFileError
141129
"""
142-
def new_listdir(path):
143-
raise OSError()
144-
# simulate a transient network error or other failure invoking listdir
145-
with patch_obj(os, 'listdir', new_listdir):
146-
args = 'src', None
147-
exc = errors.DistutilsFileError
148-
self.assertRaises(exc, dir_util.copy_tree, *args)
130+
with self.assertRaises(errors.DistutilsFileError):
131+
dir_util.copy_tree('src', None)
149132

150133

151134
def test_suite():

0 commit comments

Comments
 (0)