tests/test-wireproto.py
author Angel Ezquerra <angel.ezquerra@gmail.com>
Thu, 19 Apr 2012 23:36:42 +0200
branchstable
changeset 16468 2fb521d75dc2
parent 14765 08ef6b5f3715
child 17192 1ac628cd7113
permissions -rw-r--r--
revert: show warning when reverting subrepos that do not support revert The warning is similar to the warning that was shown before hgsubrepo revert support was added, with the exception that now the subrepo type is shown. For example, when trying to revert a git subrepo located in "include/mygitsub", the warning message would be: include/mygitsub: reverting git subrepos is unsupported

from mercurial import wireproto

class proto(object):
    def __init__(self, args):
        self.args = args
    def getargs(self, spec):
        args = self.args
        args.setdefault('*', {})
        names = spec.split()
        return [args[n] for n in names]

class clientrepo(wireproto.wirerepository):
    def __init__(self, serverrepo):
        self.serverrepo = serverrepo
    def _call(self, cmd, **args):
        return wireproto.dispatch(self.serverrepo, proto(args), cmd)

    @wireproto.batchable
    def greet(self, name):
        f = wireproto.future()
        yield wireproto.todict(name=mangle(name)), f
        yield unmangle(f.value)

class serverrepo(object):
    def greet(self, name):
        return "Hello, " + name

def mangle(s):
    return ''.join(chr(ord(c) + 1) for c in s)
def unmangle(s):
    return ''.join(chr(ord(c) - 1) for c in s)

def greet(repo, proto, name):
    return mangle(repo.greet(unmangle(name)))

wireproto.commands['greet'] = (greet, 'name',)

srv = serverrepo()
clt = clientrepo(srv)

print clt.greet("Foobar")
b = clt.batch()
fs = [b.greet(s) for s in ["Fo, =;o", "Bar"]]
b.submit()
print [f.value for f in fs]