summaryrefslogtreecommitdiff
path: root/subversion/bindings/swig/python/tests/ra.py
diff options
context:
space:
mode:
Diffstat (limited to 'subversion/bindings/swig/python/tests/ra.py')
-rw-r--r--subversion/bindings/swig/python/tests/ra.py54
1 files changed, 47 insertions, 7 deletions
diff --git a/subversion/bindings/swig/python/tests/ra.py b/subversion/bindings/swig/python/tests/ra.py
index d38bbb8..47917ca 100644
--- a/subversion/bindings/swig/python/tests/ra.py
+++ b/subversion/bindings/swig/python/tests/ra.py
@@ -298,13 +298,53 @@ class SubversionRepositoryAccessTestCase(unittest.TestCase):
ra.get_file_revs(self.ra_ctx, "trunk/README.txt", 0, 10, rev_handler)
def test_lock(self):
- def callback(baton, path, do_lock, lock, ra_err, pool):
- pass
- # This test merely makes sure that the arguments can be wrapped
- # properly. svn.ra.lock() currently fails because it is not possible
- # to retrieve the username from the auth_baton yet.
- self.assertRaises(core.SubversionException,
- lambda: ra.lock(self.ra_ctx, {"": 0}, "sleutel", False, callback))
+
+ self.calls = 0
+ self.locks = 0
+ self.errors = 0
+ def callback(path, do_lock, lock, ra_err, pool):
+ self.calls += 1
+ self.assertEqual(path, "trunk/README2.txt")
+ if lock:
+ self.assertEqual(lock.owner, "jrandom")
+ self.locks += 1
+ if ra_err:
+ self.assert_(ra_err.apr_err == core.SVN_ERR_FS_PATH_ALREADY_LOCKED
+ or ra_err.apr_err == core.SVN_ERR_FS_NO_SUCH_LOCK)
+ self.errors += 1
+
+ providers = [core.svn_auth_get_username_provider()]
+ self.callbacks.auth_baton = core.svn_auth_open(providers)
+ core.svn_auth_set_parameter(self.callbacks.auth_baton,
+ core.SVN_AUTH_PARAM_DEFAULT_USERNAME,
+ "jrandom")
+ self.ra_ctx = ra.open2(self.repos_uri, self.callbacks, {})
+ rev = fs.youngest_rev(self.fs)
+ ra.lock(self.ra_ctx, {"trunk/README2.txt":rev}, "sleutel", False, callback)
+ self.assertEqual(self.calls, 1)
+ self.assertEqual(self.locks, 1)
+ self.assertEqual(self.errors, 0)
+
+ self.calls = 0
+ self.locks = 0
+ ra.lock(self.ra_ctx, {"trunk/README2.txt":rev}, "sleutel", False, callback)
+ self.assertEqual(self.calls, 1)
+ self.assertEqual(self.locks, 0)
+ self.assertEqual(self.errors, 1)
+
+ self.calls = 0
+ self.errors = 0
+ the_lock = fs.get_lock(self.fs, "/trunk/README2.txt")
+ ra.unlock(self.ra_ctx, {"trunk/README2.txt":the_lock.token}, False, callback)
+ self.assertEqual(self.calls, 1)
+ self.assertEqual(self.locks, 0)
+ self.assertEqual(self.errors, 0)
+
+ self.calls = 0
+ ra.unlock(self.ra_ctx, {"trunk/README2.txt":the_lock.token}, False, callback)
+ self.assertEqual(self.calls, 1)
+ self.assertEqual(self.locks, 0)
+ self.assertEqual(self.errors, 1)
def test_get_log2(self):
# Get an interesting commmit.