view hggit/_ssh.py @ 1095:60a82693d43c

tests: fix bad (re) match It seems fffe8883960b incorrectly did a match on the second parent (which is null) and that core Mercurial mistakenly matched the whole line with (re). This was recently fixed in 6d5718e39657 in core, so let's update the test with the correct match.
author Sean Farley <sean@farley.io>
date Thu, 30 Nov 2017 14:49:06 -0800
parents a539321562ef
children 8ed6c0cae9b8
line wrap: on
line source

from dulwich.client import SubprocessWrapper
import subprocess

from mercurial import (
    util,
)

class SSHVendor(object):
    """Parent class for ui-linked Vendor classes."""


def generate_ssh_vendor(ui):
    """
    Allows dulwich to use hg's ui.ssh config. The dulwich.client.get_ssh_vendor
    property should point to the return value.
    """

    class _Vendor(SSHVendor):
        def run_command(self, host, command, username=None, port=None):
            if isinstance(command, basestring):
                # 0.12.x dulwich sends the raw string
                command = [command]
            elif len(command) > 1:
                # 0.11.x dulwich sends an array of [command arg1 arg2 ...], so
                # we detect that here and reformat it back to what hg-git
                # expects (e.g. "command 'arg1 arg2'")
                command = ["%s '%s'" % (command[0], ' '.join(command[1:]))]
            sshcmd = ui.config("ui", "ssh", "ssh")
            args = util.sshargs(sshcmd, host, username, port)
            cmd = '%s %s %s' % (sshcmd, args,
                                util.shellquote(' '.join(command)))
            ui.debug('calling ssh: %s\n' % cmd)
            proc = subprocess.Popen(util.quotecommand(cmd), shell=True,
                                    stdin=subprocess.PIPE,
                                    stdout=subprocess.PIPE)
            return SubprocessWrapper(proc)

    return _Vendor