def setUp(self): """Load a Subversion repository""" self.temper = utils.Temper() (self.repos, self.repos_path, self.repos_uri) = self.temper.alloc_known_repo( 'trac/versioncontrol/tests/svnrepos.dump', suffix='-repository') self.fs = repos.fs(self.repos) self.rev = fs.youngest_rev(self.fs) self.tmpfile = None self.unistr = u'⊙_ʘ' tmpfd, self.tmpfile = mkstemp() tmpfp = os.fdopen(tmpfd, "wb") # Use a unicode file to ensure proper non-ascii handling. tmpfp.write(self.unistr.encode('utf8')) tmpfp.close() clientctx = client.svn_client_create_context() clientctx.log_msg_func3 = client.svn_swig_py_get_commit_log_func clientctx.log_msg_baton3 = self.log_message_func providers = [ client.svn_client_get_simple_provider(), client.svn_client_get_username_provider(), ] clientctx.auth_baton = core.svn_auth_open(providers) commitinfo = client.import2(self.tmpfile, urljoin(self.repos_uri +"/", "trunk/UniTest.txt"), True, True, clientctx) self.commitedrev = commitinfo.revision
def setUp(self): """Load a Subversion repository""" self.temper = utils.Temper() (self.repos, self.repos_path, _) = self.temper.alloc_known_repo( 'trac/versioncontrol/tests/svnrepos.dump', suffix='-repository') self.fs = repos.fs(self.repos) self.rev = fs.youngest_rev(self.fs)
def test_exception_interoperability(self): """Test if SubversionException is correctly converted into svn_error_t and vice versa.""" t = utils.Temper() (_, _, repos_uri) = t.alloc_empty_repo(suffix='-core') rev = svn.core.svn_opt_revision_t() rev.kind = svn.core.svn_opt_revision_head ctx = svn.client.create_context() class Receiver: def __call__(self, path, info, pool): raise self.e rec = Receiver() args = (repos_uri, rev, rev, rec, svn.core.svn_depth_empty, None, ctx) try: # ordinary Python exceptions must be passed through rec.e = TypeError() self.assertRaises(TypeError, svn.client.info2, *args) # SubversionException will be translated into an svn_error_t, propagated # through the call chain and translated back to SubversionException. rec.e = svn.core.SubversionException("Bla bla bla.", svn.core.SVN_ERR_INCORRECT_PARAMS, file=__file__, line=866) rec.e.child = svn.core.SubversionException("Yada yada.", svn.core.SVN_ERR_INCOMPLETE_DATA) self.assertRaises(svn.core.SubversionException, svn.client.info2, *args) # It must remain unchanged through the process. try: svn.client.info2(*args) except svn.core.SubversionException as exc: # find the original exception while exc.file != rec.e.file: exc = exc.child self.assertEqual(exc.message, rec.e.message) self.assertEqual(exc.apr_err, rec.e.apr_err) self.assertEqual(exc.line, rec.e.line) self.assertEqual(exc.child.message, rec.e.child.message) self.assertEqual(exc.child.apr_err, rec.e.child.apr_err) self.assertEqual(exc.child.child, None) self.assertEqual(exc.child.file, None) self.assertEqual(exc.child.line, 0) # Incomplete SubversionExceptions must trigger Python exceptions, which # will be passed through. rec.e = svn.core.SubversionException("No fields except message.") # e.apr_err is None but should be an int self.assertRaises(TypeError, svn.client.info2, *args) finally: # This would happen without the finally block as well, but we expliticly # order the operations so that the cleanup is not hindered by any open # handles. del ctx t.cleanup()
def setUp(self): """Load the mergeinfo-full Subversion repository. This dumpfile is created by dumping the repository generated for command line log tests 16. If it needs to be updated (mergeinfo format changes, for example), we can go there to get a new version.""" self.temper = utils.Temper() (self.repos, _, _) = self.temper.alloc_known_repo('data/mergeinfo.dump', suffix='-mergeinfo') self.fs = repos.fs(self.repos) self.rev = fs.youngest_rev(self.fs)
def setUp(self): """Load a Subversion repository""" ra.initialize() self.temper = utils.Temper() # Isolate each test from the others with a fresh repository. # Open repository directly for cross-checking (self.repos, _, self.repos_uri) = self.temper.alloc_known_repo( 'trac/versioncontrol/tests/svnrepos.dump', suffix='-ra') self.fs = repos.fs(self.repos) self.callbacks = ra.Callbacks() self.ra_ctx = ra.open2(self.repos_uri, self.callbacks, {})
def setUp(self): """Load a Subversion repository""" self.temper = utils.Temper() # Isolate each test from the others with a fresh repository. (self.repos, _, self.repos_uri) = self.temper.alloc_known_repo( 'trac/versioncontrol/tests/svnrepos.dump', suffix='-wc-repo') self.fs = repos.fs(self.repos) self.path = self.temper.alloc_empty_dir(suffix='-wc-wc') client_ctx = client.create_context() rev = core.svn_opt_revision_t() rev.kind = core.svn_opt_revision_head client.checkout2(self.repos_uri, self.path, rev, rev, True, True, client_ctx) self.wc = wc.adm_open3(None, self.path, True, -1, None)
def setUp(self): """Set up authentication and client context""" self.client_ctx = client.svn_client_create_context() self.assertEqual(self.client_ctx.log_msg_baton2, None) self.assertEqual(self.client_ctx.log_msg_func2, None) self.assertEqual(self.client_ctx.log_msg_baton3, None) self.assertEqual(self.client_ctx.log_msg_func3, None) self.client_ctx.log_msg_func3 = client.svn_swig_py_get_commit_log_func self.client_ctx.log_msg_baton3 = self.log_message_func self.log_message_func_calls = 0 self.log_message = None self.changed_paths = None self.change_author = None providers = [ client.svn_client_get_simple_provider(), client.svn_client_get_username_provider(), ] self.client_ctx.auth_baton = core.svn_auth_open(providers) self.temper = utils.Temper() (_, self.repos_path, self.repos_uri) = self.temper.alloc_known_repo( 'trac/versioncontrol/tests/svnrepos.dump', suffix='-client')