def test_arch(self): settings = Settings.loads(get_default_settings_yml()) settings.compiler = 'Visual Studio' settings.compiler.version = '14' settings.arch = 'x86' self.assert_vcvars_command(settings, "x86") with environment_append({"PreferredToolArchitecture": "x64"}): self.assert_vcvars_command(settings, "amd64_x86") settings.arch = 'x86_64' self.assert_vcvars_command(settings, "amd64") settings.arch = 'armv7' self.assert_vcvars_command(settings, "amd64_arm") settings.arch = 'armv8' self.assert_vcvars_command(settings, "amd64_arm64") settings.arch = 'mips' with self.assertRaises(ConanException): tools.vcvars_command(settings, output=self.output) settings.arch_build = 'x86_64' settings.arch = 'x86' self.assert_vcvars_command(settings, "amd64_x86")
def test_invalid(self): if platform.system() != "Windows": return fake_settings_yml = """ os: WindowsStore: version: ["666"] arch: [x86] compiler: Visual Studio: runtime: [MD, MT, MTd, MDd] version: ["8", "9", "10", "11", "12", "14", "15"] build_type: [None, Debug, Release] """ settings = Settings.loads(fake_settings_yml) settings.compiler = 'Visual Studio' settings.compiler.version = '14' settings.arch = 'x86' settings.os = 'WindowsStore' settings.os.version = '666' with self.assertRaises(ConanException): tools.vcvars_command(settings, output=self.output)
def test_vcvars_with_store_echo(self): settings = Settings.loads(get_default_settings_yml()) settings.os = "WindowsStore" settings.os.version = "8.1" settings.compiler = "Visual Studio" settings.compiler.version = "14" cmd = tools.vcvars_command(settings, output=self.output) self.assertIn("store 8.1", cmd) with tools.environment_append({"VisualStudioVersion": "14"}): cmd = tools.vcvars_command(settings, output=self.output) self.assertEqual("echo Conan:vcvars already set", cmd)
def test_arch_override(self): settings = Settings.loads(get_default_settings_yml()) settings.compiler = 'Visual Studio' settings.compiler.version = '14' settings.arch = 'mips64' self.assert_vcvars_command(settings, "x86", arch='x86') self.assert_vcvars_command(settings, "amd64", arch='x86_64') self.assert_vcvars_command(settings, "amd64_arm", arch='armv7') self.assert_vcvars_command(settings, "amd64_arm64", arch='armv8') with self.assertRaises(ConanException): tools.vcvars_command(settings, arch='mips', output=self.output)
def test_vcvars_constrained(self): new_out = StringIO() output = ConanOutput(new_out) text = """os: [Windows] compiler: Visual Studio: version: ["14"] """ settings = Settings.loads(text) settings.os = "Windows" settings.compiler = "Visual Studio" with six.assertRaisesRegex( self, ConanException, "compiler.version setting required for vcvars not defined"): tools.vcvars_command(settings, output=output) new_out = StringIO() output = ConanOutput(new_out) settings.compiler.version = "14" with tools.environment_append({"vs140comntools": "path/to/fake"}): tools.vcvars_command(settings, output=output) with tools.environment_append({"VisualStudioVersion": "12"}): with six.assertRaisesRegex( self, ConanException, "Error, Visual environment already set to 12"): tools.vcvars_command(settings, output=output) with tools.environment_append({"VisualStudioVersion": "12"}): # Not raising tools.vcvars_command(settings, force=True, output=output)
def test_vcvars_amd64_32_cross_building_support(self): # amd64_x86 crossbuilder settings = Settings.loads(get_default_settings_yml()) settings.os = "Windows" settings.compiler = "Visual Studio" settings.compiler.version = "15" settings.arch = "x86" settings.arch_build = "x86_64" cmd = tools.vcvars_command(settings, output=self.output) self.assertIn('vcvarsall.bat" amd64_x86', cmd) # It follows arch_build first settings.arch_build = "x86" cmd = tools.vcvars_command(settings, output=self.output) self.assertIn('vcvarsall.bat" x86', cmd)
def test_vcvars_ver_override(self): settings = Settings.loads(default_settings_yml) settings.compiler = 'Visual Studio' settings.compiler.version = '15' settings.arch = 'x86_64' command = tools.vcvars_command(settings, vcvars_ver='14.14') self.assertIn('vcvarsall.bat', command) self.assertIn('-vcvars_ver=14.14', command) settings.compiler.version = '14' command = tools.vcvars_command(settings, vcvars_ver='14.14') self.assertIn('vcvarsall.bat', command) self.assertIn('-vcvars_ver=14.14', command)
def test_winsdk_version_override(self): settings = Settings.loads(default_settings_yml) settings.compiler = 'Visual Studio' settings.compiler.version = '15' settings.arch = 'x86_64' command = tools.vcvars_command(settings, winsdk_version='8.1', output=self.output) self.assertIn('vcvarsall.bat', command) self.assertIn('8.1', command) settings.compiler.version = '14' command = tools.vcvars_command(settings, winsdk_version='8.1', output=self.output) self.assertIn('vcvarsall.bat', command) self.assertIn('8.1', command)
def vcvars_raises_when_not_found_test(self): text = """ os: [Windows] compiler: Visual Studio: version: ["5"] """ settings = Settings.loads(text) settings.os = "Windows" settings.compiler = "Visual Studio" settings.compiler.version = "5" with six.assertRaisesRegex(self, ConanException, "VS non-existing installation: Visual Studio 5"): output = ConanOutput(StringIO()) tools.vcvars_command(settings, output=output)
def assert_vcvars_command(self, settings, expected, output=None, **kwargs): output = output or self.output command = tools.vcvars_command(settings, output=output, **kwargs) command = command.replace('"', '').replace("'", "") self.assertTrue(command.endswith('vcvarsall.bat %s' % expected), msg="'{}' doesn't end with 'vcvarsall.bat {}'".format( command, expected))
def test_vcvars_echo(self): settings = Settings.loads(get_default_settings_yml()) settings.os = "Windows" settings.compiler = "Visual Studio" settings.compiler.version = "14" cmd = tools.vcvars_command(settings, output=self.output) output = TestBufferConanOutput() runner = ConanRunner(print_commands_to_output=True, output=output) runner(cmd + " && set vs140comntools") self.assertIn("vcvarsall.bat", str(output)) self.assertIn("VS140COMNTOOLS=", str(output)) with tools.environment_append({"VisualStudioVersion": "14"}): output = TestBufferConanOutput() runner = ConanRunner(print_commands_to_output=True, output=output) cmd = tools.vcvars_command(settings, output=self.output) runner(cmd + " && set vs140comntools") self.assertNotIn("vcvarsall.bat", str(output)) self.assertIn("Conan:vcvars already set", str(output)) self.assertIn("VS140COMNTOOLS=", str(output))
def test_81(self): settings = Settings.loads(get_default_settings_yml()) settings.compiler = 'Visual Studio' settings.compiler.version = '14' settings.arch = 'x86' settings.os = 'WindowsStore' settings.os.version = '8.1' command = tools.vcvars_command(settings, output=self.output) self.assertIn('vcvarsall.bat', command) self.assertIn('x86', command) self.assertIn('store', command) self.assertIn('8.1', command)
def test_10_custom_winsdk(self): settings = Settings.loads(get_default_settings_yml()) settings.compiler = 'Visual Studio' settings.compiler.version = '14' settings.arch = 'x86' settings.os = 'WindowsStore' settings.os.version = '10.0' sdk_version = '10.0.18362.0' command = tools.vcvars_command(settings, winsdk_version=sdk_version, output=self.output) self.assertIn('vcvarsall.bat', command) self.assertIn('x86', command) self.assertIn('store', command) self.assertIn(sdk_version, command)
def test_81(self): if platform.system() != "Windows": return settings = Settings.loads(default_settings_yml) settings.compiler = 'Visual Studio' settings.compiler.version = '14' settings.arch = 'x86' settings.os = 'WindowsStore' settings.os.version = '8.1' command = tools.vcvars_command(settings, output=self.output) self.assertIn('vcvarsall.bat', command) self.assertIn('x86', command) self.assertIn('store', command) self.assertIn('8.1', command)
def test_10(self): sdk_version = tools.find_windows_10_sdk() if not sdk_version: return settings = Settings.loads(get_default_settings_yml()) settings.compiler = 'Visual Studio' settings.compiler.version = '14' settings.arch = 'x86' settings.os = 'WindowsStore' settings.os.version = '10.0' command = tools.vcvars_command(settings, output=self.output) self.assertIn('vcvarsall.bat', command) self.assertIn('x86', command) self.assertIn('store', command) self.assertIn(sdk_version, command)
def test_10(self): if platform.system() != "Windows": return sdk_version = tools.find_windows_10_sdk() if not sdk_version: return settings = Settings.loads(default_settings_yml) settings.compiler = 'Visual Studio' settings.compiler.version = '14' settings.arch = 'x86' settings.os = 'WindowsStore' settings.os.version = '10.0' command = tools.vcvars_command(settings) self.assertIn('vcvarsall.bat', command) self.assertIn('x86', command) self.assertIn('store', command) self.assertIn(sdk_version, command)
def assert_vcvars_command(self, settings, expected, **kwargs): command = tools.vcvars_command(settings, **kwargs) command = command.replace('"', '').replace("'", "") self.assertTrue(command.endswith('vcvarsall.bat %s' % expected))
def _append_vs_if_needed(self, command): if self._compiler == "Visual Studio" and self.backend == "ninja": command = "%s && %s" % (tools.vcvars_command( self._conanfile.settings), command) return command