summaryrefslogtreecommitdiff
path: root/test/git/test_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/git/test_utils.py')
-rw-r--r--test/git/test_utils.py37
1 files changed, 36 insertions, 1 deletions
diff --git a/test/git/test_utils.py b/test/git/test_utils.py
index 6852d0ad..61527758 100644
--- a/test/git/test_utils.py
+++ b/test/git/test_utils.py
@@ -5,11 +5,15 @@
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
import os
+import tempfile
+
from test.testlib import *
+from git.utils import *
from git import *
from git.cmd import dashify
-class TestUtils(object):
+
+class TestUtils(TestCase):
def setup(self):
self.testdict = {
"string": "42",
@@ -20,3 +24,34 @@ class TestUtils(object):
def test_it_should_dashify(self):
assert_equal('this-is-my-argument', dashify('this_is_my_argument'))
assert_equal('foo', dashify('foo'))
+
+
+ def test_lock_file(self):
+ my_file = tempfile.mktemp()
+ lock_file = LockFile(my_file)
+ assert not lock_file._has_lock()
+ # release lock we don't have - fine
+ lock_file._release_lock()
+
+ # get lock
+ lock_file._obtain_lock_or_raise()
+ assert lock_file._has_lock()
+
+ # concurrent access
+ other_lock_file = LockFile(my_file)
+ assert not other_lock_file._has_lock()
+ self.failUnlessRaises(IOError, other_lock_file._obtain_lock_or_raise)
+
+ lock_file._release_lock()
+ assert not lock_file._has_lock()
+
+ other_lock_file._obtain_lock_or_raise()
+ self.failUnlessRaises(IOError, lock_file._obtain_lock_or_raise)
+
+ # auto-release on destruction
+ del(other_lock_file)
+ lock_file._obtain_lock_or_raise()
+ lock_file._release_lock()
+
+ def test_safe_operation(self):
+ self.fail("todo")