Пример #1
0
 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()
Пример #2
0
    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)
Пример #3
0
 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)
Пример #4
0
    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)
Пример #5
0
    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)