diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2009-10-22 19:05:00 +0200 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2009-10-22 19:05:00 +0200 |
commit | 36f838e7977e62284d2928f65cacf29771f1952f (patch) | |
tree | d6b945ef62f231a9775b95d97831de1df141f414 /test/git/test_utils.py | |
parent | 3d9e7f1121d3bdbb08291c7164ad622350544a21 (diff) | |
download | gitpython-36f838e7977e62284d2928f65cacf29771f1952f.tar.gz |
utils: Added LockFile including test
GitConfigFile is now derived from LockFile using its capabilities
Implemented ConcurrentWriteOperation, test is yet to be done
Diffstat (limited to 'test/git/test_utils.py')
-rw-r--r-- | test/git/test_utils.py | 37 |
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") |