def partial_build_test(self): conan_file = ConanFileMock() conan_file.settings = Settings() conan_file.should_configure = False conan_file.should_build = False conan_file.should_install = False cmake = CMake(conan_file, generator="Unix Makefiles") cmake.configure() self.assertIsNone(conan_file.command) cmake.build() self.assertIsNone(conan_file.command) cmake.install() self.assertIsNone(conan_file.command) conan_file.name = None cmake.patch_config_paths()
def test_cores_ancient_visual(self): settings = Settings.loads(default_settings_yml) settings.os = "Windows" settings.compiler = "Visual Studio" settings.compiler.version = "9" settings.compiler.runtime = "MDd" settings.arch = "x86" settings.build_type = None conan_file = ConanFileMock() conan_file.settings = settings cmake = CMake(conan_file) cmake.build() self.assertNotIn("/m", conan_file.command) settings.compiler.version = "10" cmake = CMake(conan_file) cmake.build() self.assertIn("/m", conan_file.command)
def should_flags_test(self): conanfile = ConanFileMock() conanfile.settings = Settings() conanfile.should_configure = False conanfile.should_build = True conanfile.should_install = False conanfile.should_test = True conanfile.package_folder = "pkg_folder" cmake = CMake(conanfile, generator="Unix Makefiles") cmake.configure() self.assertIsNone(conanfile.command) cmake.build() self.assertIn("cmake --build %s" % CMakeTest.scape(". -- -j%i" % cpu_count()), conanfile.command) cmake.install() self.assertNotIn("cmake --build %s" % CMakeTest.scape(". --target install -- -j%i" % cpu_count()), conanfile.command) cmake.test() self.assertIn("cmake --build %s" % CMakeTest.scape(". --target test -- -j%i" % cpu_count()), conanfile.command) conanfile.should_build = False cmake.configure() self.assertNotIn("cd . && cmake", conanfile.command) cmake.build() self.assertNotIn("cmake --build %s" % CMakeTest.scape(". -- -j%i" % cpu_count()), conanfile.command) cmake.install() self.assertNotIn("cmake --build %s" % CMakeTest.scape(". --target install -- -j%i" % cpu_count()), conanfile.command) cmake.test() self.assertIn("cmake --build %s" % CMakeTest.scape(". --target test -- -j%i" % cpu_count()), conanfile.command) conanfile.should_install = True conanfile.should_test = False cmake.configure() self.assertNotIn("cd . && cmake", conanfile.command) cmake.build() self.assertNotIn("cmake --build %s" % CMakeTest.scape(". -- -j%i" % cpu_count()), conanfile.command) cmake.install() self.assertIn("cmake --build %s" % CMakeTest.scape(". --target install -- -j%i" % cpu_count()), conanfile.command) cmake.test() self.assertNotIn("cmake --build %s" % CMakeTest.scape(". --target test -- -j%i" % cpu_count()), conanfile.command)
def convenient_functions_test(self): settings = Settings.loads(default_settings_yml) settings.os = "Android" settings.os_build = "Windows" # Here we are declaring we are cross building settings.compiler = "gcc" settings.compiler.version = "5.4" settings.arch = "armv7" settings.build_type = None if platform.system() == 'Windows': dot_dir = "." tempdir = self.tempdir else: dot_dir = "'.'" tempdir = "'" + self.tempdir + "'" conan_file = ConanFileMock() conan_file.settings = settings cmake = CMake(conan_file) cross = '-DCMAKE_SYSTEM_NAME="Android"' \ ' -DCMAKE_SYSROOT="/path/to/sysroot"' \ ' -DCMAKE_ANDROID_ARCH_ABI="armeabi-v7a"' target_test = CMakeTest.scape('--target test') cmake.configure() self.assertEqual( 'cd {0} && cmake -G "Unix Makefiles" ' '{1} -DCONAN_EXPORTED="1"' ' -DCONAN_COMPILER="gcc" -DCONAN_COMPILER_VERSION="5.4" ' '-Wno-dev {0}'.format(dot_dir, cross), conan_file.command) cmake.build() self.assertEqual( 'cmake --build %s %s' % (dot_dir, (CMakeTest.scape('-- -j%i' % cpu_count()))), conan_file.command) cmake.test() self.assertEqual( 'cmake --build %s %s %s' % (dot_dir, target_test, (CMakeTest.scape('-- -j%i' % cpu_count()))), conan_file.command) settings.build_type = "Debug" cmake = CMake(conan_file) cmake.build() self.assertEqual( 'cmake --build %s %s' % (dot_dir, (CMakeTest.scape('-- -j%i' % cpu_count()))), conan_file.command) cmake.test() self.assertEqual( 'cmake --build %s %s %s' % (dot_dir, target_test, (CMakeTest.scape('-- -j%i' % cpu_count()))), conan_file.command) cmake.configure(source_dir="/source", build_dir=self.tempdir, args=['--foo "bar"'], defs={"SHARED": True}) if sys.platform == 'win32': escaped_args = r'"--foo \"bar\"" -DSHARED="True" /source' else: escaped_args = "'--foo \"bar\"' -DSHARED=\"True\" '/source'" self.assertEqual( 'cd %s && cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Debug" ' '%s -DCONAN_EXPORTED="1" ' '-DCONAN_COMPILER="gcc" -DCONAN_COMPILER_VERSION="5.4" ' '-Wno-dev %s' % (tempdir, cross, escaped_args), conan_file.command) cmake.build(args=["--bar 'foo'"], target="install") if platform.system() == 'Windows': escaped_args = '--target install "--bar \'foo\'"' else: escaped_args = r"'--target' 'install' '--bar '\''foo'\'''" self.assertEqual( 'cmake --build %s %s %s' % (tempdir, escaped_args, (CMakeTest.scape('-- -j%i' % cpu_count()))), conan_file.command) cmake.test(args=["--bar 'foo'"]) if sys.platform == 'win32': escaped_args = '%s "--bar \'foo\'"' % target_test else: escaped_args = r"%s '--bar '\''foo'\'''" % target_test self.assertEqual( 'cmake --build %s %s %s' % (tempdir, escaped_args, (CMakeTest.scape('-- -j%i' % cpu_count()))), conan_file.command) settings.build_type = "Release" cmake = CMake(conan_file) cmake.build() self.assertEqual( 'cmake --build %s %s' % (dot_dir, (CMakeTest.scape('-- -j%i' % cpu_count()))), conan_file.command) cmake.test() self.assertEqual( 'cmake --build %s %s %s' % (dot_dir, target_test, (CMakeTest.scape('-- -j%i' % cpu_count()))), conan_file.command) cmake.build(build_dir=self.tempdir) self.assertEqual( 'cmake --build %s %s' % (tempdir, (CMakeTest.scape('-- -j%i' % cpu_count()))), conan_file.command) cmake.test(build_dir=self.tempdir) self.assertEqual( 'cmake --build %s %s %s' % (tempdir, target_test, (CMakeTest.scape('-- -j%i' % cpu_count()))), conan_file.command) settings.compiler = "gcc" settings.compiler.version = "5.4" cmake = CMake(conan_file) cmake.build() self.assertEqual( 'cmake --build %s' % (CMakeTest.scape('. -- -j%i' % cpu_count())), conan_file.command) cmake.test() self.assertEqual( 'cmake --build ' '%s' % (CMakeTest.scape('. --target test -- -j%i' % cpu_count())), conan_file.command) cmake.build(args=['foo', '--', 'bar']) self.assertEqual( 'cmake --build %s' % (CMakeTest.scape('. foo -- bar -j%i' % cpu_count())), conan_file.command) cmake.test(args=['foo', '--', 'bar']) self.assertEqual( 'cmake --build ' '%s' % (CMakeTest.scape('. --target test foo -- bar -j%i' % cpu_count())), conan_file.command) cmake = CMake(conan_file, parallel=False) cmake.build() self.assertEqual('cmake --build %s' % CMakeTest.scape('.'), conan_file.command) cmake.test() self.assertEqual( 'cmake --build %s' % CMakeTest.scape('. --target test'), conan_file.command)
def convenient_functions_test(self): settings = Settings.loads(default_settings_yml) settings.os = "Windows" settings.compiler = "Visual Studio" settings.compiler.version = "12" settings.compiler.runtime = "MDd" settings.arch = "x86" settings.build_type = None if sys.platform == 'win32': dot_dir = "." tempdir = self.tempdir else: dot_dir = "'.'" tempdir = "'" + self.tempdir + "'" conan_file = ConanFileMock() conan_file.settings = settings cmake = CMake(conan_file) cross = "-DCMAKE_SYSTEM_NAME=\"Windows\" -DCMAKE_SYSROOT=\"/path/to/sysroot\" " if platform.system() != "Windows" else "" target_test = CMakeTest.scape('--target RUN_TESTS') cmake.configure() cores = '-DCONAN_CXX_FLAGS="/MP{0}" -DCONAN_C_FLAGS="/MP{0}" '.format(tools.cpu_count()) self.assertEqual('cd {0} && cmake -G "Visual Studio 12 2013" -DCONAN_LINK_RUNTIME="/MDd" {1}-DCONAN_EXPORTED="1"' ' -DCONAN_COMPILER="Visual Studio" -DCONAN_COMPILER_VERSION="12" {2}' '-Wno-dev {0}'.format(dot_dir, cross, cores), conan_file.command) cmake.build() self.assertEqual('cmake --build %s %s' % (dot_dir, (CMakeTest.scape('-- /m:%i' % cpu_count()))), conan_file.command) cmake.test() self.assertEqual('cmake --build %s %s %s' % (dot_dir, target_test, (CMakeTest.scape('-- /m:%i' % cpu_count()))), conan_file.command) settings.build_type = "Debug" cmake = CMake(conan_file) cmake.build() self.assertEqual('cmake --build %s --config Debug %s' % (dot_dir,(CMakeTest.scape('-- /m:%i' % cpu_count()))), conan_file.command) cmake.test() self.assertEqual('cmake --build %s --config Debug %s %s' % (dot_dir, target_test, (CMakeTest.scape('-- /m:%i' % cpu_count()))), conan_file.command) cmake.configure(source_dir="/source", build_dir=self.tempdir, args=['--foo "bar"'], defs={"SHARED": True}) if sys.platform == 'win32': escaped_args = r'"--foo \"bar\"" -DSHARED="True" /source' else: escaped_args = "'--foo \"bar\"' -DSHARED=\"True\" '/source'" self.assertEqual('cd %s && cmake -G "Visual Studio 12 2013" -DCONAN_LINK_RUNTIME="/MDd" %s-DCONAN_EXPORTED="1" ' '-DCONAN_COMPILER="Visual Studio" -DCONAN_COMPILER_VERSION="12" %s' '-Wno-dev %s' % (tempdir, cross, cores, escaped_args), conan_file.command) cmake.build(args=["--bar 'foo'"], target="install") if sys.platform == 'win32': escaped_args = '--target install "--bar \'foo\'"' else: escaped_args = r"'--target' 'install' '--bar '\''foo'\'''" self.assertEqual('cmake --build %s --config Debug %s %s' % (tempdir, escaped_args, (CMakeTest.scape('-- /m:%i' % cpu_count()))), conan_file.command) cmake.test(args=["--bar 'foo'"]) if sys.platform == 'win32': escaped_args = '%s "--bar \'foo\'"' % target_test else: escaped_args = r"%s '--bar '\''foo'\'''" % target_test self.assertEqual('cmake --build %s --config Debug %s %s' % (tempdir, escaped_args, (CMakeTest.scape('-- /m:%i' % cpu_count()))), conan_file.command) settings.build_type = "Release" cmake = CMake(conan_file) cmake.build() self.assertEqual('cmake --build %s --config Release %s' % (dot_dir, (CMakeTest.scape('-- /m:%i' % cpu_count()))), conan_file.command) cmake.test() self.assertEqual('cmake --build %s --config Release %s %s' % (dot_dir, target_test, (CMakeTest.scape('-- /m:%i' % cpu_count()))), conan_file.command) cmake.build(build_dir=self.tempdir) self.assertEqual('cmake --build %s --config Release %s' % (tempdir, (CMakeTest.scape('-- /m:%i' % cpu_count()))), conan_file.command) cmake.test(build_dir=self.tempdir) self.assertEqual('cmake --build %s --config Release %s %s' % (tempdir, target_test, (CMakeTest.scape('-- /m:%i' % cpu_count()))), conan_file.command) settings.compiler = "gcc" settings.compiler.version = "5.4" cmake = CMake(conan_file) cmake.build() self.assertEqual('cmake --build %s' % (CMakeTest.scape('. -- -j%i' % cpu_count())), conan_file.command) cmake.test() self.assertEqual('cmake --build %s' % (CMakeTest.scape('. --target test -- -j%i' % cpu_count())), conan_file.command) cmake.build(args=['foo', '--', 'bar']) self.assertEqual('cmake --build %s' % (CMakeTest.scape('. foo -- bar -j%i' % cpu_count())), conan_file.command) cmake.test(args=['foo', '--', 'bar']) self.assertEqual('cmake --build %s' % (CMakeTest.scape('. --target test foo -- bar -j%i' % cpu_count())), conan_file.command) cmake = CMake(conan_file, parallel=False) cmake.build() self.assertEqual('cmake --build %s' % CMakeTest.scape('.'), conan_file.command) cmake.test() self.assertEqual('cmake --build %s' % CMakeTest.scape('. --target test'), conan_file.command)