示例#1
0
 def test_mcst_lcc(self):
     runner = RunnerMock()
     runner.output = "#define __LCC__ 125\n" \
                     "#define __LCC_MINOR__ 6\n" \
                     "#define __e2k__ 1\n"
     compiler_id = detect_compiler_id("lcc", runner=runner)
     self.assertEqual(CompilerId(MCST_LCC, 1, 25, 6), compiler_id)
示例#2
0
 def test_bad_numbers(self):
     runner = RunnerMock()
     runner.output = "#define __GNUC__ A\n" \
                     "#define __GNUC_MINOR__ B\n" \
                     "#define __GNUC_PATCHLEVEL__ C\n"
     compiler_id = detect_compiler_id("gcc", runner=runner)
     self.assertEqual(UNKNOWN_COMPILER, compiler_id)
示例#3
0
 def test_gcc(self):
     runner = RunnerMock()
     runner.output = "#define __GNUC__ 7\n" \
                     "#define __GNUC_MINOR__ 3\n" \
                     "#define __GNUC_PATCHLEVEL__ 0\n"
     compiler_id = detect_compiler_id("gcc", runner=runner)
     self.assertEqual(CompilerId(GCC, 7, 3, 0), compiler_id)
示例#4
0
 def test_qcc(self):
     runner = RunnerMock()
     runner.output = "#define __QNX__ 1\n" \
                     "#define __GNUC__ 4\n" \
                     "#define __GNUC_MINOR__ 2\n" \
                     "#define __GNUC_PATCHLEVEL__ 4\n"
     compiler_id = detect_compiler_id("qcc", runner=runner)
     self.assertEqual(CompilerId(QCC, 4, 2, 4), compiler_id)
示例#5
0
 def test_intel(self):
     runner = RunnerMock()
     # Intel C++ may define __GNUC__ and _MSC_VER for compatibility
     runner.output = "#define _MSC_VER 1922\n" \
                     "#define __GNUC__ 4\n" \
                     "#define __GNUC_MINOR__ 1\n" \
                     "#define __GNUC_PATCHLEVEL__ 1\n" \
                     "#define __INTEL_COMPILER 1900\n" \
                     "#define __INTEL_COMPILER_UPDATE 3\n"
     compiler_id = detect_compiler_id("clang", runner=runner)
     self.assertEqual(CompilerId(INTEL, 19, 0, 3), compiler_id)
示例#6
0
 def test_apple_clang(self):
     runner = RunnerMock()
     runner.output = "#define __GNUC__ 4\n" \
                     "#define __GNUC_MINOR__ 1\n" \
                     "#define __GNUC_PATCHLEVEL__ 1\n" \
                     "#define __clang__ 1\n"\
                     "#define __clang_major__ 10\n" \
                     "#define __clang_minor__ 0\n" \
                     "#define __clang_patchlevel__ 1\n" \
                     "#define __apple_build_version__ 10010046\n"
     compiler_id = detect_compiler_id("clang", runner=runner)
     self.assertEqual(CompilerId(APPLE_CLANG, 10, 0, 1), compiler_id)
示例#7
0
 def test_clang(self):
     runner = RunnerMock()
     # clang defines __GNUC__ and may define _MSC_VER as well (on Windows)
     runner.output = "#define _MSC_VER 1922\n" \
                     "#define __GNUC__ 4\n" \
                     "#define __GNUC_MINOR__ 1\n" \
                     "#define __GNUC_PATCHLEVEL__ 1\n" \
                     "#define __clang__ 1\n"\
                     "#define __clang_major__ 9\n" \
                     "#define __clang_minor__ 0\n" \
                     "#define __clang_patchlevel__ 1\n"
     compiler_id = detect_compiler_id("clang", runner=runner)
     self.assertEqual(CompilerId(CLANG, 9, 0, 1), compiler_id)
