[Python-checkins] cpython (3.4): #22315: Add test to capture the failure.

jason.coombs python-checkins at python.org
Mon Sep 1 00:02:55 CEST 2014


http://hg.python.org/cpython/rev/7304b9b95438
changeset: 92285:7304b9b95438
branch: 3.4
parent: 92283:c3cecf8e7497
user: Jason R. Coombs <jaraco at jaraco.com>
date: Sun Aug 31 15:02:42 2014 -0400
summary:
 #22315: Add test to capture the failure.
files:
 Lib/distutils/tests/test_dir_util.py | 29 ++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/Lib/distutils/tests/test_dir_util.py b/Lib/distutils/tests/test_dir_util.py
--- a/Lib/distutils/tests/test_dir_util.py
+++ b/Lib/distutils/tests/test_dir_util.py
@@ -3,7 +3,9 @@
 import os
 import stat
 import sys
+import contextlib
 
+from distutils import dir_util, errors
 from distutils.dir_util import (mkpath, remove_tree, create_tree, copy_tree,
 ensure_relative)
 
@@ -11,6 +13,20 @@
 from distutils.tests import support
 from test.support import run_unittest
 
+
+ at 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):
@@ -119,6 +135,19 @@
 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):
+ """
+ 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)
+
+
 def test_suite():
 return unittest.makeSuite(DirUtilTestCase)
 
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /