12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- # -*- coding: utf-8 -*-
- """
- Tests for msvc support module (msvc14 unit tests).
- """
- import os
- from distutils.errors import DistutilsPlatformError
- import pytest
- import sys
- @pytest.mark.skipif(sys.platform != "win32",
- reason="These tests are only for win32")
- class TestMSVC14:
- """Python 3.8 "distutils/tests/test_msvccompiler.py" backport"""
- def test_no_compiler(self):
- import setuptools.msvc 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._msvc14_find_vcvarsall
- _msvccompiler._msvc14_find_vcvarsall = _find_vcvarsall
- try:
- pytest.raises(DistutilsPlatformError,
- _msvccompiler._msvc14_get_vc_env,
- 'wont find this version')
- finally:
- _msvccompiler._msvc14_find_vcvarsall = old_find_vcvarsall
- def test_get_vc_env_unicode(self):
- import setuptools.msvc as _msvccompiler
- test_var = 'ṰḖṤṪ┅ṼẨṜ'
- test_value = '₃⁴₅'
- # Ensure we don't early exit from _get_vc_env
- old_distutils_use_sdk = os.environ.pop('DISTUTILS_USE_SDK', None)
- os.environ[test_var] = test_value
- try:
- env = _msvccompiler._msvc14_get_vc_env('x86')
- assert test_var.lower() in env
- assert test_value == env[test_var.lower()]
- finally:
- os.environ.pop(test_var)
- if old_distutils_use_sdk:
- os.environ['DISTUTILS_USE_SDK'] = old_distutils_use_sdk
- def test_get_vc2017(self):
- import setuptools.msvc as _msvccompiler
- # This function cannot be mocked, so pass it if we find VS 2017
- # and mark it skipped if we do not.
- version, path = _msvccompiler._msvc14_find_vc2017()
- if os.environ.get('APPVEYOR_BUILD_WORKER_IMAGE', '') in [
- 'Visual Studio 2017'
- ]:
- assert version
- if version:
- assert version >= 15
- assert os.path.isdir(path)
- else:
- pytest.skip("VS 2017 is not installed")
- def test_get_vc2015(self):
- import setuptools.msvc as _msvccompiler
- # This function cannot be mocked, so pass it if we find VS 2015
- # and mark it skipped if we do not.
- version, path = _msvccompiler._msvc14_find_vc2015()
- if os.environ.get('APPVEYOR_BUILD_WORKER_IMAGE', '') in [
- 'Visual Studio 2015', 'Visual Studio 2017'
- ]:
- assert version
- if version:
- assert version >= 14
- assert os.path.isdir(path)
- else:
- pytest.skip("VS 2015 is not installed")
|