mirror of
https://gerrit.googlesource.com/git-repo
synced 2026-05-09 12:29:33 +00:00
sync: Remove dependency on ssh if not needed
When running on a machine without the `ssh` command, repo sync would fail even if no ssh or ssh proxy was required. Use exception handling inside ssh.ProxyManager to more gracefully handle the case where ssh is not installed. Bug: 467714011 Change-Id: I602a0819638ead4d02de88b750839bc3d70549ce Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/535141 Reviewed-by: Mike Frysinger <vapier@google.com> Reviewed-by: Gavin Mak <gavinmak@google.com> Tested-by: Jordan Esh <esh.jordan@gmail.com> Commit-Queue: Jordan Esh <esh.jordan@gmail.com>
This commit is contained in:
+14
-7
@@ -25,6 +25,10 @@ import ssh
|
||||
class SshTests(unittest.TestCase):
|
||||
"""Tests the ssh functions."""
|
||||
|
||||
def setUp(self) -> None:
|
||||
super().setUp()
|
||||
ssh.version.cache_clear()
|
||||
|
||||
def test_parse_ssh_version(self):
|
||||
"""Check _parse_ssh_version() handling."""
|
||||
ver = ssh._parse_ssh_version("Unknown\n")
|
||||
@@ -56,11 +60,12 @@ class SshTests(unittest.TestCase):
|
||||
def test_context_manager_child_cleanup(self):
|
||||
"""Verify orphaned clients & masters get cleaned up."""
|
||||
with multiprocessing.Manager() as manager:
|
||||
with ssh.ProxyManager(manager) as ssh_proxy:
|
||||
client = subprocess.Popen(["sleep", "964853320"])
|
||||
ssh_proxy.add_client(client)
|
||||
master = subprocess.Popen(["sleep", "964853321"])
|
||||
ssh_proxy.add_master(master)
|
||||
with mock.patch("ssh.version", return_value=(1, 2)):
|
||||
with ssh.ProxyManager(manager) as ssh_proxy:
|
||||
client = subprocess.Popen(["sleep", "964853320"])
|
||||
ssh_proxy.add_client(client)
|
||||
master = subprocess.Popen(["sleep", "964853321"])
|
||||
ssh_proxy.add_master(master)
|
||||
# If the process still exists, these will throw timeout errors.
|
||||
client.wait(0)
|
||||
master.wait(0)
|
||||
@@ -72,9 +77,11 @@ class SshTests(unittest.TestCase):
|
||||
with mock.patch("tempfile.mkdtemp", return_value="/tmp/foo"):
|
||||
# Old ssh version uses port.
|
||||
with mock.patch("ssh.version", return_value=(6, 6)):
|
||||
self.assertTrue(proxy.sock().endswith("%p"))
|
||||
with proxy as ssh_proxy:
|
||||
self.assertTrue(ssh_proxy.sock().endswith("%p"))
|
||||
|
||||
proxy._sock_path = None
|
||||
# New ssh version uses hash.
|
||||
with mock.patch("ssh.version", return_value=(6, 7)):
|
||||
self.assertTrue(proxy.sock().endswith("%C"))
|
||||
with proxy as ssh_proxy:
|
||||
self.assertTrue(ssh_proxy.sock().endswith("%C"))
|
||||
|
||||
Reference in New Issue
Block a user