summaryrefslogtreecommitdiff
path: root/SCons/Tool/MSCommon/MSVC/ScriptArgumentsTests.py
diff options
context:
space:
mode:
Diffstat (limited to 'SCons/Tool/MSCommon/MSVC/ScriptArgumentsTests.py')
-rw-r--r--SCons/Tool/MSCommon/MSVC/ScriptArgumentsTests.py66
1 files changed, 39 insertions, 27 deletions
diff --git a/SCons/Tool/MSCommon/MSVC/ScriptArgumentsTests.py b/SCons/Tool/MSCommon/MSVC/ScriptArgumentsTests.py
index 90a76c2fe..f3884d255 100644
--- a/SCons/Tool/MSCommon/MSVC/ScriptArgumentsTests.py
+++ b/SCons/Tool/MSCommon/MSVC/ScriptArgumentsTests.py
@@ -45,43 +45,55 @@ def Environment(**kwargs):
del kwargs[tools_key]
return SCons.Environment.Base(tools=tools, **kwargs)
-class ScriptArgumentsTests(unittest.TestCase):
+class Data:
# all versions
- _all_versions_list = []
+ ALL_VERSIONS_PAIRS = []
# installed versions
- _vcdir_list = []
-
- @classmethod
- def setUpClass(cls):
- for vcver in Config.MSVC_VERSION_SUFFIX.keys():
- version_def = Util.msvc_version_components(vcver)
- vc_dir = vc.find_vc_pdir(None, vcver)
- t = (version_def, vc_dir)
- cls._all_versions_list.append(t)
- if vc_dir:
- cls._vcdir_list.append(t)
-
- def setUp(self):
- self.all_versions_list = self.__class__._all_versions_list
- self.vcdir_list = self.__class__._vcdir_list
+ INSTALLED_VERSIONS_PAIRS = []
+
+ for vcver in Config.MSVC_VERSION_SUFFIX.keys():
+ version_def = Util.msvc_version_components(vcver)
+ vc_dir = vc.find_vc_pdir(None, vcver)
+ t = (version_def, vc_dir)
+ ALL_VERSIONS_PAIRS.append(t)
+ if vc_dir:
+ INSTALLED_VERSIONS_PAIRS.append(t)
+
+class Patch:
+
+ class Config:
+
+ class MSVC_SDK_VERSIONS:
+
+ MSVC_SDK_VERSIONS = Config.MSVC_SDK_VERSIONS
+
+ @classmethod
+ def enable_copy(cls):
+ hook = set(cls.MSVC_SDK_VERSIONS)
+ Config.MSVC_SDK_VERSIONS = hook
+ return hook
+
+ @classmethod
+ def restore(cls):
+ Config.MSVC_SDK_VERSIONS = cls.MSVC_SDK_VERSIONS
+
+class ScriptArgumentsTests(unittest.TestCase):
def test_verify(self):
- _MSVC_SDK_VERSIONS = Config.MSVC_SDK_VERSIONS
- msvc_sdk_versions = set(Config.MSVC_SDK_VERSIONS)
- msvc_sdk_versions.add('99.0')
- Config.MSVC_SDK_VERSIONS = msvc_sdk_versions
+ MSVC_SDK_VERSIONS = Patch.Config.MSVC_SDK_VERSIONS.enable_copy()
+ MSVC_SDK_VERSIONS.add('99.0')
with self.assertRaises(MSVCInternalError):
ScriptArguments.verify()
- Config.MSVC_SDK_VERSIONS = _MSVC_SDK_VERSIONS
+ Patch.Config.MSVC_SDK_VERSIONS.restore()
def test_msvc_script_arguments_defaults(self):
- env = Environment()
func = ScriptArguments.msvc_script_arguments
+ env = Environment()
# disable forcing sdk and toolset versions as arguments
force = ScriptArguments.msvc_force_default_arguments(force=False)
- for version_def, vc_dir in self.vcdir_list:
+ for version_def, vc_dir in Data.INSTALLED_VERSIONS_PAIRS:
for arg in ('', 'arch'):
scriptargs = func(env, version_def.msvc_version, vc_dir, arg)
self.assertTrue(scriptargs == arg, "{}({},{}) != {} [force=False]".format(
@@ -89,7 +101,7 @@ class ScriptArgumentsTests(unittest.TestCase):
))
# enable forcing sdk and toolset versions as arguments
force = ScriptArguments.msvc_force_default_arguments(force=True)
- for version_def, vc_dir in self.vcdir_list:
+ for version_def, vc_dir in Data.INSTALLED_VERSIONS_PAIRS:
scriptargs = func(env, version_def.msvc_version, vc_dir, '')
for arg in ('', 'arch'):
scriptargs = func(env, version_def.msvc_version, vc_dir, arg)
@@ -110,7 +122,7 @@ class ScriptArgumentsTests(unittest.TestCase):
def test_msvc_toolset_versions_internal(self):
func = ScriptArguments._msvc_toolset_versions_internal
- for version_def, vc_dir in self.vcdir_list:
+ for version_def, vc_dir in Data.INSTALLED_VERSIONS_PAIRS:
for full in (True, False):
for sxs in (True, False):
toolset_versions = func(version_def.msvc_version, vc_dir, full=full, sxs=sxs)
@@ -133,7 +145,7 @@ class ScriptArgumentsTests(unittest.TestCase):
def test_msvc_toolset_internal(self):
func = ScriptArguments._msvc_toolset_internal
- for version_def, vc_dir in self.vcdir_list:
+ for version_def, vc_dir in Data.INSTALLED_VERSIONS_PAIRS:
toolset_versions = ScriptArguments._msvc_toolset_versions_internal(version_def.msvc_version, vc_dir, full=True, sxs=True)
if not toolset_versions:
continue