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_log3_url(self): """Test svn_client_log3 on a file:// URL""" directory = urljoin(self.repos_uri + "/", "trunk/dir1") start = core.svn_opt_revision_t() end = core.svn_opt_revision_t() core.svn_opt_parse_revision(start, end, "4:0") client.log3((directory,), start, start, end, 1, True, False, self.log_receiver, self.client_ctx) self.assertEqual(self.change_author, "john") self.assertEqual(self.log_message, "More directories.") self.assertEqual(len(self.changed_paths), 3) for dir in ("/trunk/dir1", "/trunk/dir2", "/trunk/dir3"): self.assert_(dir in self.changed_paths) self.assertEqual(self.changed_paths[dir].action, "A")
def test_log3_url(self): """Test svn_client_log3 on a file:// URL""" 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") client.log3((directory,), start, start, end, 1, True, False, self.log_receiver, self.client_ctx) self.assertEqual(self.change_author, b"john") self.assertEqual(self.log_message, b"More directories.") self.assertEqual(len(self.changed_paths), 3) for dir in (b'/trunk/dir1', b'/trunk/dir2', b'/trunk/dir3'): self.assertTrue(dir in self.changed_paths) self.assertEqual(self.changed_paths[dir].action, b'A')
def test_log3_url(self): """Test svn_client_log3 on a file:// URL""" dir = urljoin(REPOS_URL + "/", "trunk/dir1") start = core.svn_opt_revision_t() end = core.svn_opt_revision_t() core.svn_opt_parse_revision(start, end, "4:0") client.log3((dir, ), start, start, end, 1, True, False, self.log_receiver, self.client_ctx) self.assertEqual(self.change_author, "john") self.assertEqual(self.log_message, "More directories.") self.assertEqual(len(self.changed_paths), 3) for dir in ('/trunk/dir1', '/trunk/dir2', '/trunk/dir3'): self.assert_(self.changed_paths.has_key(dir)) self.assertEqual(self.changed_paths[dir].action, 'A')
def test_log3_url(self): """Test svn_client_log3 on a file:// URL""" dir = urljoin(REPOS_URL+"/", "trunk/dir1") start = core.svn_opt_revision_t() end = core.svn_opt_revision_t() core.svn_opt_parse_revision(start, end, "4:0") client.log3((dir,), start, start, end, 1, True, False, self.log_receiver, self.client_ctx) self.assertEqual(self.change_author, "john") self.assertEqual(self.log_message, "More directories.") self.assertEqual(len(self.changed_paths), 3) for dir in ('/trunk/dir1', '/trunk/dir2', '/trunk/dir3'): self.assert_(self.changed_paths.has_key(dir)) self.assertEqual(self.changed_paths[dir].action, 'A')
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)