def vcvars_echo_test(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_vcvars_filter_known_paths(self): 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" with tools.environment_append({"PATH": ["custom_path", "WindowsFake"]}): tmp = tools.vcvars_dict(settings, only_diff=False, filter_known_paths=True, output=self.output) with tools.environment_append(tmp): self.assertNotIn("custom_path", os.environ["PATH"]) self.assertIn("WindowsFake", os.environ["PATH"]) tmp = tools.vcvars_dict(settings, only_diff=False, filter_known_paths=False, output=self.output) with tools.environment_append(tmp): self.assertIn("custom_path", os.environ["PATH"]) self.assertIn("WindowsFake", os.environ["PATH"])
def test_vcvars_env_not_duplicated_path(self): """vcvars is not looking at the current values of the env vars, with PATH it is a problem because you can already have set some of the vars and accumulate unnecessary entries.""" 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" # Set the env with a PATH containing the vcvars paths tmp = tools.vcvars_dict(settings, only_diff=False, output=self.output) tmp = {key.lower(): value for key, value in tmp.items()} with tools.environment_append({"path": tmp["path"]}): previous_path = os.environ["PATH"].split(";") # Duplicate the path, inside the tools.vcvars shouldn't have repeated entries in PATH with tools.vcvars(settings, output=self.output): path = os.environ["PATH"].split(";") values_count = {value: path.count(value) for value in path} for value, counter in values_count.items(): if value and (counter > 1) and previous_path.count(value) != counter: # If the entry was already repeated before calling "tools.vcvars" we keep it self.fail("The key '%s' has been repeated" % value)
def test_apple_cmake_osx_sysroot(os, os_sdk, arch, expected_sdk): """ Testing if CMAKE_OSX_SYSROOT is correctly set. Issue related: https://github.com/conan-io/conan/issues/10275 """ c = ConanFile(Mock(), None) c.settings = "os", "compiler", "build_type", "arch" c.initialize(Settings.loads(get_default_settings_yml()), EnvValues()) c.settings.os = os c.settings.os.sdk = os_sdk c.settings.build_type = "Release" c.settings.arch = arch c.settings.compiler = "apple-clang" c.settings.compiler.version = "13.0" c.settings.compiler.libcxx = "libc++" c.settings.compiler.cppstd = "17" c.conf = Conf() c.folders.set_base_generators(".") c._conan_node = Mock() c._conan_node.dependencies = [] toolchain = CMakeToolchain(c) content = toolchain.content assert 'set(CMAKE_OSX_SYSROOT %s CACHE STRING "" FORCE)' % expected_sdk in content
def test_apple_cmake_osx_sysroot_sdk_mandatory(os, os_sdk, arch, expected_sdk): """ Testing if CMAKE_OSX_SYSROOT is correctly set. Issue related: https://github.com/conan-io/conan/issues/10275 """ c = ConanFile(Mock(), None) c.settings = "os", "compiler", "build_type", "arch" c.initialize(Settings.loads(get_default_settings_yml()), EnvValues()) c.settings.os = os c.settings.os.sdk = os_sdk c.settings.build_type = "Release" c.settings.arch = arch c.settings.compiler = "apple-clang" c.settings.compiler.version = "13.0" c.settings.compiler.libcxx = "libc++" c.settings.compiler.cppstd = "17" c.conf = Conf() c.folders.set_base_generators(".") c._conan_node = Mock() c._conan_node.dependencies = [] with pytest.raises(ConanException) as excinfo: CMakeToolchain(c).content() assert "Please, specify a suitable value for os.sdk." % expected_sdk in str(excinfo.value)
def setUp(self): self.settings = Settings.loads(get_default_settings_yml()) self.settings.compiler = "Visual Studio"
def test_bas_os(self): settings = Settings.loads(get_default_settings_yml()) settings.os = "SunOS" with self.assertRaises(ConanException): compilervars_command(MockConanfile(settings))
def test_already_set(self): with environment_append({"PSTLROOT": "1"}): settings = Settings.loads(get_default_settings_yml()) cvars = compilervars_command(MockConanfile(settings)) self.assertEqual("echo Conan:compilervars already set", cvars)
def setUp(self): self.settings = Settings.loads(default_settings_yml) self.settings.compiler = "intel" self.settings.compiler.base = "Visual Studio"
def setup(self): self.settings = Settings.loads(get_default_settings_yml()) self.settings.compiler = "msvc"