Mercurial > hg
changeset 23322:000cfc8b3913
cmdserver: use given streams as pipe channels like other commands
Because commandserver itself is an hg subcommand, it shouldn't use stdio
directly in principle.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 15 Nov 2014 12:43:35 +0900 |
parents | d716b1cec5cf |
children | bc374458688b |
files | mercurial/commandserver.py tests/test-commandserver.t |
diffstat | 2 files changed, 23 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commandserver.py Fri Nov 14 16:38:58 2014 -0800 +++ b/mercurial/commandserver.py Sat Nov 15 12:43:35 2014 +0900 @@ -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 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
--- a/tests/test-commandserver.t Fri Nov 14 16:38:58 2014 -0800 +++ b/tests/test-commandserver.t Sat Nov 15 12:43:35 2014 +0900 @@ -524,6 +524,27 @@ 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 ..