示例#8
0
    def test_autotools_configure_vars(self):
        from mock import patch

        runner = RunnerMock()
        settings = MockSettings({"build_type": "Debug",
                                 "arch": "x86_64",
                                 "compiler": "gcc",
                                 "compiler.libcxx": "libstdc++"})
        conanfile = MockConanfile(settings, None, runner)
        conanfile.settings = settings
        self._set_deps_info(conanfile)

        def custom_configure(obj, configure_dir=None, args=None, build=None, host=None, target=None,
                             pkg_config_paths=None, vars=None):  # @UnusedVariable
            self.assertNotEqual(obj.vars, vars)
            return vars or obj.vars

        with patch.object(AutoToolsBuildEnvironment, 'configure', new=custom_configure):
            be = AutoToolsBuildEnvironment(conanfile)

            # Get vars and modify them
            my_vars = be.vars
            my_vars["fake_var"] = "fake"
            my_vars["super_fake_var"] = "fakefake"

            # TEST with default vars
            mocked_result = be.configure()
            self.assertEqual(mocked_result, be.vars)

            # TEST with custom vars
            mocked_result = be.configure(vars=my_vars)
            self.assertEqual(mocked_result, my_vars)
示例#9
0
    def test_cross_build_command(self):
        runner = RunnerMock()
        conanfile = MockConanfile(MockSettings({}), None, runner)
        ab = AutoToolsBuildEnvironment(conanfile)
        self.assertFalse(ab.build)
        self.assertFalse(ab.host)
        self.assertFalse(ab.target)

        ab.configure()
        self.assertEqual(runner.command_called, "./configure  ")

        ab.configure(host="x86_64-apple-darwin")
        self.assertEqual(runner.command_called, "./configure  --host=x86_64-apple-darwin")

        ab.configure(build="arm-apple-darwin")
        self.assertEqual(runner.command_called, "./configure  --build=arm-apple-darwin")

        ab.configure(target="i686-apple-darwin")
        self.assertEqual(runner.command_called, "./configure  --target=i686-apple-darwin")

        conanfile = MockConanfile(MockSettings({"build_type": "Debug",
                                                "arch": "x86_64",
                                                "os": "Windows",
                                                "compiler": "gcc",
                                                "compiler.libcxx": "libstdc++"}),
                                  None, runner)
        ab = AutoToolsBuildEnvironment(conanfile)
        ab.configure()
        if platform.system() == "Windows":
            # Not crossbuilding
            self.assertFalse(ab.host)
            self.assertFalse(ab.build)
            self.assertIn("./configure", runner.command_called)
            self.assertNotIn("--build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32",
                             runner.command_called)
        elif platform.system() == "Linux":
            self.assertIn("x86_64-w64-mingw32", ab.host)
            self.assertIn("x86_64-linux-gnu", ab.build)
            self.assertIn("./configure  --build=x86_64-linux-gnu --host=x86_64-w64-mingw32",
                          runner.command_called)
        else:
            self.assertIn("x86_64-w64-mingw32", ab.host)
            self.assertIn("x86_64-apple-darwin", ab.build)
            self.assertIn("./configure  --build=x86_64-apple-darwin --host=x86_64-w64-mingw32",
                          runner.command_called)

        ab.configure(build="fake_build_triplet", host="fake_host_triplet")
        self.assertIn("./configure  --build=fake_build_triplet --host=fake_host_triplet",
                      runner.command_called)

        ab.build = "superfake_build_triplet"
        ab.host = "superfake_host_triplet"
        ab.configure()
        self.assertIn("./configure  --build=superfake_build_triplet --host=superfake_host_triplet",
                      runner.command_called)
示例#10
0
    def test_make_targets_install(self):
        runner = RunnerMock()
        conanfile = MockConanfile(MockSettings({}), None, runner)

        ab = AutoToolsBuildEnvironment(conanfile)
        ab.configure()

        ab.make(target="install")
        self.assertEqual(runner.command_called, "make install -j%s" %
                          cpu_count(output=conanfile.output))
        ab.install()
        self.assertEqual(runner.command_called, "make install -j%s" %
                          cpu_count(output=conanfile.output))
示例#11
0
    def test_opensuse_zypper_aptitude(self):
        # https://github.com/conan-io/conan/issues/8737
        os_info = OSInfo()
        os_info.is_linux = True
        os_info.is_solaris = False
        os_info.is_macos = False
        os_info.is_windows = False
        os_info.linux_distro = "opensuse"
        runner = RunnerMock()

        with tools.environment_append({"CONAN_SYSREQUIRES_SUDO": "False"}):
            spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "zypper --non-interactive ref")
