Rev 23: Add some more stubs, badly needs tests. in file:///home/jelmer/bzr/bzrsvnserve/
Jelmer Vernooij
jelmer at samba.org
Mon Jan 22 18:53:22 GMT 2007
------------------------------------------------------------
revno: 23
revision-id: jelmer at samba.org-20070122185242-0bl6sfrx3zl79ow0
parent: jelmer at samba.org-20070122162053-ut129mvs7joysh8s
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: bzrsvnserve
timestamp: Mon 2007-01-22 19:52:42 +0100
message:
Add some more stubs, badly needs tests.
modified:
__init__.py __init__.py-20061015145107-e1erl7tzb3zk831k-1
svnserver.py svnserver.py-20061015150253-0jjovnw1ax00rjlb-1
tests/test_server.py test_server.py-20070122114402-zcwhr4cxc67jvakf-1
=== modified file '__init__.py'
--- a/__init__.py 2007-01-22 15:21:24 +0000
+++ b/__init__.py 2007-01-22 18:52:42 +0000
@@ -58,15 +58,18 @@
server_sock = socket.socket()
server_sock.bind(('0.0.0.0', port))
server_sock.listen(5)
- def handle_connection(sock):
+ def handle_new_client(sock):
+ def handle_connection():
+ server.serve()
+ sock.close()
server = SVNServer(directory, lambda: sock.recv(1024), sock.send)
- server_thread = threading.Thread(None, server.serve, name='svn-smart-server')
+ server_thread = threading.Thread(None, handle_connection, name='svn-smart-server')
server_thread.setDaemon(True)
server_thread.start()
while True:
sock, _ = server_sock.accept()
- handle_connection(sock)
+ handle_new_client(sock)
register_command(cmd_svnserve)
=== modified file 'svnserver.py'
--- a/svnserver.py 2007-01-22 16:20:53 +0000
+++ b/svnserver.py 2007-01-22 18:52:42 +0000
@@ -27,6 +27,10 @@
SVN_MAJOR_VERSION = 1
SVN_MINOR_VERSION = 2
+SVN_NODE_NONE = 0
+SVN_NODE_FILE = 1
+SVN_NODE_DIR = 2
+
class SVNServer:
def __init__(self, rootdir, recv_fn, send_fn):
self.rootdir = rootdir
@@ -56,6 +60,9 @@
self.send_success([], "")
self.send_success(self.branch.revno())
+ def check_path(self, path, revnum):
+ return SVN_NODE_DIR
+
def log(self, target_path, start_rev, end_rev, changed_paths,
strict_node, limit=None):
def send_revision(revno, rev):
@@ -85,19 +92,62 @@
self.send_success()
def reparent(self, parent):
- pass
+ self.send_success([], "")
+ self.send_success()
+
+ def stat(self, path, revnum):
+ self.send_success([], "")
+ self.send_success()
+
+ def update(self, rev, target, recurse):
+ import pdb
+ pdb.set_trace()
+ self.send_success([], "")
+ while True:
+ msg = self.recv_msg()
+ assert msg[0] in ["set-path", "finish-report"]
+ if msg[0] == "finish-report":
+ break
+
+ self.send_success([], "")
+ self.send_msg(["target-rev", rev])
+ tree = self.branch.repository.revision_tree(
+ self.branch.get_rev_id(rev[0]))
+ path2id = {}
+ id2path = {}
+ self.send_msg(["open-root", [rev, tree.inventory.root.file_id]])
+ def send_children(self, id):
+ for child in tree.inventory[id].children:
+ if tree.inventory[child].kind in ('symlink', 'file'):
+ self.send_msg(["add-file", [tree.inventory.id2path(child),
+ id, child]])
+ # FIXME
+ self.send_msg(["close-file", [child]])
+ else:
+ self.send_msg(["add-dir", [tree.inventory.id2path(child),
+ id, child]])
+ send_children(child)
+ self.send_msg(["close-dir", [child]])
+ #send_children(tree.inventory.root.file_id)
+ self.send_msg(["close-dir", [tree.inventory.root.file_id]])
+ self.send_msg(["close-edit", []])
+ #msg = self.recv_msg()
+ #self.send_msg(msg)
+
commands = {
"get-latest-rev": get_latest_rev,
"log": log,
+ "update": update,
+ "check-path": check_path,
+ "reparent": reparent,
+ "stat": stat,
# FIXME: get-dated-rev
# FIXME: rev-proplist
# FIXME: rev-prop
# FIXME: get-file
# FIXME: get-dir
# FIXME: check-path
- # FIXME: stat
- # FIXME: update
# FIXME: switch
# FIXME: status
# FIXME: diff
@@ -127,7 +177,6 @@
mutter("client supports:")
mutter(" version %r" % version)
mutter(" capabilities %r " % capabilities)
-
self.send_mechs()
(mech, args) = self.recv_msg()
@@ -145,6 +194,7 @@
( cmd, args ) = self.recv_msg()
if not self.commands.has_key(cmd):
self.send_unknown(cmd)
+ return
else:
self.commands[cmd](self, *args)
=== modified file 'tests/test_server.py'
--- a/tests/test_server.py 2007-01-22 16:19:06 +0000
+++ b/tests/test_server.py 2007-01-22 18:52:42 +0000
@@ -61,7 +61,7 @@
self.server.branch = self.branch
uuid.UUID(self.server.get_branch_uuid())
-import svn.client, svn.ra
+import svn.client, svn.ra, svn.delta
from svn.core import Pool
class NativeTestServer(TestCaseInTempDir):
@@ -85,7 +85,8 @@
self.server_thread = threading.Thread(None, handle_connection, name='svn-smart-server')
self.server_thread.setDaemon(True)
self.server_thread.start()
- self.ra = svn.client.open_ra_session("svn://%s:%d/" % addr,
+ self.url = "svn://%s:%d/" % addr
+ self.ra = svn.client.open_ra_session(self.url,
self.client_ctx, self.pool)
def tearDown(self):
@@ -116,3 +117,30 @@
wt.commit("a commit message", committer='someone')
svn.ra.get_log(self.ra, ["/"], 0, 1, 0, False, False, rcvr, self.pool)
+ def test_checkout(self):
+ file('a/file', 'w').write("data")
+ wt = WorkingTree.open('a')
+ wt.add('file')
+ wt.commit("a commit message", committer='someone')
+ class Editor():
+ pass
+ editor = Editor()
+ edit, edit_baton = svn.delta.make_editor(editor, self.pool)
+ reporter, report_baton = svn.ra.do_update(self.ra, 1, self.url,
+ True, edit, edit_baton)
+ svn.ra.reporter2_invoke_set_path(reporter, report_baton, "",
+ 0, True, None, self.pool)
+ svn.ra.reporter2_invoke_finish_report(reporter, report_baton,
+ self.pool)
+
+ def test_check_path(self):
+ self.assertTrue(svn.ra.check_path(self.ra, '', 0))
+
+ def test_check_path_future(self):
+ self.assertTrue(svn.ra.check_path(self.ra, '', 1))
+
+ def test_reparent(self):
+ svn.ra.reparent(self.ra, 'someurl')
+
+ def test_stat(self):
+ svn.ra.stat(self.ra, '', 1)
More information about the bazaar-commits
mailing list