class UploadPackHandlerTestCase(TestCase): def setUp(self): super(UploadPackHandlerTestCase, self).setUp() self._repo = MemoryRepo.init_bare([], {}) backend = DictBackend({'/': self._repo}) self._handler = UploadPackHandler(backend, ['/', 'host=lolcathost'], TestProto()) def test_progress(self): caps = self._handler.required_capabilities() self._handler.set_client_capabilities(caps) 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.assertRaises(IndexError, self._handler.proto.get_received_line, 2) def test_no_progress(self): caps = list(self._handler.required_capabilities()) + ['no-progress'] self._handler.set_client_capabilities(caps) self._handler.progress('first message') self._handler.progress('second message') self.assertRaises(IndexError, self._handler.proto.get_received_line, 2) def test_get_tagged(self): refs = { 'refs/tags/tag1': ONE, 'refs/tags/tag2': TWO, 'refs/heads/master': FOUR, # not a tag, no peeled value } # repo needs to peel this object self._repo.object_store.add_object(make_commit(id=FOUR)) self._repo.refs._update(refs) peeled = { 'refs/tags/tag1': '1234' * 10, 'refs/tags/tag2': '5678' * 10, } self._repo.refs._update_peeled(peeled) caps = list(self._handler.required_capabilities()) + ['include-tag'] self._handler.set_client_capabilities(caps) self.assertEqual({ '1234' * 10: ONE, '5678' * 10: TWO }, self._handler.get_tagged(refs, repo=self._repo)) # non-include-tag case caps = self._handler.required_capabilities() self._handler.set_client_capabilities(caps) self.assertEqual({}, self._handler.get_tagged(refs, repo=self._repo))
class UploadPackHandlerTestCase(TestCase): def setUp(self): super(UploadPackHandlerTestCase, self).setUp() self._repo = MemoryRepo.init_bare([], {}) backend = DictBackend({b'/': self._repo}) self._handler = UploadPackHandler( backend, [b'/', b'host=lolcathost'], TestProto()) def test_progress(self): caps = self._handler.required_capabilities() self._handler.set_client_capabilities(caps) self._handler.progress(b'first message') self._handler.progress(b'second message') self.assertEqual(b'first message', self._handler.proto.get_received_line(2)) self.assertEqual(b'second message', self._handler.proto.get_received_line(2)) self.assertRaises(IndexError, self._handler.proto.get_received_line, 2) def test_no_progress(self): caps = list(self._handler.required_capabilities()) + [b'no-progress'] self._handler.set_client_capabilities(caps) self._handler.progress(b'first message') self._handler.progress(b'second message') self.assertRaises(IndexError, self._handler.proto.get_received_line, 2) def test_get_tagged(self): refs = { b'refs/tags/tag1': ONE, b'refs/tags/tag2': TWO, b'refs/heads/master': FOUR, # not a tag, no peeled value } # repo needs to peel this object self._repo.object_store.add_object(make_commit(id=FOUR)) self._repo.refs._update(refs) peeled = { b'refs/tags/tag1': b'1234' * 10, b'refs/tags/tag2': b'5678' * 10, } self._repo.refs._update_peeled(peeled) caps = list(self._handler.required_capabilities()) + [b'include-tag'] self._handler.set_client_capabilities(caps) self.assertEqual({b'1234' * 10: ONE, b'5678' * 10: TWO}, self._handler.get_tagged(refs, repo=self._repo)) # non-include-tag case caps = self._handler.required_capabilities() self._handler.set_client_capabilities(caps) self.assertEqual({}, self._handler.get_tagged(refs, repo=self._repo))
class UploadPackHandlerTestCase(TestCase): def setUp(self): self._backend = DictBackend({"/": BackendRepo()}) self._handler = UploadPackHandler(self._backend, ["/", "host=lolcathost"], None, None) self._handler.proto = TestProto() def test_progress(self): caps = self._handler.required_capabilities() self._handler.set_client_capabilities(caps) 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): caps = list(self._handler.required_capabilities()) + ['no-progress'] self._handler.set_client_capabilities(caps) self._handler.progress('first message') self._handler.progress('second message') self.assertEqual(None, self._handler.proto.get_received_line(2)) def test_get_tagged(self): refs = { 'refs/tags/tag1': ONE, 'refs/tags/tag2': TWO, 'refs/heads/master': FOUR, # not a tag, no peeled value } peeled = { 'refs/tags/tag1': '1234', 'refs/tags/tag2': '5678', } class TestRepo(object): def get_peeled(self, ref): return peeled.get(ref, refs[ref]) caps = list(self._handler.required_capabilities()) + ['include-tag'] self._handler.set_client_capabilities(caps) self.assertEquals({'1234': ONE, '5678': TWO}, self._handler.get_tagged(refs, repo=TestRepo())) # non-include-tag case caps = self._handler.required_capabilities() self._handler.set_client_capabilities(caps) self.assertEquals({}, self._handler.get_tagged(refs, repo=TestRepo()))
class UploadPackHandlerTestCase(TestCase): def setUp(self): super(UploadPackHandlerTestCase, self).setUp() self._repo = MemoryRepo.init_bare([], {}) backend = DictBackend({"/": self._repo}) self._handler = UploadPackHandler(backend, ["/", "host=lolcathost"], TestProto()) def test_progress(self): caps = self._handler.required_capabilities() self._handler.set_client_capabilities(caps) 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.assertRaises(IndexError, self._handler.proto.get_received_line, 2) def test_no_progress(self): caps = list(self._handler.required_capabilities()) + ["no-progress"] self._handler.set_client_capabilities(caps) self._handler.progress("first message") self._handler.progress("second message") self.assertRaises(IndexError, self._handler.proto.get_received_line, 2) def test_get_tagged(self): refs = {"refs/tags/tag1": ONE, "refs/tags/tag2": TWO, "refs/heads/master": FOUR} # not a tag, no peeled value # repo needs to peel this object self._repo.object_store.add_object(make_commit(id=FOUR)) self._repo.refs._update(refs) peeled = {"refs/tags/tag1": "1234" * 10, "refs/tags/tag2": "5678" * 10} self._repo.refs._update_peeled(peeled) caps = list(self._handler.required_capabilities()) + ["include-tag"] self._handler.set_client_capabilities(caps) self.assertEqual({"1234" * 10: ONE, "5678" * 10: TWO}, self._handler.get_tagged(refs, repo=self._repo)) # non-include-tag case caps = self._handler.required_capabilities() self._handler.set_client_capabilities(caps) self.assertEqual({}, self._handler.get_tagged(refs, repo=self._repo))
class UploadPackHandlerTestCase(TestCase): def setUp(self): super(UploadPackHandlerTestCase, self).setUp() self._repo = MemoryRepo.init_bare([], {}) backend = DictBackend({b'/': self._repo}) self._handler = UploadPackHandler(backend, [b'/', b'host=lolcathost'], TestProto()) def test_progress(self): caps = self._handler.required_capabilities() self._handler.set_client_capabilities(caps) self._handler.progress(b'first message') self._handler.progress(b'second message') self.assertEqual(b'first message', self._handler.proto.get_received_line(2)) self.assertEqual(b'second message', self._handler.proto.get_received_line(2)) self.assertRaises(IndexError, self._handler.proto.get_received_line, 2) def test_no_progress(self): caps = list(self._handler.required_capabilities()) + [b'no-progress'] self._handler.set_client_capabilities(caps) self._handler.progress(b'first message') self._handler.progress(b'second message') self.assertRaises(IndexError, self._handler.proto.get_received_line, 2) def test_get_tagged(self): refs = { b'refs/tags/tag1': ONE, b'refs/tags/tag2': TWO, b'refs/heads/master': FOUR, # not a tag, no peeled value } # repo needs to peel this object self._repo.object_store.add_object(make_commit(id=FOUR)) self._repo.refs._update(refs) peeled = { b'refs/tags/tag1': b'1234' * 10, b'refs/tags/tag2': b'5678' * 10, } self._repo.refs._update_peeled(peeled) caps = list(self._handler.required_capabilities()) + [b'include-tag'] self._handler.set_client_capabilities(caps) self.assertEqual({ b'1234' * 10: ONE, b'5678' * 10: TWO }, self._handler.get_tagged(refs, repo=self._repo)) # non-include-tag case caps = self._handler.required_capabilities() self._handler.set_client_capabilities(caps) self.assertEqual({}, self._handler.get_tagged(refs, repo=self._repo)) def test_nothing_to_do_but_wants(self): # Just the fact that the client claims to want an object is enough # for sending a pack. Even if there turns out to be nothing. refs = {b'refs/tags/tag1': ONE} tree = Tree() self._repo.object_store.add_object(tree) self._repo.object_store.add_object(make_commit(id=ONE, tree=tree)) self._repo.refs._update(refs) self._handler.proto.set_output([ b'want ' + ONE + b' side-band-64k thin-pack ofs-delta', None, b'have ' + ONE, b'done', None ]) self._handler.handle() # The server should always send a pack, even if it's empty. self.assertTrue( self._handler.proto.get_received_line(1).startswith(b'PACK')) def test_nothing_to_do_no_wants(self): # Don't send a pack if the client didn't ask for anything. refs = {b'refs/tags/tag1': ONE} tree = Tree() self._repo.object_store.add_object(tree) self._repo.object_store.add_object(make_commit(id=ONE, tree=tree)) self._repo.refs._update(refs) self._handler.proto.set_output([None]) self._handler.handle() # The server should not send a pack, since the client didn't ask for # anything. self.assertEqual([], self._handler.proto._received[1])