sshserver: add a couple of tests for argument parsing
I noticed that we didn't have any unit tests covering wire protocol argument
parsing.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-sshserver.py Fri Jan 19 14:25:09 2018 -0800
@@ -0,0 +1,44 @@
+from __future__ import absolute_import, print_function
+
+import io
+import unittest
+
+import silenttestrunner
+
+from mercurial import (
+ sshserver,
+ wireproto,
+)
+
+class SSHServerGetArgsTests(unittest.TestCase):
+ def testparseknown(self):
+ tests = [
+ ('* 0\nnodes 0\n', ['', {}]),
+ ('* 0\nnodes 40\n1111111111111111111111111111111111111111\n',
+ ['1111111111111111111111111111111111111111', {}]),
+ ]
+ for input, expected in tests:
+ self.assertparse('known', input, expected)
+
+ def assertparse(self, cmd, input, expected):
+ server = mockserver(input)
+ _func, spec = wireproto.commands[cmd]
+ self.assertEqual(server.getargs(spec), expected)
+
+def mockserver(inbytes):
+ ui = mockui(inbytes)
+ repo = mockrepo(ui)
+ return sshserver.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__':
+ silenttestrunner.main(__name__)