示例#12
0
 def verify_update_test(self):
     # https://github.com/conan-io/conan/issues/3142
     with tools.environment_append({"CONAN_SYSREQUIRES_SUDO": "False",
                                    "CONAN_SYSREQUIRES_MODE": "Verify"}):
         runner = RunnerMock()
         # fake os info to linux debian, default sudo
         os_info = OSInfo()
         os_info.is_macos = False
         os_info.is_linux = True
         os_info.is_windows = False
         os_info.linux_distro = "debian"
         spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out)
         spt.update()
         self.assertEqual(runner.command_called, None)
         self.assertIn('Not updating system_requirements. CONAN_SYSREQUIRES_MODE=verify',
                       self.out)
示例#13
0
    def test_mocked_methods(self):

        runner = RunnerMock()
        conanfile = MockConanfile(MockSettings({}), None, runner)
        ab = AutoToolsBuildEnvironment(conanfile)
        ab.make(make_program="othermake")
        self.assertEqual(runner.command_called, "othermake -j%s" %
                          cpu_count(output=conanfile.output))

        with tools.environment_append({"CONAN_MAKE_PROGRAM": "mymake"}):
            ab.make(make_program="othermake")
            self.assertEqual(runner.command_called, "mymake -j%s" %
                              cpu_count(output=conanfile.output))

        ab.make(args=["things"])
        things = "'things'" if platform.system() != "Windows" else "things"
        self.assertEqual(runner.command_called, "make %s -j%s" %
                          (things, cpu_count(output=conanfile.output)))
示例#14
0
    def system_package_tool_fail_when_not_0_returned_test(self):
        def get_linux_error_message():
            """
            Get error message for Linux platform if distro is supported, None otherwise
            """
            os_info = OSInfo()
            update_command = None
            if os_info.with_apt:
                update_command = "sudo -A apt-get update"
            elif os_info.with_yum:
                update_command = "sudo -A yum check-update -y"
            elif os_info.with_dnf:
                update_command = "sudo -A dnf check-update -y"
            elif os_info.with_zypper:
                update_command = "sudo -A zypper --non-interactive ref"
            elif os_info.with_pacman:
                update_command = "sudo -A pacman -Syyu --noconfirm"

            return ("Command '{0}' failed".format(update_command)
                    if update_command is not None else None)

        platform_update_error_msg = {
            "Linux":
            get_linux_error_message(),
            "Darwin":
            "Command 'brew update' failed",
            "Windows":
            "Command 'choco outdated' failed" if which("choco.exe") else None,
        }

        runner = RunnerMock(return_ok=False)
        output = ConanOutput(StringIO())
        pkg_tool = ChocolateyTool(
            output=output) if which("choco.exe") else None
        spt = SystemPackageTool(runner=runner, tool=pkg_tool, output=output)

        msg = platform_update_error_msg.get(platform.system(), None)
        if msg is not None:
            with six.assertRaisesRegex(self, ConanException, msg):
                spt.update()
        else:
            spt.update()  # Won't raise anything because won't do anything
示例#15
0
def test_configure_arguments():
    tmp = temp_folder()
    os.chdir(tmp)
    save_toolchain_args({
        "configure_args": "my_configure_args",
        "make_args": "my_make_args"
    })
    runner = RunnerMock()
    conanfile = ConanFile(Mock(), runner=runner)
    conanfile.settings = MockSettings({})
    conanfile.folders.set_base_install(tmp)
    conanfile.folders.set_base_source(tmp)
    conanfile.conf = Conf()
    conanfile.conf["tools.gnu:make_program"] = "my_make"
    conanfile.conf["tools.build:jobs"] = "23"
    ab = Autotools(conanfile)
    ab.configure()
    assert "configure my_configure_args" in runner.command_called

    ab = Autotools(conanfile)
    ab.make()
    assert "my_make my_make_args -j23" in runner.command_called
示例#16
0
 def test_no_output(self):
     compiler_id = detect_compiler_id("gcc", runner=RunnerMock())
     self.assertEqual(UNKNOWN_COMPILER, compiler_id)
示例#17
0
    def system_package_tool_test(self, patched_with_apt):

        with tools.environment_append({"CONAN_SYSREQUIRES_SUDO": "True"}):
            runner = RunnerMock()
            # fake os info to linux debian, default sudo
            os_info = OSInfo()
            os_info.is_macos = False
            os_info.is_linux = True
            os_info.is_windows = False
            patched_with_apt.return_value = True

            os_info.linux_distro = "debian"

            spt = SystemPackageTool(runner=runner,
                                    os_info=os_info,
                                    output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "sudo -A apt-get update")

            os_info.linux_distro = "ubuntu"
            spt = SystemPackageTool(runner=runner,
                                    os_info=os_info,
                                    output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "sudo -A apt-get update")

            os_info.linux_distro = "knoppix"
            spt = SystemPackageTool(runner=runner,
                                    os_info=os_info,
                                    output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "sudo -A apt-get update")

            os_info.linux_distro = "neon"
            spt = SystemPackageTool(runner=runner,
                                    os_info=os_info,
                                    output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "sudo -A apt-get update")

            # We'll be testing non-Ubuntu and non-Debian-based distros.
            patched_with_apt.return_value = False

            with mock.patch("conans.client.tools.oss.which",
                            return_value=True):
                os_info.linux_distro = "fedora"
                spt = SystemPackageTool(runner=runner,
                                        os_info=os_info,
                                        output=self.out)
                spt.update()
                self.assertEqual(runner.command_called,
                                 "sudo -A dnf check-update -y")

            # Without DNF in the path,
            os_info.linux_distro = "fedora"
            spt = SystemPackageTool(runner=runner,
                                    os_info=os_info,
                                    output=self.out)
            spt.update()
            self.assertEqual(runner.command_called,
                             "sudo -A yum check-update -y")

            os_info.linux_distro = "opensuse"
            spt = SystemPackageTool(runner=runner,
                                    os_info=os_info,
                                    output=self.out)
            spt.update()
            self.assertEqual(runner.command_called,
                             "sudo -A zypper --non-interactive ref")

            os_info.linux_distro = "redhat"
            spt = SystemPackageTool(runner=runner,
                                    os_info=os_info,
                                    output=self.out)
            spt.install("a_package", force=False)
            self.assertEqual(runner.command_called, "rpm -q a_package")
            spt.install("a_package", force=True)
            self.assertEqual(runner.command_called,
                             "sudo -A yum install -y a_package")

            settings = MockSettings({
                "arch": "x86",
                "arch_build": "x86_64",
                "os": "Linux",
                "os_build": "Linux"
            })
            conanfile = MockConanfile(settings)
            spt = SystemPackageTool(runner=runner,
                                    os_info=os_info,
                                    output=self.out,
                                    conanfile=conanfile)
            spt.install("a_package", force=False)
            self.assertEqual(runner.command_called, "rpm -q a_package.i?86")
            spt.install("a_package", force=True)
            self.assertEqual(runner.command_called,
                             "sudo -A yum install -y a_package.i?86")

            os_info.linux_distro = "debian"
            patched_with_apt.return_value = True
            spt = SystemPackageTool(runner=runner,
                                    os_info=os_info,
                                    output=self.out)
            with self.assertRaises(ConanException):
                runner.return_ok = False
                spt.install("a_package")
                self.assertEqual(
                    runner.command_called,
                    "sudo -A apt-get install -y --no-install-recommends a_package"
                )

            runner.return_ok = True
            spt.install("a_package", force=False)
            self.assertEqual(
                runner.command_called,
                'dpkg-query -W -f=\'${Status}\' a_package | grep -q "ok installed"'
            )

            os_info.is_macos = True
            os_info.is_linux = False
            os_info.is_windows = False
            patched_with_apt.return_value = False

            spt = SystemPackageTool(runner=runner,
                                    os_info=os_info,
                                    output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "brew update")
            spt.install("a_package", force=True)
            self.assertEqual(runner.command_called, "brew install a_package")

            os_info.is_freebsd = True
            os_info.is_macos = False
            patched_with_apt.return_value = False

            spt = SystemPackageTool(runner=runner,
                                    os_info=os_info,
                                    output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "sudo -A pkg update")
            spt.install("a_package", force=True)
            self.assertEqual(runner.command_called,
                             "sudo -A pkg install -y a_package")
            spt.install("a_package", force=False)
            self.assertEqual(runner.command_called, "pkg info a_package")

            # Chocolatey is an optional package manager on Windows
            if platform.system() == "Windows" and which("choco.exe"):
                os_info.is_freebsd = False
                os_info.is_windows = True
                patched_with_apt.return_value = False
                spt = SystemPackageTool(runner=runner,
                                        os_info=os_info,
                                        output=self.out,
                                        tool=ChocolateyTool(output=self.out))
                spt.update()
                self.assertEqual(runner.command_called, "choco outdated")
                spt.install("a_package", force=True)
                self.assertEqual(runner.command_called,
                                 "choco install --yes a_package")
                spt.install("a_package", force=False)
                self.assertEqual(
                    runner.command_called,
                    'choco search --local-only --exact a_package | '
                    'findstr /c:"1 packages installed."')

        with tools.environment_append({"CONAN_SYSREQUIRES_SUDO": "False"}):

            os_info = OSInfo()
            os_info.is_linux = True
            os_info.linux_distro = "redhat"
            patched_with_apt.return_value = False

            spt = SystemPackageTool(runner=runner,
                                    os_info=os_info,
                                    output=self.out)
            spt.install("a_package", force=True)
            self.assertEqual(runner.command_called, "yum install -y a_package")
            spt.update()
            self.assertEqual(runner.command_called, "yum check-update -y")

            os_info.linux_distro = "ubuntu"
            patched_with_apt.return_value = True
            spt = SystemPackageTool(runner=runner,
                                    os_info=os_info,
                                    output=self.out)
            spt.install("a_package", force=True)
            self.assertEqual(
                runner.command_called,
                "apt-get install -y --no-install-recommends a_package")

            spt.update()
            self.assertEqual(runner.command_called, "apt-get update")

            for arch, distro_arch in {
                    "x86_64": "",
                    "x86": ":i386",
                    "ppc32": ":powerpc",
                    "ppc64le": ":ppc64el",
                    "armv7": ":arm",
                    "armv7hf": ":armhf",
                    "armv8": ":arm64",
                    "s390x": ":s390x"
            }.items():
                settings = MockSettings({
                    "arch": arch,
                    "arch_build": "x86_64",
                    "os": "Linux",
                    "os_build": "Linux"
                })
                conanfile = MockConanfile(settings)
                spt = SystemPackageTool(runner=runner,
                                        os_info=os_info,
                                        output=self.out,
                                        conanfile=conanfile)
                spt.install("a_package", force=True)
                self.assertEqual(
                    runner.command_called,
                    "apt-get install -y --no-install-recommends a_package%s" %
                    distro_arch)

            for arch, distro_arch in {"x86_64": "", "x86": ":all"}.items():
                settings = MockSettings({
                    "arch": arch,
                    "arch_build": "x86_64",
                    "os": "Linux",
                    "os_build": "Linux"
                })
                conanfile = MockConanfile(settings)
                spt = SystemPackageTool(runner=runner,
                                        os_info=os_info,
                                        output=self.out,
                                        conanfile=conanfile)
                spt.install("a_package", force=True, arch_names={"x86": "all"})
                self.assertEqual(
                    runner.command_called,
                    "apt-get install -y --no-install-recommends a_package%s" %
                    distro_arch)

            os_info.is_macos = True
            os_info.is_linux = False
            os_info.is_windows = False
            patched_with_apt.return_value = False
            spt = SystemPackageTool(runner=runner,
                                    os_info=os_info,
                                    output=self.out)

            spt.update()
            self.assertEqual(runner.command_called, "brew update")
            spt.install("a_package", force=True)
            self.assertEqual(runner.command_called, "brew install a_package")

            os_info.is_freebsd = True
            os_info.is_macos = False
            os_info.is_windows = False
            patched_with_apt.return_value = False

            spt = SystemPackageTool(runner=runner,
                                    os_info=os_info,
                                    output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "pkg update")
            spt.install("a_package", force=True)
            self.assertEqual(runner.command_called, "pkg install -y a_package")
            spt.install("a_package", force=False)
            self.assertEqual(runner.command_called, "pkg info a_package")

            os_info.is_solaris = True
            os_info.is_freebsd = False
            os_info.is_windows = False
            patched_with_apt.return_value = False

            spt = SystemPackageTool(runner=runner,
                                    os_info=os_info,
                                    output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "pkgutil --catalog")
            spt.install("a_package", force=True)
            self.assertEqual(runner.command_called,
                             "pkgutil --install --yes a_package")

        with tools.environment_append({"CONAN_SYSREQUIRES_SUDO": "True"}):

            # Chocolatey is an optional package manager on Windows
            if platform.system() == "Windows" and which("choco.exe"):
                os_info.is_solaris = False
                os_info.is_windows = True
                patched_with_apt.return_value = False

                spt = SystemPackageTool(runner=runner,
                                        os_info=os_info,
                                        output=self.out,
                                        tool=ChocolateyTool(output=self.out))
                spt.update()
                self.assertEqual(runner.command_called, "choco outdated")
                spt.install("a_package", force=True)
                self.assertEqual(runner.command_called,
                                 "choco install --yes a_package")
                spt.install("a_package", force=False)
                self.assertEqual(
                    runner.command_called,
                    'choco search --local-only --exact a_package | '
                    'findstr /c:"1 packages installed."')
