[PATCH] sshserver: add a couple of tests for argument parsing

Siddharth Agarwal sid0 at fb.com
Fri Jan 19 22:25:52 UTC 2018


# HG changeset patch
# User Siddharth Agarwal <sid0 at fb.com>
# Date 1516400709 28800
#      Fri Jan 19 14:25:09 2018 -0800
# Node ID 897f09345e370f08c019e7025d51e3e7ff3832fb
# Parent  6d65cef5b038ff4c141c0bbc1a2e366e45c016a2
sshserver: add a couple of tests for argument parsing

I noticed that we didn't have any unit tests covering wire protocol argument
parsing.

diff --git a/tests/test-sshserver.py b/tests/test-sshserver.py
new file mode 100644
--- /dev/null
+++ b/tests/test-sshserver.py
@@ -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__)


More information about the Mercurial-devel mailing list