Skip to content

Commit

Permalink
Make option --askpass compatible with sudo version 1.8.7 or older. (#…
Browse files Browse the repository at this point in the history
…3885)

* fix Travis CI branch regex

* test Python 3.7 on Travis CI

* 1.10.0-dev

* make option --askpass compatible with sudo version 1.8.7 or older.

* Update .travis.yml

Revert to master branch

* Update Jenkinsfile

* Update .travis.yml

* Update __init__.py
  • Loading branch information
yangcha authored and lasote committed Oct 31, 2018
1 parent b25ac83 commit 6f397ba
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 23 deletions.
2 changes: 1 addition & 1 deletion conans/client/tools/system_pm.py
Expand Up @@ -25,7 +25,7 @@ def _get_sudo_str():
return ""

if hasattr(sys.stdout, "isatty") and not sys.stdout.isatty():
return "sudo --askpass "
return "sudo -A "
else:
return "sudo "

Expand Down
44 changes: 22 additions & 22 deletions conans/test/util/tools_test.py
Expand Up @@ -56,7 +56,7 @@ def test_sudo_tty(self):

with tools.environment_append({"CONAN_SYSREQUIRES_SUDO": "True"}):
self.assertTrue(SystemPackageTool._is_sudo_enabled())
self.assertEqual(SystemPackageTool._get_sudo_str(), "sudo --askpass ")
self.assertEqual(SystemPackageTool._get_sudo_str(), "sudo -A ")

with mock.patch("sys.stdout.isatty", return_value=True):
self.assertEqual(SystemPackageTool._get_sudo_str(), "sudo ")
Expand Down Expand Up @@ -104,7 +104,7 @@ def __call__(runner_self, command, output, win_bash=False, subsystem=None):
def _run_add_repository_test(repository, gpg_key, sudo, isatty, update):
sudo_cmd = ""
if sudo:
sudo_cmd = "sudo " if isatty else "sudo --askpass "
sudo_cmd = "sudo " if isatty else "sudo -A "

runner = RunnerOrderedMock()
runner.commands.append(("{}apt-add-repository {}".format(sudo_cmd, repository), 0))
Expand Down Expand Up @@ -150,46 +150,46 @@ def system_package_tool_test(self):
os_info.linux_distro = "debian"
spt = SystemPackageTool(runner=runner, os_info=os_info)
spt.update()
self.assertEquals(runner.command_called, "sudo --askpass apt-get update")
self.assertEquals(runner.command_called, "sudo -A apt-get update")

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

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

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

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

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

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

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

runner.return_ok = True
spt.install("a_package", force=False)
Expand All @@ -210,9 +210,9 @@ def system_package_tool_test(self):

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

Expand Down Expand Up @@ -312,13 +312,13 @@ def __call__(self, command, output): # @UnusedVariable
spt = SystemPackageTool(runner=runner, tool=AptTool())
spt.install(packages)
self.assertEquals(2, runner.calls)
runner = RunnerMultipleMock(["sudo --askpass apt-get update",
"sudo --askpass apt-get install -y --no-install-recommends yet_another_package"])
runner = RunnerMultipleMock(["sudo -A apt-get update",
"sudo -A apt-get install -y --no-install-recommends yet_another_package"])
spt = SystemPackageTool(runner=runner, tool=AptTool())
spt.install(packages)
self.assertEquals(7, runner.calls)

runner = RunnerMultipleMock(["sudo --askpass apt-get update"])
runner = RunnerMultipleMock(["sudo -A apt-get update"])
spt = SystemPackageTool(runner=runner, tool=AptTool())
with self.assertRaises(ConanException):
spt.install(packages)
Expand Down Expand Up @@ -360,7 +360,7 @@ def __call__(self, command, *args, **kwargs): # @UnusedVariable
"CONAN_SYSREQUIRES_SUDO": "True"
}):
packages = ["verify_package", "verify_another_package", "verify_yet_another_package"]
runner = RunnerMultipleMock(["sudo --askpass apt-get update"])
runner = RunnerMultipleMock(["sudo -A apt-get update"])
spt = SystemPackageTool(runner=runner, tool=AptTool())
with self.assertRaises(ConanException) as exc:
spt.install(packages)
Expand All @@ -375,7 +375,7 @@ def __call__(self, command, *args, **kwargs): # @UnusedVariable
"CONAN_SYSREQUIRES_SUDO": "True"
}):
packages = ["disabled_package", "disabled_another_package", "disabled_yet_another_package"]
runner = RunnerMultipleMock(["sudo --askpass apt-get update"])
runner = RunnerMultipleMock(["sudo -A apt-get update"])
spt = SystemPackageTool(runner=runner, tool=AptTool())
spt.install(packages)
self.assertIn('\n'.join(packages), tools.system_pm._global_output)
Expand All @@ -386,7 +386,7 @@ def __call__(self, command, *args, **kwargs): # @UnusedVariable
"CONAN_SYSREQUIRES_MODE": "EnAbLeD",
"CONAN_SYSREQUIRES_SUDO": "True"
}):
runner = RunnerMultipleMock(["sudo --askpass apt-get update"])
runner = RunnerMultipleMock(["sudo -A apt-get update"])
spt = SystemPackageTool(runner=runner, tool=AptTool())
with self.assertRaises(ConanException) as exc:
spt.install(packages)
Expand Down Expand Up @@ -417,13 +417,13 @@ def get_linux_error_message():
os_info = OSInfo()
update_command = None
if os_info.with_apt:
update_command = "sudo --askpass apt-get update"
update_command = "sudo -A apt-get update"
elif os_info.with_yum:
update_command = "sudo --askpass yum update -y"
update_command = "sudo -A yum update -y"
elif os_info.with_zypper:
update_command = "sudo --askpass zypper --non-interactive ref"
update_command = "sudo -A zypper --non-interactive ref"
elif os_info.with_pacman:
update_command = "sudo --askpass pacman -Syyu --noconfirm"
update_command = "sudo -A pacman -Syyu --noconfirm"

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

Expand Down

0 comments on commit 6f397ba

Please sign in to comment.