示例#18
0
 def test_suncc(self):
     runner = RunnerMock()
     runner.output = "#define __SUNPRO_CC 0x450\n"
     compiler_id = detect_compiler_id("suncc", runner=runner)
     self.assertEqual(CompilerId(SUNCC, 4, 5, 0), compiler_id)
示例#19
0
    def system_package_tool_test(self):

        with tools.environment_append({"CONAN_SYSREQUIRES_SUDO": "True"}):
            runner = RunnerMock()
            # fake os info to linux debian, default sudo
            os_info = OSInfo()
            os_info.is_macos = False
            os_info.is_linux = True
            os_info.is_windows = False
            os_info.linux_distro = "debian"

            spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "sudo -A apt-get update")

            os_info.linux_distro = "ubuntu"
            spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "sudo -A apt-get update")

            os_info.linux_distro = "knoppix"
            spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "sudo -A apt-get update")

            os_info.linux_distro = "neon"
            spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "sudo -A apt-get update")

            os_info.linux_distro = "fedora"
            spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "sudo -A yum update -y")

            os_info.linux_distro = "opensuse"
            spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "sudo -A zypper --non-interactive ref")

            os_info.linux_distro = "redhat"
            spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out)
            spt.install("a_package", force=False)
            self.assertEqual(runner.command_called, "rpm -q a_package")
            spt.install("a_package", force=True)
            self.assertEqual(runner.command_called, "sudo -A yum install -y a_package")

            os_info.linux_distro = "debian"
            spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out)
            with self.assertRaises(ConanException):
                runner.return_ok = False
                spt.install("a_package")
                self.assertEqual(runner.command_called,
                                 "sudo -A apt-get install -y --no-install-recommends a_package")

            runner.return_ok = True
            spt.install("a_package", force=False)
            self.assertEqual(runner.command_called,
                             'dpkg-query -W -f=\'${Status}\' a_package | grep -q "ok installed"')

            os_info.is_macos = True
            os_info.is_linux = False
            os_info.is_windows = False

            spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "brew update")
            spt.install("a_package", force=True)
            self.assertEqual(runner.command_called, "brew install a_package")

            os_info.is_freebsd = True
            os_info.is_macos = False

            spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "sudo -A pkg update")
            spt.install("a_package", force=True)
            self.assertEqual(runner.command_called, "sudo -A pkg install -y a_package")
            spt.install("a_package", force=False)
            self.assertEqual(runner.command_called, "pkg info a_package")

            # Chocolatey is an optional package manager on Windows
            if platform.system() == "Windows" and which("choco.exe"):
                os_info.is_freebsd = False
                os_info.is_windows = True
                spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out,
                                        tool=ChocolateyTool(output=self.out))
                spt.update()
                self.assertEqual(runner.command_called, "choco outdated")
                spt.install("a_package", force=True)
                self.assertEqual(runner.command_called, "choco install --yes a_package")
                spt.install("a_package", force=False)
                self.assertEqual(runner.command_called,
                                 'choco search --local-only --exact a_package | '
                                 'findstr /c:"1 packages installed."')

        with tools.environment_append({"CONAN_SYSREQUIRES_SUDO": "False"}):

            os_info = OSInfo()
            os_info.is_linux = True
            os_info.linux_distro = "redhat"
            spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out)
            spt.install("a_package", force=True)
            self.assertEqual(runner.command_called, "yum install -y a_package")
            spt.update()
            self.assertEqual(runner.command_called, "yum update -y")

            os_info.linux_distro = "ubuntu"
            spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out)
            spt.install("a_package", force=True)
            self.assertEqual(runner.command_called,
                             "apt-get install -y --no-install-recommends a_package")

            spt.update()
            self.assertEqual(runner.command_called, "apt-get update")

            os_info.is_macos = True
            os_info.is_linux = False
            os_info.is_windows = False
            spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out)

            spt.update()
            self.assertEqual(runner.command_called, "brew update")
            spt.install("a_package", force=True)
            self.assertEqual(runner.command_called, "brew install a_package")

            os_info.is_freebsd = True
            os_info.is_macos = False
            os_info.is_windows = False

            spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "pkg update")
            spt.install("a_package", force=True)
            self.assertEqual(runner.command_called, "pkg install -y a_package")
            spt.install("a_package", force=False)
            self.assertEqual(runner.command_called, "pkg info a_package")

            os_info.is_solaris = True
            os_info.is_freebsd = False
            os_info.is_windows = False

            spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out)
            spt.update()
            self.assertEqual(runner.command_called, "pkgutil --catalog")
            spt.install("a_package", force=True)
            self.assertEqual(runner.command_called, "pkgutil --install --yes a_package")

        with tools.environment_append({"CONAN_SYSREQUIRES_SUDO": "True"}):

            # Chocolatey is an optional package manager on Windows
            if platform.system() == "Windows" and which("choco.exe"):
                os_info.is_solaris = False
                os_info.is_windows = True

                spt = SystemPackageTool(runner=runner, os_info=os_info, output=self.out,
                                        tool=ChocolateyTool(output=self.out))
                spt.update()
                self.assertEqual(runner.command_called, "choco outdated")
                spt.install("a_package", force=True)
                self.assertEqual(runner.command_called, "choco install --yes a_package")
                spt.install("a_package", force=False)
                self.assertEqual(runner.command_called,
                                 'choco search --local-only --exact a_package | '
                                 'findstr /c:"1 packages installed."')
