Commit 01c5f817 authored by Jason R. Coombs's avatar Jason R. Coombs

Merge with 3.4; Closes #22315

parents 0f619116 01dbd70d
...@@ -125,12 +125,11 @@ def copy_tree(src, dst, preserve_mode=1, preserve_times=1, ...@@ -125,12 +125,11 @@ def copy_tree(src, dst, preserve_mode=1, preserve_times=1,
try: try:
names = os.listdir(src) names = os.listdir(src)
except OSError as e: except OSError as e:
(errno, errstr) = e
if dry_run: if dry_run:
names = [] names = []
else: else:
raise DistutilsFileError( raise DistutilsFileError(
"error listing files in '%s': %s" % (src, errstr)) "error listing files in '%s': %s" % (src, e.strerror))
if not dry_run: if not dry_run:
mkpath(dst, verbose=verbose) mkpath(dst, verbose=verbose)
......
...@@ -3,7 +3,9 @@ import unittest ...@@ -3,7 +3,9 @@ import unittest
import os import os
import stat import stat
import sys import sys
from unittest.mock import patch
from distutils import dir_util, errors
from distutils.dir_util import (mkpath, remove_tree, create_tree, copy_tree, from distutils.dir_util import (mkpath, remove_tree, create_tree, copy_tree,
ensure_relative) ensure_relative)
...@@ -11,6 +13,7 @@ from distutils import log ...@@ -11,6 +13,7 @@ from distutils import log
from distutils.tests import support from distutils.tests import support
from test.support import run_unittest from test.support import run_unittest
class DirUtilTestCase(support.TempdirManager, unittest.TestCase): class DirUtilTestCase(support.TempdirManager, unittest.TestCase):
def _log(self, msg, *args): def _log(self, msg, *args):
...@@ -119,6 +122,16 @@ class DirUtilTestCase(support.TempdirManager, unittest.TestCase): ...@@ -119,6 +122,16 @@ class DirUtilTestCase(support.TempdirManager, unittest.TestCase):
self.assertEqual(ensure_relative('c:\\home\\foo'), 'c:home\\foo') self.assertEqual(ensure_relative('c:\\home\\foo'), 'c:home\\foo')
self.assertEqual(ensure_relative('home\\foo'), 'home\\foo') self.assertEqual(ensure_relative('home\\foo'), 'home\\foo')
@patch('os.listdir', side_effect=OSError())
def test_copy_tree_exception_in_listdir(self, listdir):
"""
An exception in listdir should raise a DistutilsFileError
"""
with self.assertRaises(errors.DistutilsFileError):
src = self.tempdirs[-1]
dir_util.copy_tree(src, None)
def test_suite(): def test_suite():
return unittest.makeSuite(DirUtilTestCase) return unittest.makeSuite(DirUtilTestCase)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment