def cpp_info_name_cmake_find_package_test(self): """ Test cpp_info.names values are applied instead of the reference name """ conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(Settings({}), EnvValues()) ref = ConanFileReference.loads("my_pkg/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder1") cpp_info.name = "MyPkG" conanfile.deps_cpp_info.update(cpp_info, ref.name) ref = ConanFileReference.loads("my_pkg2/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder2") cpp_info.name = "MyPkG2" conanfile.deps_cpp_info.update(cpp_info, ref.name) generator = CMakeFindPackageGenerator(conanfile) content = generator.content self.assertIn("FindMyPkG.cmake", content.keys()) self.assertIn("FindMyPkG2.cmake", content.keys()) self.assertNotIn("my_pkg", content["FindMyPkG.cmake"]) self.assertNotIn("MY_PKG", content["FindMyPkG.cmake"]) self.assertNotIn("my_pkg", content["FindMyPkG2.cmake"]) self.assertNotIn("MY_PKG", content["FindMyPkG2.cmake"]) self.assertIn("add_library(MyPkG::MyPkG INTERFACE IMPORTED)", content["FindMyPkG.cmake"]) self.assertIn("add_library(MyPkG2::MyPkG2 INTERFACE IMPORTED)", content["FindMyPkG2.cmake"])
def variables_setup_test(self): conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(Settings({}), EnvValues()) ref = ConanFileReference.loads("MyPkg/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder1") cpp_info.name = ref.name cpp_info.defines = ["MYDEFINE1"] conanfile.deps_cpp_info.update(cpp_info, ref.name) ref = ConanFileReference.loads("MyPkg2/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder2") cpp_info.name = ref.name cpp_info.defines = ["MYDEFINE2"] conanfile.deps_cpp_info.update(cpp_info, ref.name) conanfile.deps_user_info["LIB1"].myvar = "myvalue" conanfile.deps_user_info["LIB1"].myvar2 = "myvalue2" conanfile.deps_user_info["lib2"].MYVAR2 = "myvalue4" generator = CMakeGenerator(conanfile) content = generator.content cmake_lines = content.splitlines() self.assertIn('set(CONAN_DEFINES_MYPKG "-DMYDEFINE1")', cmake_lines) self.assertIn('set(CONAN_DEFINES_MYPKG2 "-DMYDEFINE2")', cmake_lines) self.assertIn('set(CONAN_COMPILE_DEFINITIONS_MYPKG "MYDEFINE1")', cmake_lines) self.assertIn('set(CONAN_COMPILE_DEFINITIONS_MYPKG2 "MYDEFINE2")', cmake_lines) self.assertIn('set(CONAN_USER_LIB1_myvar "myvalue")', cmake_lines) self.assertIn('set(CONAN_USER_LIB1_myvar2 "myvalue2")', cmake_lines) self.assertIn('set(CONAN_USER_LIB2_MYVAR2 "myvalue4")', cmake_lines)
def multi_flag_test(self): conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(Settings({}), EnvValues()) ref = ConanFileReference.loads("MyPkg/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder1") cpp_info.name = ref.name cpp_info.includedirs.append("other_include_dir") cpp_info.cxxflags = [ "-DGTEST_USE_OWN_TR1_TUPLE=1", "-DGTEST_LINKED_AS_SHARED_LIBRARY=1" ] conanfile.deps_cpp_info.update(cpp_info, ref.name) ref = ConanFileReference.loads("MyPkg2/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder2") cpp_info.name = ref.name cpp_info.cflags = ["-DSOMEFLAG=1"] conanfile.deps_cpp_info.update(cpp_info, ref.name) generator = CMakeGenerator(conanfile) content = generator.content cmake_lines = content.splitlines() self.assertIn('set(CONAN_C_FLAGS_MYPKG2 "-DSOMEFLAG=1")', cmake_lines) self.assertIn( 'set(CONAN_CXX_FLAGS_MYPKG "-DGTEST_USE_OWN_TR1_TUPLE=1' ' -DGTEST_LINKED_AS_SHARED_LIBRARY=1")', cmake_lines) self.assertIn('set(CONAN_C_FLAGS "-DSOMEFLAG=1 ${CONAN_C_FLAGS}")', cmake_lines) self.assertIn( 'set(CONAN_CXX_FLAGS "-DGTEST_USE_OWN_TR1_TUPLE=1' ' -DGTEST_LINKED_AS_SHARED_LIBRARY=1 ${CONAN_CXX_FLAGS}")', cmake_lines)
def cpp_info_name_cmake_vars_test(self): """ Test cpp_info.names values are applied instead of the reference name """ conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(Settings({}), EnvValues()) ref = ConanFileReference.loads("my_pkg/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder1") cpp_info.name = "MyPkG" conanfile.deps_cpp_info.update(cpp_info, ref.name) ref = ConanFileReference.loads("my_pkg2/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder2") cpp_info.name = "MyPkG2" conanfile.deps_cpp_info.update(cpp_info, ref.name) generator = CMakeGenerator(conanfile) content = generator.content self.assertIn("set(CONAN_DEPENDENCIES my_pkg my_pkg2)", content) content = content.replace("set(CONAN_DEPENDENCIES my_pkg my_pkg2)", "") self.assertNotIn("my_pkg", content) self.assertNotIn("MY_PKG", content) self.assertIn('add_library(CONAN_PKG::MyPkG INTERFACE IMPORTED)', content) self.assertIn('add_library(CONAN_PKG::MyPkG2 INTERFACE IMPORTED)', content) self.assertNotIn('CONAN_PKG::my_pkg', content) self.assertNotIn('CONAN_PKG::my_pkg2', content)
def setUp(self): self.conanfile = ConanFile(Mock(), None) settings = _MockSettings(build_type="Debug") self.conanfile.initialize(settings, EnvValues()) ref = ConanFileReference.loads("my_pkg/0.1@lasote/stables") cpp_info = CppInfo(ref.name, "dummy_root_folder1") cpp_info.name = "MyPkG" self.conanfile.deps_cpp_info.add(ref.name, cpp_info) ref = ConanFileReference.loads("my_pkg2/0.1@lasote/stables") cpp_info = CppInfo(ref.name, "dummy_root_folder2") cpp_info.name = "MyPkG2" cpp_info.public_deps = ["my_pkg"] self.conanfile.deps_cpp_info.add(ref.name, cpp_info)
def setUp(self): self.conanfile = ConanFile(TestBufferConanOutput(), None) settings = _MockSettings() settings.build_type = "Debug" self.conanfile.initialize(settings, EnvValues()) ref = ConanFileReference.loads("my_pkg/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder1") cpp_info.name = "MyPkG" self.conanfile.deps_cpp_info.update(cpp_info, ref.name) ref = ConanFileReference.loads("my_pkg2/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder2") cpp_info.name = "MyPkG2" cpp_info.public_deps = ["my_pkg"] self.conanfile.deps_cpp_info.update(cpp_info, ref.name)
def apple_frameworks_test(self): settings = Settings.loads(default_settings_yml) settings.compiler = "apple-clang" settings.os = "Macos" conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(Settings({}), EnvValues()) conanfile.settings = settings ref = ConanFileReference.loads("MyPkg/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder1") cpp_info.name = ref.name cpp_info.frameworks = ['AudioUnit', 'AudioToolbox'] cpp_info.version = "1.3" cpp_info.description = "My cool description" conanfile.deps_cpp_info.update(cpp_info, ref.name) generator = PkgConfigGenerator(conanfile) files = generator.content self.assertEqual(files["MyPkg.pc"], """prefix=dummy_root_folder1 libdir=${prefix}/lib includedir=${prefix}/include Name: MyPkg Description: My cool description Version: 1.3 Libs: -L${libdir} -Wl,-rpath,"${libdir}" -framework AudioUnit -framework AudioToolbox Cflags: -I${includedir} """)
def apple_frameworks_test(self): settings = Settings.loads(default_settings_yml) settings.os = "Macos" settings.compiler = "apple-clang" settings.compiler.version = "9.1" settings.compiler.libcxx = "libc++" settings.arch = "x86_64" settings.build_type = "Debug" conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(Settings({}), EnvValues()) ref = ConanFileReference.loads("MyPkg/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder1") cpp_info.name = ref.name cpp_info.framework_paths.extend(["path/to/Frameworks1", "path/to/Frameworks2"]) cpp_info.frameworks = ["OpenGL", "OpenCL"] conanfile.deps_cpp_info.update(cpp_info, ref.name) conanfile.settings = settings generator = CMakeGenerator(conanfile) content = generator.content self.assertIn('find_library(CONAN_FRAMEWORK_${_FRAMEWORK}_FOUND NAME ${_FRAMEWORK} PATHS' ' ${CONAN_FRAMEWORK_DIRS})', content) self.assertIn('set(CONAN_FRAMEWORK_DIRS "path/to/Frameworks1"\n\t\t\t"path/to/Frameworks2" ' '${CONAN_FRAMEWORK_DIRS})', content) self.assertIn('set(CONAN_LIBS ${CONAN_PKG_LIBS} ${CONAN_SYSTEM_LIBS} ' '${CONAN_FRAMEWORKS_FOUND})', content) generator = CMakeFindPackageGenerator(conanfile) content = generator.content content = content['FindMyPkg.cmake'] self.assertIn('find_library(CONAN_FRAMEWORK_${_FRAMEWORK}_FOUND NAME ${_FRAMEWORK} PATHS' ' ${MyPkg_FRAMEWORK_DIRS})', content)
def cpp_info_name_test(self): folder = temp_folder() info = CppInfo(folder) info.name = "MyName" deps_cpp_info = DepsCppInfo() deps_cpp_info.update(info, "myname") self.assertIn("MyName", deps_cpp_info["myname"].name)
def cmake_vars_unit_test(self): settings = _MockSettings("Release") conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(settings, EnvValues()) tmp = temp_folder() cpp_info = CppInfo(tmp) cpp_info.name = "MyLib" custom_dir = os.path.join(tmp, "custom_build_dir") os.mkdir(custom_dir) cpp_info.builddirs.append(os.path.join(tmp, "custom_build_dir")) conanfile.deps_cpp_info.update(cpp_info, "MyLib") generator = CMakePathsGenerator(conanfile) path = tmp.replace('\\', '/') custom_dir = custom_dir.replace('\\', '/') cmake_lines = generator.content.replace('\\', '/').replace("\n\t\t\t", " ").splitlines() self.assertEqual('set(CONAN_MYLIB_ROOT "%s")' % path, cmake_lines[0]) self.assertEqual( 'set(CMAKE_MODULE_PATH "%s/" "%s" ${CMAKE_MODULE_PATH} ' '${CMAKE_CURRENT_LIST_DIR})' % (path, custom_dir), cmake_lines[1]) self.assertEqual( 'set(CMAKE_PREFIX_PATH "%s/" "%s" ${CMAKE_PREFIX_PATH} ' '${CMAKE_CURRENT_LIST_DIR})' % (path, custom_dir), cmake_lines[2])
def variables_setup_test(self): conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(Settings({}), EnvValues()) ref = ConanFileReference.loads("MyPkg/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder1") cpp_info.name = "my_pkg" cpp_info.defines = ["MYDEFINE1"] cpp_info.cflags.append("-Flag1=23") cpp_info.version = "1.3" cpp_info.description = "My cool description" conanfile.deps_cpp_info.update(cpp_info, ref.name) ref = ConanFileReference.loads("MyPkg2/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder2") cpp_info.name = ref.name cpp_info.defines = ["MYDEFINE2"] cpp_info.version = "2.3" cpp_info.exelinkflags = ["-exelinkflag"] cpp_info.sharedlinkflags = ["-sharedlinkflag"] cpp_info.cxxflags = ["-cxxflag"] cpp_info.public_deps = ["MyPkg"] conanfile.deps_cpp_info.update(cpp_info, ref.name) generator = PkgConfigGenerator(conanfile) files = generator.content self.assertEqual(files["MyPkg2.pc"], """prefix=dummy_root_folder2 libdir=${prefix}/lib includedir=${prefix}/include Name: MyPkg2 Description: Conan package: MyPkg2 Version: 2.3 Libs: -L${libdir} -sharedlinkflag -exelinkflag Cflags: -I${includedir} -cxxflag -DMYDEFINE2 Requires: MyPkg """) self.assertEqual(files["my_pkg.pc"], """prefix=dummy_root_folder1 libdir=${prefix}/lib includedir=${prefix}/include Name: my_pkg Description: My cool description Version: 1.3 Libs: -L${libdir} Cflags: -I${includedir} -Flag1=23 -DMYDEFINE1 """)
def setUp(self): settings_mock = _MockSettings(build_type="Release") self.conanfile = ConanFile(TestBufferConanOutput(), None) self.conanfile.initialize(settings_mock, EnvValues()) ref = ConanFileReference.loads("my_pkg/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder1") cpp_info.filter_empty = False # For testing purposes only cpp_info.name = ref.name cpp_info.build_modules = ["my-module.cmake"] self.conanfile.deps_cpp_info.update(cpp_info, ref.name) ref = ConanFileReference.loads("my_pkg2/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder2") cpp_info.filter_empty = False # For testing purposes only cpp_info.name = ref.name cpp_info.build_modules = ["other-mod.cmake", "not-a-cmake-module.pc"] cpp_info.release.build_modules = ["release-mod.cmake"] self.conanfile.deps_cpp_info.update(cpp_info, ref.name)
def cpp_info_name_test(self): folder = temp_folder() info = CppInfo("myname", folder) info.name = "MyName" info.names["my_generator"] = "MyNameForMyGenerator" deps_cpp_info = DepsCppInfo() deps_cpp_info.add("myname", DepCppInfo(info)) self.assertIn("MyName", deps_cpp_info["myname"].get_name("my_undefined_generator")) self.assertIn("MyNameForMyGenerator", deps_cpp_info["myname"].get_name("my_generator"))
def cppinfo_components_dirs_test(self): folder = temp_folder() info = CppInfo(folder) info.name = "OpenSSL" info.components["OpenSSL"].includedirs = ["include"] info.components["OpenSSL"].libdirs = ["lib"] info.components["OpenSSL"].builddirs = ["build"] info.components["OpenSSL"].bindirs = ["bin"] info.components["OpenSSL"].resdirs = ["res"] info.components["Crypto"].includedirs = ["headers"] info.components["Crypto"].libdirs = ["libraries"] info.components["Crypto"].builddirs = ["build_scripts"] info.components["Crypto"].bindirs = ["binaries"] info.components["Crypto"].resdirs = ["resources"] self.assertEqual(["include"], info.components["OpenSSL"].includedirs) self.assertEqual(["lib"], info.components["OpenSSL"].libdirs) self.assertEqual(["build"], info.components["OpenSSL"].builddirs) self.assertEqual(["bin"], info.components["OpenSSL"].bindirs) self.assertEqual(["res"], info.components["OpenSSL"].resdirs) self.assertEqual(["headers"], info.components["Crypto"].includedirs) self.assertEqual(["libraries"], info.components["Crypto"].libdirs) self.assertEqual(["build_scripts"], info.components["Crypto"].builddirs) self.assertEqual(["binaries"], info.components["Crypto"].bindirs) self.assertEqual(["resources"], info.components["Crypto"].resdirs) info.components["Crypto"].includedirs = ["different_include"] info.components["Crypto"].libdirs = ["different_lib"] info.components["Crypto"].builddirs = ["different_build"] info.components["Crypto"].bindirs = ["different_bin"] info.components["Crypto"].resdirs = ["different_res"] self.assertEqual(["different_include"], info.components["Crypto"].includedirs) self.assertEqual(["different_lib"], info.components["Crypto"].libdirs) self.assertEqual(["different_build"], info.components["Crypto"].builddirs) self.assertEqual(["different_bin"], info.components["Crypto"].bindirs) self.assertEqual(["different_res"], info.components["Crypto"].resdirs) info.components["Crypto"].includedirs.extend(["another_include"]) info.components["Crypto"].includedirs.append("another_other_include") info.components["Crypto"].libdirs.extend(["another_lib"]) info.components["Crypto"].libdirs.append("another_other_lib") info.components["Crypto"].builddirs.extend(["another_build"]) info.components["Crypto"].builddirs.append("another_other_build") info.components["Crypto"].bindirs.extend(["another_bin"]) info.components["Crypto"].bindirs.append("another_other_bin") info.components["Crypto"].resdirs.extend(["another_res"]) info.components["Crypto"].resdirs.append("another_other_res") self.assertEqual(["different_include", "another_include", "another_other_include"], info.components["Crypto"].includedirs) self.assertEqual(["different_lib", "another_lib", "another_other_lib"], info.components["Crypto"].libdirs) self.assertEqual(["different_build", "another_build", "another_other_build"], info.components["Crypto"].builddirs) self.assertEqual(["different_bin", "another_bin", "another_other_bin"], info.components["Crypto"].bindirs) self.assertEqual(["different_res", "another_res", "another_other_res"], info.components["Crypto"].resdirs)
def test_cpp_info_name(self): settings = _MockSettings("Release") conanfile = ConanFile(Mock(), None) conanfile.initialize(settings, EnvValues()) tmp = temp_folder() cpp_info = CppInfo("pkg_reference_name", tmp) cpp_info.name = "PkgCMakeName" conanfile.deps_cpp_info.add("pkg_reference_name", cpp_info) generator = CMakePathsGenerator(conanfile) self.assertIn('set(CONAN_PKGCMAKENAME_ROOT', generator.content)
def cpp_info_name_test(self): settings = _MockSettings("Release") conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(settings, EnvValues()) tmp = temp_folder() cpp_info = CppInfo(tmp) cpp_info.name = "PkgCMakeName" conanfile.deps_cpp_info.update(cpp_info, "pkg_reference_name") generator = CMakePathsGenerator(conanfile) self.assertIn('set(CONAN_PKGCMAKENAME_ROOT', generator.content)
def cpp_info_names_test(self): settings = _MockSettings("Release") conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(settings, EnvValues()) tmp = temp_folder() cpp_info = CppInfo("pkg_reference_name", tmp) cpp_info.name = "PkgCMakeName" cpp_info.names["cmake_paths"] = "MyCMakePathsPkgName" conanfile.deps_cpp_info.add("pkg_reference_name", cpp_info) generator = CMakePathsGenerator(conanfile) self.assertIn('set(CONAN_MYCMAKEPATHSPKGNAME_ROOT', generator.content)
def setUp(self): settings_mock = _MockSettings(build_type="Release") self.conanfile = ConanFile(Mock(), None) self.conanfile.initialize(settings_mock, EnvValues()) ref = ConanFileReference.loads("my_pkg/0.1@lasote/stables") cpp_info = CppInfo(ref.name, "dummy_root_folder1") cpp_info.filter_empty = False # For testing purposes only cpp_info.name = ref.name cpp_info.build_modules["cmake"] = ["my-module.cmake"] cpp_info.build_modules["cmake_multi"] = ["my-module.cmake"] cpp_info.build_modules["cmake_find_package"] = ["my-module.cmake"] cpp_info.build_modules["cmake_find_package_multi"] = [ "my-module.cmake" ] self.conanfile.deps_cpp_info.add(ref.name, cpp_info) ref = ConanFileReference.loads("my_pkg2/0.1@lasote/stables") cpp_info = CppInfo(ref.name, "dummy_root_folder2") cpp_info.filter_empty = False # For testing purposes only cpp_info.name = ref.name cpp_info.build_modules["cmake"] = [ "other-mod.cmake", "not-a-cmake-module.pc" ] cpp_info.build_modules["cmake_multi"] = [ "other-mod.cmake", "not-a-cmake-module.pc" ] cpp_info.build_modules["cmake_find_package"] = [ "other-mod.cmake", "not-a-cmake-module.pc" ] cpp_info.build_modules["cmake_find_package_multi"] = [ "other-mod.cmake", "not-a-cmake-module.pc" ] cpp_info.release.build_modules["cmake"] = ["release-mod.cmake"] cpp_info.release.build_modules["cmake_multi"] = ["release-mod.cmake"] cpp_info.release.build_modules["cmake_find_package"] = [ "release-mod.cmake" ] cpp_info.release.build_modules["cmake_find_package_multi"] = [ "release-mod.cmake" ] self.conanfile.deps_cpp_info.add(ref.name, cpp_info)
def setUp(self): self.conanfile = ConanFile(TestBufferConanOutput(), None) settings = _MockSettings() settings.build_type = "Debug" self.conanfile.initialize(settings, EnvValues()) ref = ConanFileReference.loads("my_pkg/0.1@lasote/stables") cpp_info = CppInfo(ref.name, "dummy_root_folder1") cpp_info.name = "MyPkG" cpp_info.names["cmake"] = "MyCMakeName" cpp_info.names["cmake_multi"] = "MyCMakeMultiName" cpp_info.names["cmake_find_package"] = "MyCMakeFindPackageName" cpp_info.names["cmake_find_package_multi"] = "MyCMakeFindPackageMultiName" self.conanfile.deps_cpp_info.add(ref.name, cpp_info) ref = ConanFileReference.loads("my_pkg2/0.1@lasote/stables") cpp_info = CppInfo(ref.name, "dummy_root_folder2") cpp_info.name = "MyPkG2" cpp_info.names["cmake"] = "MyCMakeName2" cpp_info.names["cmake_multi"] = "MyCMakeMultiName2" cpp_info.names["cmake_find_package"] = "MyCMakeFindPackageName2" cpp_info.names["cmake_find_package_multi"] = "MyCMakeFindPackageMultiName2" cpp_info.public_deps = ["my_pkg"] self.conanfile.deps_cpp_info.add(ref.name, cpp_info)
def cmake_find_package_multi_version_test(self): # https://github.com/conan-io/conan/issues/6908 settings_mock = _MockSettings(build_type="Debug") conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(settings_mock, EnvValues()) ref = ConanFileReference.loads("my_pkg/0.1@user/stable") cpp_info = CppInfo("") cpp_info.name = ref.name cpp_info.version = ref.version cpp_info.debug.libs = ["mylib"] conanfile.deps_cpp_info.update(cpp_info, ref.name) generator = CMakeFindPackageMultiGenerator(conanfile) content = generator.content config_version = content["my_pkgConfigVersion.cmake"] self.assertIn('set(PACKAGE_VERSION "0.1")', config_version)
def test_names_per_generator(self): cpp_info = CppInfo("pkg_name", "root") cpp_info.name = "name" cpp_info.names["txt"] = "txt_name" cpp_info.names["cmake_find_package"] = "SpecialName" cpp_info.filenames["cmake_find_package"] = "SpecialFileName" conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(Settings({}), EnvValues()) conanfile.deps_cpp_info.add("pkg_name", DepCppInfo(cpp_info)) content = TXTGenerator(conanfile).content parsed_deps_cpp_info, _, _, _ = TXTGenerator.loads(content, filter_empty=False) parsed_cpp_info = parsed_deps_cpp_info["pkg_name"] self.assertEqual(parsed_cpp_info.get_name("txt"), "txt_name") self.assertEqual(parsed_cpp_info.get_name("cmake_find_package"), "SpecialName") self.assertEqual(parsed_cpp_info.get_filename("cmake_find_package"), "SpecialFileName") self.assertEqual(parsed_cpp_info.get_name("pkg_config"), "pkg_name")
def escaped_flags_test(self): conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(Settings({}), EnvValues()) ref = ConanFileReference.loads("MyPkg/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder1") cpp_info.name = ref.name cpp_info.includedirs.append("other_include_dir") cpp_info.cxxflags = ["-load", r"C:\foo\bar.dll"] cpp_info.cflags = ["-load", r"C:\foo\bar2.dll"] cpp_info.defines = ['MY_DEF=My string', 'MY_DEF2=My other string'] conanfile.deps_cpp_info.update(cpp_info, ref.name) generator = CMakeGenerator(conanfile) content = generator.content cmake_lines = content.splitlines() self.assertIn(r'set(CONAN_C_FLAGS_MYPKG "-load C:\\foo\\bar2.dll")', cmake_lines) self.assertIn(r'set(CONAN_CXX_FLAGS_MYPKG "-load C:\\foo\\bar.dll")', cmake_lines) self.assertIn(r'set(CONAN_DEFINES_MYPKG "-DMY_DEF=My string"', cmake_lines) self.assertIn('\t\t\t"-DMY_DEF2=My other string")', cmake_lines)
def paths_cmake_multi_user_vars_test(self): settings_mock = _MockSettings(build_type="Release") conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(settings_mock, EnvValues()) ref = ConanFileReference.loads("MyPkg/0.1@lasote/stables") tmp_folder = temp_folder() save(os.path.join(tmp_folder, "lib", "mylib.lib"), "") save(os.path.join(tmp_folder, "include", "myheader.h"), "") cpp_info = CppInfo(tmp_folder) cpp_info.name = ref.name cpp_info.release.libs = ["hello"] cpp_info.debug.libs = ["hello_D"] conanfile.deps_cpp_info.update(cpp_info, ref.name) generator = CMakeMultiGenerator(conanfile) release = generator.content["conanbuildinfo_release.cmake"] release = release.replace(tmp_folder.replace("\\", "/"), "root_folder") cmake_lines = release.splitlines() self.assertIn('set(CONAN_INCLUDE_DIRS_MYPKG_RELEASE "root_folder/include")', cmake_lines) self.assertIn('set(CONAN_LIB_DIRS_MYPKG_RELEASE "root_folder/lib")', cmake_lines)
def pkg_config_custom_names_test(self): conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(Settings({}), EnvValues()) ref = ConanFileReference.loads("MyPkg/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder1") cpp_info.name = "my_pkg" cpp_info.names["pkg_config"] = "my_pkg_custom_name" cpp_info.defines = ["MYDEFINE1"] cpp_info.cflags.append("-Flag1=23") cpp_info.version = "1.3" cpp_info.description = "My cool description" conanfile.deps_cpp_info.update(cpp_info, ref.name) ref = ConanFileReference.loads("MyPkg1/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder1") cpp_info.name = "MYPKG1" cpp_info.names["pkg_config"] = "my_pkg1_custom_name" cpp_info.defines = ["MYDEFINE11"] cpp_info.cflags.append("-Flag1=21") cpp_info.version = "1.7" cpp_info.description = "My other cool description" conanfile.deps_cpp_info.update(cpp_info, ref.name) ref = ConanFileReference.loads("MyPkg2/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder2") cpp_info.name = ref.name cpp_info.names["pkg_config"] = "my_pkg2_custom_name" cpp_info.defines = ["MYDEFINE2"] cpp_info.version = "2.3" cpp_info.exelinkflags = ["-exelinkflag"] cpp_info.sharedlinkflags = ["-sharedlinkflag"] cpp_info.cxxflags = ["-cxxflag"] cpp_info.public_deps = ["MyPkg", "MyPkg1"] conanfile.deps_cpp_info.update(cpp_info, ref.name) ref = ConanFileReference.loads("zlib/1.2.11@lasote/stable") cpp_info = CppInfo("dummy_root_folder_zlib") cpp_info.name = "ZLIB" cpp_info.defines = ["MYZLIBDEFINE2"] cpp_info.version = "1.2.11" conanfile.deps_cpp_info.update(cpp_info, ref.name) ref = ConanFileReference.loads("bzip2/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder2") cpp_info.name = "BZip2" cpp_info.names["pkg_config"] = "BZip2" cpp_info.defines = ["MYDEFINE2"] cpp_info.version = "2.3" cpp_info.exelinkflags = ["-exelinkflag"] cpp_info.sharedlinkflags = ["-sharedlinkflag"] cpp_info.cxxflags = ["-cxxflag"] cpp_info.public_deps = ["MyPkg", "MyPkg1", "zlib"] conanfile.deps_cpp_info.update(cpp_info, ref.name) generator = PkgConfigGenerator(conanfile) files = generator.content self.assertEqual(files["my_pkg2_custom_name.pc"], """prefix=dummy_root_folder2 libdir=${prefix}/lib includedir=${prefix}/include Name: my_pkg2_custom_name Description: Conan package: my_pkg2_custom_name Version: 2.3 Libs: -L${libdir} -sharedlinkflag -exelinkflag Cflags: -I${includedir} -cxxflag -DMYDEFINE2 Requires: my_pkg_custom_name my_pkg1_custom_name """) self.assertEqual(files["my_pkg1_custom_name.pc"], """prefix=dummy_root_folder1 libdir=${prefix}/lib includedir=${prefix}/include Name: my_pkg1_custom_name Description: My other cool description Version: 1.7 Libs: -L${libdir} Cflags: -I${includedir} -Flag1=21 -DMYDEFINE11 """) self.assertEqual(files["my_pkg_custom_name.pc"], """prefix=dummy_root_folder1 libdir=${prefix}/lib includedir=${prefix}/include Name: my_pkg_custom_name Description: My cool description Version: 1.3 Libs: -L${libdir} Cflags: -I${includedir} -Flag1=23 -DMYDEFINE1 """) self.assertEqual(files["BZip2.pc"], """prefix=dummy_root_folder2 libdir=${prefix}/lib includedir=${prefix}/include Name: BZip2 Description: Conan package: BZip2 Version: 2.3 Libs: -L${libdir} -sharedlinkflag -exelinkflag Cflags: -I${includedir} -cxxflag -DMYDEFINE2 Requires: my_pkg_custom_name my_pkg1_custom_name zlib """)
def test_variables_setup(self): conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(Settings({}), EnvValues()) ref = ConanFileReference.loads("MyPkg/0.1@lasote/stables") cpp_info = CppInfo(ref.name, "/dummy_root_folder1") cpp_info.filter_empty = False cpp_info.name = "my_pkg" cpp_info.defines = ["MYDEFINE1"] cpp_info.cflags.append("-Flag1=23") cpp_info.version = "1.3" cpp_info.description = "My cool description" conanfile.deps_cpp_info.add(ref.name, cpp_info) ref = ConanFileReference.loads("MyPkg1/0.1@lasote/stables") cpp_info = CppInfo(ref.name, "/dummy_root_folder1") cpp_info.filter_empty = False cpp_info.name = "MYPKG1" cpp_info.defines = ["MYDEFINE11"] cpp_info.cflags.append("-Flag1=21") cpp_info.version = "1.7" cpp_info.description = "My other cool description" cpp_info.public_deps = ["MyPkg"] conanfile.deps_cpp_info.add(ref.name, cpp_info) ref = ConanFileReference.loads("MyPkg2/0.1@lasote/stables") cpp_info = CppInfo(ref.name, "/dummy_root_folder2") cpp_info.filter_empty = False cpp_info.defines = ["MYDEFINE2"] cpp_info.version = "2.3" cpp_info.exelinkflags = ["-exelinkflag"] cpp_info.sharedlinkflags = ["-sharedlinkflag"] cpp_info.cxxflags = ["-cxxflag"] cpp_info.public_deps = ["MyPkg"] conanfile.deps_cpp_info.add(ref.name, cpp_info) generator = PkgConfigGenerator(conanfile) files = generator.content self.assertEqual( files["MyPkg2.pc"], """prefix=/dummy_root_folder2 libdir=${prefix}/lib includedir=${prefix}/include Name: MyPkg2 Description: Conan package: MyPkg2 Version: 2.3 Libs: -L"${libdir}" -sharedlinkflag -exelinkflag Cflags: -I"${includedir}" -cxxflag -DMYDEFINE2 Requires: my_pkg """) self.assertEqual( files["mypkg1.pc"], """prefix=/dummy_root_folder1 libdir=${prefix}/lib includedir=${prefix}/include Name: mypkg1 Description: My other cool description Version: 1.7 Libs: -L"${libdir}" Cflags: -I"${includedir}" -Flag1=21 -DMYDEFINE11 Requires: my_pkg """) self.assertEqual( files["my_pkg.pc"], """prefix=/dummy_root_folder1 libdir=${prefix}/lib includedir=${prefix}/include Name: my_pkg Description: My cool description Version: 1.3 Libs: -L"${libdir}" Cflags: -I"${includedir}" -Flag1=23 -DMYDEFINE1 """)