if cap not in my_caps:
raise GitProtocolError('Client asked for capability %s that '
'was not advertised.' % cap)
- self._client_capabilities = caps
+ self._client_capabilities = set(caps)
def has_capability(self, cap):
if self._client_capabilities is None:
def capabilities(self):
return ("multi_ack_detailed", "multi_ack", "side-band-64k", "thin-pack",
- "ofs-delta")
+ "ofs-delta", "no-progress")
- def handle(self):
+ def progress(self, message):
+ if self.has_capability("no-progress"):
+ return
+ self.proto.write_sideband(2, message)
- progress = lambda x: self.proto.write_sideband(2, x)
+ def handle(self):
write = lambda x: self.proto.write_sideband(1, x)
graph_walker = ProtocolGraphWalker(self)
objects_iter = self.backend.fetch_objects(
- graph_walker.determine_wants, graph_walker, progress)
+ graph_walker.determine_wants, graph_walker, self.progress)
# Do they want any objects?
if len(objects_iter) == 0:
return
- progress("dul-daemon says what\n")
- progress("counting objects: %d, done.\n" % len(objects_iter))
+ self.progress("dul-daemon says what\n")
+ self.progress("counting objects: %d, done.\n" % len(objects_iter))
write_pack_data(ProtocolFile(None, write), objects_iter,
len(objects_iter))
- progress("how was that, then?\n")
+ self.progress("how was that, then?\n")
# we are done
self.proto.write("0000")
self.assertFalse(self._handler.has_capability('capxxx'))
+class UploadPackHandlerTestCase(TestCase):
+ def setUp(self):
+ self._handler = UploadPackHandler(None, None, None)
+ self._handler.proto = TestProto()
+
+ def test_progress(self):
+ self._handler.set_client_capabilities([])
+ self._handler.progress('first message')
+ self._handler.progress('second message')
+ self.assertEqual('first message',
+ self._handler.proto.get_received_line(2))
+ self.assertEqual('second message',
+ self._handler.proto.get_received_line(2))
+ self.assertEqual(None, self._handler.proto.get_received_line(2))
+
+ def test_no_progress(self):
+ self._handler.set_client_capabilities(['no-progress'])
+ self._handler.progress('first message')
+ self._handler.progress('second message')
+ self.assertEqual(None, self._handler.proto.get_received_line(2))
+
+
class TestCommit(object):
def __init__(self, sha, parents, commit_time):
self.id = sha