def test_log5_revprops(self): """Test svn_client_log5 revprops (for typemap(in) apr_array_t *STRINGLIST)""" directory = urljoin(self.repos_uri+b"/", b"trunk/dir1") start = core.svn_opt_revision_t() end = core.svn_opt_revision_t() core.svn_opt_parse_revision(start, end, b"4:0") rev_range = core.svn_opt_revision_range_t() rev_range.start = start rev_range.end = end entry_pool = core.Pool() def log_entry_receiver_whole(log_entry, pool): """An implementation of svn_log_entry_receiver_t, holds whole log entries.""" self.received_log_entries.append(core.svn_log_entry_dup(log_entry, entry_pool)) self.received_log_entries = [] # (Python 3: pass tuple of bytes and str mixture as revprops argment) client.log5((directory,), start, (rev_range,), 1, True, False, False, ('svn:author', b'svn:log'), log_entry_receiver_whole, self.client_ctx) self.assertEqual(len(self.received_log_entries), 1) revprops = self.received_log_entries[0].revprops self.assertEqual(revprops[b'svn:log'], b"More directories.") self.assertEqual(revprops[b'svn:author'], b"john") with self.assertRaises(KeyError): commit_date = revprops['svn:date'] with self.assertRaises(UnicodeEncodeError): client.log5((directory,), start, (rev_range,), 1, True, False, False, (u'svn:\udc61uthor', b'svn:log'), log_entry_receiver_whole, self.client_ctx)
def test_log5(self): """Test svn_client_log5.""" start = core.svn_opt_revision_t() start.kind = core.svn_opt_revision_number start.value.number = 0 end = core.svn_opt_revision_t() end.kind = core.svn_opt_revision_number end.value.number = 4 rev_range = core.svn_opt_revision_range_t() rev_range.start = start rev_range.end = end self.received_revisions = [] client.log5((self.repos_uri,), end, (rev_range,), 0, False, True, False, (), self.log_entry_receiver, self.client_ctx) self.assertEqual(self.received_revisions, range(0, 5))
def test_log5(self): """Test svn_client_log5.""" start = core.svn_opt_revision_t() start.kind = core.svn_opt_revision_number start.value.number = 0 end = core.svn_opt_revision_t() end.kind = core.svn_opt_revision_number end.value.number = 4 rev_range = core.svn_opt_revision_range_t() rev_range.start = start rev_range.end = end self.received_revisions = [] client.log5((self.repos_uri,), end, (rev_range,), 0, False, True, False, (), self.log_entry_receiver, self.client_ctx) self.assertEqual(self.received_revisions, list(range(0, 5)))
def test_log5_revprops(self): """Test svn_client_log5 revprops (for typemap(in) apr_array_t *STRINGLIST)""" directory = urljoin(self.repos_uri + b"/", b"trunk/dir1") start = core.svn_opt_revision_t() end = core.svn_opt_revision_t() core.svn_opt_parse_revision(start, end, b"4:0") rev_range = core.svn_opt_revision_range_t() rev_range.start = start rev_range.end = end entry_pool = core.Pool() def log_entry_receiver_whole(log_entry, pool): """An implementation of svn_log_entry_receiver_t, holds whole log entries.""" self.received_log_entries.append( core.svn_log_entry_dup(log_entry, entry_pool)) self.received_log_entries = [] # (Pass tuple of bytes and str(unicode) mixture as revprops argument) client.log5((directory, ), start, (rev_range, ), 1, True, False, False, (u'svn:author', b'svn:log'), log_entry_receiver_whole, self.client_ctx) self.assertEqual(len(self.received_log_entries), 1) revprops = self.received_log_entries[0].revprops self.assertEqual(revprops[b'svn:log'], b"More directories.") self.assertEqual(revprops[b'svn:author'], b"john") with self.assertRaises(KeyError): commit_date = revprops['svn:date'] if utils.IS_PY3 or not utils.is_defaultencoding_utf8(): # 'utf-8' codecs on Python 2 does not raise UnicodeEncodeError # on surrogate code point U+dc00 - U+dcff. So we need to skip # below in such a case. with self.assertRaises(UnicodeEncodeError): client.log5((directory, ), start, (rev_range, ), 1, True, False, False, (u'svn:\udc61uthor', b'svn:log'), log_entry_receiver_whole, self.client_ctx)