123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- """Tests for distutils._msvccompiler."""
- import sys
- import unittest
- import os
- from distutils.errors import DistutilsPlatformError
- from distutils.tests import support
- from test.support import run_unittest
- SKIP_MESSAGE = (None if sys.platform == "win32" else
- "These tests are only for win32")
- @unittest.skipUnless(SKIP_MESSAGE is None, SKIP_MESSAGE)
- class msvccompilerTestCase(support.TempdirManager,
- unittest.TestCase):
- def test_no_compiler(self):
- import distutils._msvccompiler as _msvccompiler
- # makes sure query_vcvarsall raises
- # a DistutilsPlatformError if the compiler
- # is not found
- def _find_vcvarsall(plat_spec):
- return None, None
- old_find_vcvarsall = _msvccompiler._find_vcvarsall
- _msvccompiler._find_vcvarsall = _find_vcvarsall
- try:
- self.assertRaises(DistutilsPlatformError,
- _msvccompiler._get_vc_env,
- 'wont find this version')
- finally:
- _msvccompiler._find_vcvarsall = old_find_vcvarsall
- def test_compiler_options(self):
- import distutils._msvccompiler as _msvccompiler
- # suppress path to vcruntime from _find_vcvarsall to
- # check that /MT is added to compile options
- old_find_vcvarsall = _msvccompiler._find_vcvarsall
- def _find_vcvarsall(plat_spec):
- return old_find_vcvarsall(plat_spec)[0], None
- _msvccompiler._find_vcvarsall = _find_vcvarsall
- try:
- compiler = _msvccompiler.MSVCCompiler()
- compiler.initialize()
- self.assertIn('/MT', compiler.compile_options)
- self.assertNotIn('/MD', compiler.compile_options)
- finally:
- _msvccompiler._find_vcvarsall = old_find_vcvarsall
- def test_vcruntime_copy(self):
- import distutils._msvccompiler as _msvccompiler
- # force path to a known file - it doesn't matter
- # what we copy as long as its name is not in
- # _msvccompiler._BUNDLED_DLLS
- old_find_vcvarsall = _msvccompiler._find_vcvarsall
- def _find_vcvarsall(plat_spec):
- return old_find_vcvarsall(plat_spec)[0], __file__
- _msvccompiler._find_vcvarsall = _find_vcvarsall
- try:
- tempdir = self.mkdtemp()
- compiler = _msvccompiler.MSVCCompiler()
- compiler.initialize()
- compiler._copy_vcruntime(tempdir)
- self.assertTrue(os.path.isfile(os.path.join(
- tempdir, os.path.basename(__file__))))
- finally:
- _msvccompiler._find_vcvarsall = old_find_vcvarsall
- def test_vcruntime_skip_copy(self):
- import distutils._msvccompiler as _msvccompiler
- tempdir = self.mkdtemp()
- compiler = _msvccompiler.MSVCCompiler()
- compiler.initialize()
- dll = compiler._vcruntime_redist
- self.assertTrue(os.path.isfile(dll))
- compiler._copy_vcruntime(tempdir)
- self.assertFalse(os.path.isfile(os.path.join(
- tempdir, os.path.basename(dll))))
- def test_suite():
- return unittest.makeSuite(msvccompilerTestCase)
- if __name__ == "__main__":
- run_unittest(test_suite())
|