sshserver: add a couple of tests for argument parsing
authorSiddharth Agarwal <sid0@fb.com>
Fri, 19 Jan 2018 14:25:09 -0800
changeset 35752 047581ddb6ce
parent 35751 6d65cef5b038
child 35753 069df0b952e8
sshserver: add a couple of tests for argument parsing I noticed that we didn't have any unit tests covering wire protocol argument parsing.
tests/test-sshserver.py
--- /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__)