remotenames: synchronise remotenames after push also
Earlier we use to pull remotenames information from the server in case of pull
and clone only. This patch adds logic to push also command to pull remotenames
information.
This will help us in keeping the remotenames more upto date where there are a
lot people changing state of branches and bookmarks at the server.
Differential Revision: https://phab.mercurial-scm.org/D2874
from __future__ import absolute_import, print_function
import io
import unittest
import silenttestrunner
from mercurial import (
wireprotoserver,
wireprotov1server,
)
from mercurial.utils import (
procutil,
)
class SSHServerGetArgsTests(unittest.TestCase):
def testparseknown(self):
tests = [
(b'* 0\nnodes 0\n', [b'', {}]),
(b'* 0\nnodes 40\n1111111111111111111111111111111111111111\n',
[b'1111111111111111111111111111111111111111', {}]),
]
for input, expected in tests:
self.assertparse(b'known', input, expected)
def assertparse(self, cmd, input, expected):
server = mockserver(input)
proto = wireprotoserver.sshv1protocolhandler(server._ui,
server._fin,
server._fout)
_func, spec = wireprotov1server.commands[cmd]
self.assertEqual(proto.getargs(spec), expected)
def mockserver(inbytes):
ui = mockui(inbytes)
repo = mockrepo(ui)
return wireprotoserver.sshserver(ui, repo)
class mockrepo(object):
def __init__(self, ui):
self.ui = ui
class mockui(object):
def __init__(self, inbytes):
self.fin = io.BytesIO(inbytes)
self.fout = io.BytesIO()
self.ferr = io.BytesIO()
if __name__ == '__main__':
# Don't call into msvcrt to set BytesIO to binary mode
procutil.setbinary = lambda fp: True
silenttestrunner.main(__name__)