示例#20
0
 def test_msvc(self, line, major, minor, patch):
     runner = RunnerMock()
     runner.output = line
     compiler_id = detect_compiler_id("cl", runner=runner)
     self.assertEqual(CompilerId(MSVC, major, minor, patch), compiler_id)
示例#21
0
 def test_msvc(self):
     runner = RunnerMock()
     runner.output = "MSC_CMD_FLAGS=-D_MSC_VER=1930"
     compiler_id = detect_compiler_id("cl", runner=runner)
     self.assertEqual(CompilerId(MSVC, 19, 30, 0), compiler_id)
示例#22
0
 def test_incomplete(self):
     runner = RunnerMock()
     runner.output = "#define __GNUC__ 7"
     compiler_id = detect_compiler_id("gcc", runner=runner)
     self.assertEqual(UNKNOWN_COMPILER, compiler_id)
示例#23
0
 def test_bad_output(self):
     runner = RunnerMock()
     runner.output = "#define UNKNOWN 1"
     compiler_id = detect_compiler_id("gcc", runner=runner)
     self.assertEqual(UNKNOWN_COMPILER, compiler_id)
示例#24
0
 def test_visual_studio(self, line, major, minor, patch):
     runner = RunnerMock()
     runner.output = line
     compiler_id = detect_compiler_id("cl", runner=runner)
     self.assertEqual(CompilerId(VISUAL_STUDIO, major, minor, patch), compiler_id)