Fixed #4702: Throwing DistutilsPlatformError instead of IOError under win32 if MSVC is not found

This commit is contained in:
Tarek Ziadé 2008-12-30 23:03:41 +00:00
parent 3bcb0ce922
commit b1a85413b1
3 changed files with 38 additions and 2 deletions

View File

@ -247,7 +247,7 @@ def query_vcvarsall(version, arch="x86"):
result = {}
if vcvarsall is None:
raise IOError("Unable to find vcvarsall.bat")
raise DistutilsPlatformError("Unable to find vcvarsall.bat")
log.debug("Calling 'vcvarsall.bat %s' (version=%s)", arch, version)
popen = subprocess.Popen('"%s" %s & set' % (vcvarsall, arch),
stdout=subprocess.PIPE,
@ -255,7 +255,7 @@ def query_vcvarsall(version, arch="x86"):
stdout, stderr = popen.communicate()
if popen.wait() != 0:
raise IOError(stderr.decode("mbcs"))
raise DistutilsPlatformError(stderr.decode("mbcs"))
stdout = stdout.decode("mbcs")
for line in stdout.split("\n"):

View File

@ -0,0 +1,33 @@
"""Tests for distutils.msvc9compiler."""
import sys
import unittest
from distutils.errors import DistutilsPlatformError
class msvc9compilerTestCase(unittest.TestCase):
def test_no_compiler(self):
# makes sure query_vcvarsall throws
# a DistutilsPlatformError if the compiler
# is not found
if sys.platform != 'win32':
# this test is only for win32
return
from distutils.msvc9compiler import query_vcvarsall
def _find_vcvarsall(version):
return None
from distutils import msvc9compiler
old_find_vcvarsall = msvc9compiler.find_vcvarsall
msvc9compiler.find_vcvarsall = _find_vcvarsall
try:
self.assertRaises(DistutilsPlatformError, query_vcvarsall,
'wont find this version')
finally:
msvc9compiler.find_vcvarsall = old_find_vcvarsall
def test_suite():
return unittest.makeSuite(msvc9compilerTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")

View File

@ -100,6 +100,9 @@ Core and Builtins
Library
-------
- Issue #4702: Throwing a DistutilsPlatformError instead of IOError in case
no MSVC compiler is found under Windows. Original patch by Philip Jenvey.
- Issue #4646: distutils was choking on empty options arg in the setup
function. Original patch by Thomas Heller.