diff --git a/mercurial/commandserver.py b/mercurial/commandserver.py --- a/mercurial/commandserver.py +++ b/mercurial/commandserver.py @@ -7,7 +7,7 @@ from i18n import _ import struct -import sys, os, errno, traceback, SocketServer +import os, errno, traceback, SocketServer import dispatch, encoding, util logfile = None @@ -250,7 +250,7 @@ class server(object): class pipeservice(object): def __init__(self, ui, repo, opts): - self.server = server(ui, repo, sys.stdin, sys.stdout) + self.server = server(ui, repo, ui.fin, ui.fout) def init(self): pass diff --git a/tests/test-commandserver.t b/tests/test-commandserver.t --- a/tests/test-commandserver.t +++ b/tests/test-commandserver.t @@ -524,6 +524,27 @@ check that local configs for the cached prompt: 5678 +run commandserver in commandserver, which is silly but should work: + + >>> import cStringIO + >>> from hgclient import readchannel, runcommand, check + >>> @check + ... def nested(server): + ... print '%c, %r' % readchannel(server) + ... class nestedserver(object): + ... stdin = cStringIO.StringIO('getencoding\n') + ... stdout = cStringIO.StringIO() + ... runcommand(server, ['serve', '--cmdserver', 'pipe'], + ... output=nestedserver.stdout, input=nestedserver.stdin) + ... nestedserver.stdout.seek(0) + ... print '%c, %r' % readchannel(nestedserver) # hello + ... print '%c, %r' % readchannel(nestedserver) # getencoding + o, 'capabilities: getencoding runcommand\nencoding: *\npid: *' (glob) + *** runcommand serve --cmdserver pipe + o, 'capabilities: getencoding runcommand\nencoding: *\npid: *' (glob) + r, '*' (glob) + + start without repository: $ cd ..