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_merge_peg3(self): """Test svn_client_merge_peg3.""" head = core.svn_opt_revision_t() head.kind = core.svn_opt_revision_head wc_path = self.temper.alloc_empty_dir("-merge_peg3") client.checkout3(self.repos_uri, wc_path, head, head, core.svn_depth_infinity, True, False, self.client_ctx) # Let's try to backport a change from the v1x branch trunk_path = core.svn_dirent_join(wc_path, "trunk") v1x_path = core.svn_dirent_join(wc_path, "branches/v1x") start = core.svn_opt_revision_t() start.kind = core.svn_opt_revision_number start.value.number = 8 end = core.svn_opt_revision_t() end.kind = core.svn_opt_revision_number end.value.number = 9 rrange = core.svn_opt_revision_range_t() rrange.start = start rrange.end = end client.merge_peg3( v1x_path, (rrange,), end, trunk_path, core.svn_depth_infinity, False, False, False, False, None, self.client_ctx, ) # Did it take effect? readme_path_native = core.svn_dirent_local_style(core.svn_dirent_join(trunk_path, "README.txt")) readme = open(readme_path_native, "r") readme_text = readme.read() readme.close() self.assertEqual(readme_text, "This is a test.\n")
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(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_merge_peg3(self): """Test svn_client_merge_peg3.""" head = core.svn_opt_revision_t() head.kind = core.svn_opt_revision_head wc_path = self.temper.alloc_empty_dir('-merge_peg3') client.checkout3(self.repos_uri, wc_path, head, head, core.svn_depth_infinity, True, False, self.client_ctx) # Let's try to backport a change from the v1x branch trunk_path = core.svn_dirent_join(wc_path, b'trunk') v1x_path = core.svn_dirent_join(wc_path, b'branches/v1x') start = core.svn_opt_revision_t() start.kind = core.svn_opt_revision_number start.value.number = 8 end = core.svn_opt_revision_t() end.kind = core.svn_opt_revision_number end.value.number = 9 rrange = core.svn_opt_revision_range_t() rrange.start = start rrange.end = end client.merge_peg3(v1x_path, (rrange,), end, trunk_path, core.svn_depth_infinity, False, False, False, False, None, self.client_ctx) # Did it take effect? readme_path_native = core.svn_dirent_local_style( core.svn_dirent_join(trunk_path, b'README.txt') ) readme = open(readme_path_native, 'rb') readme_text = readme.read() readme.close() self.assertEqual(readme_text, b'This is a test.' + os.linesep.encode('UTF-8'))
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)