diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2009-10-11 22:50:44 +0200 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2009-10-11 22:50:44 +0200 |
commit | 3c0a65226f038c58fc6d6ed525f38fc00b3579b7 (patch) | |
tree | a5b715a490d9cbd8f45eabc1968374c96bdea1c0 /test/git/test_tree.py | |
parent | 9c0c2fc4ee2d8a5d0a2de50ba882657989dedc51 (diff) | |
parent | c68459a17ff59043d29c90020fffe651b2164e6a (diff) | |
download | gitpython-3c0a65226f038c58fc6d6ed525f38fc00b3579b7.tar.gz |
Merge branch 'hierarchyfix' into improvements
* hierarchyfix:
Added remaining tests for new base classes and removed some methods whose existance was doubtful or unsafe
Fixed remaining tests to deal with the changes
commit: fixed failing commit tests as the mocked git command would always return the same thing which does not work anymore - re-implemented it in a more dynamic manner, but in the end tests will have to be revised anyway
mode-only change for test system - this should be in a separate repository in fact so that changes are a little more self-contained and not depending on the actual source repository
fixed issue in Ref.name implementation which would not handle components properly
lazymixin system now supports per-attribute baking, it is up to the class whether it bakes more. This also leads to more efficient use of memory as values are only cached and set when required - the baking system does not require an own tracking variable anymore, and values are only to be cached once - then python will natively find the cache without involving any additional overhead. This works by using __getattr__ instead of __get_attribute__ which would always be called
put Tree and Blob onto a new base class suitable to deal with IndexObjects
blob tests fixed to deal with changes to the Blob type
converted all spaces to tabs ( 4 spaces = 1 tab ) just to allow me and my editor to work with the files properly. Can convert it back for releaes
Re-designed the tag testing - it does not use fixtures anymore but dyamically checks the existance of tags within the repository - it basically tests the interface and checks that expected return types are actually returned
Intermediate commit: commit,tree and blob objects now derive from object - test is in place which still fails on purpose. Need to integrate tags which can be objects or just a special form of a ref
Renamed lazy.py to base.py to have a file for base classes - lazy not yet changed to allow proper rename tracking
Diffstat (limited to 'test/git/test_tree.py')
-rw-r--r-- | test/git/test_tree.py | 236 |
1 files changed, 118 insertions, 118 deletions
diff --git a/test/git/test_tree.py b/test/git/test_tree.py index 3946a33c..50d34006 100644 --- a/test/git/test_tree.py +++ b/test/git/test_tree.py @@ -8,142 +8,142 @@ from test.testlib import * from git import * class TestTree(object): - def setup(self): - self.repo = Repo(GIT_REPO) - - @patch_object(Git, '_call_process') - def test_contents_should_cache(self, git): - git.return_value = fixture('ls_tree_a') + fixture('ls_tree_b') - - tree = self.repo.tree('master') - - child = tree['grit'] - child.items() - child.items() - - assert_true(git.called) - assert_equal(2, git.call_count) - assert_equal(git.call_args, (('ls_tree', '34868e6e7384cb5ee51c543a8187fdff2675b5a7'), {})) + def setup(self): + self.repo = Repo(GIT_REPO) + + @patch_object(Git, '_call_process') + def test_contents_should_cache(self, git): + git.return_value = fixture('ls_tree_a') + fixture('ls_tree_b') + + tree = self.repo.tree('master') + + child = tree['grit'] + child.items() + child.items() + + assert_true(git.called) + assert_equal(2, git.call_count) + assert_equal(git.call_args, (('ls_tree', '34868e6e7384cb5ee51c543a8187fdff2675b5a7'), {})) - def test_content_from_string_tree_should_return_tree(self): - text = fixture('ls_tree_a').splitlines()[-1] - tree = Tree.content_from_string(None, text) - - assert_equal(Tree, tree.__class__) - assert_equal("650fa3f0c17f1edb4ae53d8dcca4ac59d86e6c44", tree.id) - assert_equal("040000", tree.mode) - assert_equal("test", tree.path) + def test_content_from_string_tree_should_return_tree(self): + text = fixture('ls_tree_a').splitlines()[-1] + tree = Tree.content_from_string(None, text) + + assert_equal(Tree, tree.__class__) + assert_equal("650fa3f0c17f1edb4ae53d8dcca4ac59d86e6c44", tree.id) + assert_equal(0,tree.mode) # git tree objects always use this mode + assert_equal("test", tree.path) - def test_content_from_string_tree_should_return_blob(self): - text = fixture('ls_tree_b').split("\n")[0] - - tree = Tree.content_from_string(None, text) - - assert_equal(Blob, tree.__class__) - assert_equal("aa94e396335d2957ca92606f909e53e7beaf3fbb", tree.id) - assert_equal("100644", tree.mode) - assert_equal("grit.rb", tree.path) + def test_content_from_string_tree_should_return_blob(self): + text = fixture('ls_tree_b').split("\n")[0] + + tree = Tree.content_from_string(None, text) + + assert_equal(Blob, tree.__class__) + assert_equal("aa94e396335d2957ca92606f909e53e7beaf3fbb", tree.id) + assert_mode_644(tree.mode) + assert_equal("grit.rb", tree.path) + + def test_content_from_string_tree_should_return_commit(self): + text = fixture('ls_tree_commit').split("\n")[1] + + tree = Tree.content_from_string(None, text) + assert_none(tree) + + @raises(TypeError) + def test_content_from_string_invalid_type_should_raise(self): + Tree.content_from_string(None, "040000 bogus 650fa3f0c17f1edb4ae53d8dcca4ac59d86e6c44 test") + + @patch_object(Blob, 'size') + @patch_object(Git, '_call_process') + def test_slash(self, git, blob): + git.return_value = fixture('ls_tree_a') + blob.return_value = 1 + + tree = self.repo.tree('master') + + assert_equal('aa06ba24b4e3f463b3c4a85469d0fb9e5b421cf8', (tree/'lib').id) + assert_equal('8b1e02c0fb554eed2ce2ef737a68bb369d7527df', (tree/'README.txt').id) + + assert_true(git.called) + assert_equal(git.call_args, (('ls_tree', 'master'), {})) - def test_content_from_string_tree_should_return_commit(self): - text = fixture('ls_tree_commit').split("\n")[1] - - tree = Tree.content_from_string(None, text) - assert_none(tree) - - @raises(TypeError) - def test_content_from_string_invalid_type_should_raise(self): - Tree.content_from_string(None, "040000 bogus 650fa3f0c17f1edb4ae53d8dcca4ac59d86e6c44 test") - - @patch_object(Blob, 'size') - @patch_object(Git, '_call_process') - def test_slash(self, git, blob): - git.return_value = fixture('ls_tree_a') - blob.return_value = 1 - - tree = self.repo.tree('master') - - assert_equal('aa06ba24b4e3f463b3c4a85469d0fb9e5b421cf8', (tree/'lib').id) - assert_equal('8b1e02c0fb554eed2ce2ef737a68bb369d7527df', (tree/'README.txt').id) - - assert_true(git.called) - assert_equal(git.call_args, (('ls_tree', 'master'), {})) + @patch_object(Blob, 'size') + @patch_object(Git, '_call_process') + def test_slash_with_zero_length_file(self, git, blob): + git.return_value = fixture('ls_tree_a') + blob.return_value = 0 + + tree = self.repo.tree('master') + + assert_not_none(tree/'README.txt') + assert_equal('8b1e02c0fb554eed2ce2ef737a68bb369d7527df', (tree/'README.txt').id) + + assert_true(git.called) + assert_equal(git.call_args, (('ls_tree', 'master'), {})) - @patch_object(Blob, 'size') - @patch_object(Git, '_call_process') - def test_slash_with_zero_length_file(self, git, blob): - git.return_value = fixture('ls_tree_a') - blob.return_value = 0 - - tree = self.repo.tree('master') - - assert_not_none(tree/'README.txt') - assert_equal('8b1e02c0fb554eed2ce2ef737a68bb369d7527df', (tree/'README.txt').id) - - assert_true(git.called) - assert_equal(git.call_args, (('ls_tree', 'master'), {})) - - @patch_object(Git, '_call_process') - def test_slash_with_commits(self, git): - git.return_value = fixture('ls_tree_commit') + @patch_object(Git, '_call_process') + def test_slash_with_commits(self, git): + git.return_value = fixture('ls_tree_commit') - tree = self.repo.tree('master') - - assert_none(tree/'bar') - assert_equal('2afb47bcedf21663580d5e6d2f406f08f3f65f19', (tree/'foo').id) - assert_equal('f623ee576a09ca491c4a27e48c0dfe04be5f4a2e', (tree/'baz').id) + tree = self.repo.tree('master') + + assert_none(tree/'bar') + assert_equal('2afb47bcedf21663580d5e6d2f406f08f3f65f19', (tree/'foo').id) + assert_equal('f623ee576a09ca491c4a27e48c0dfe04be5f4a2e', (tree/'baz').id) - assert_true(git.called) - assert_equal(git.call_args, (('ls_tree', 'master'), {})) + assert_true(git.called) + assert_equal(git.call_args, (('ls_tree', 'master'), {})) - @patch_object(Blob, 'size') - @patch_object(Git, '_call_process') - def test_dict(self, git, blob): - git.return_value = fixture('ls_tree_a') - blob.return_value = 1 + @patch_object(Blob, 'size') + @patch_object(Git, '_call_process') + def test_dict(self, git, blob): + git.return_value = fixture('ls_tree_a') + blob.return_value = 1 - tree = self.repo.tree('master') + tree = self.repo.tree('master') - assert_equal('aa06ba24b4e3f463b3c4a85469d0fb9e5b421cf8', tree['lib'].id) - assert_equal('8b1e02c0fb554eed2ce2ef737a68bb369d7527df', tree['README.txt'].id) + assert_equal('aa06ba24b4e3f463b3c4a85469d0fb9e5b421cf8', tree['lib'].id) + assert_equal('8b1e02c0fb554eed2ce2ef737a68bb369d7527df', tree['README.txt'].id) - assert_true(git.called) - assert_equal(git.call_args, (('ls_tree', 'master'), {})) + assert_true(git.called) + assert_equal(git.call_args, (('ls_tree', 'master'), {})) - @patch_object(Blob, 'size') - @patch_object(Git, '_call_process') - def test_dict_with_zero_length_file(self, git, blob): - git.return_value = fixture('ls_tree_a') - blob.return_value = 0 + @patch_object(Blob, 'size') + @patch_object(Git, '_call_process') + def test_dict_with_zero_length_file(self, git, blob): + git.return_value = fixture('ls_tree_a') + blob.return_value = 0 - tree = self.repo.tree('master') + tree = self.repo.tree('master') - assert_not_none(tree['README.txt']) - assert_equal('8b1e02c0fb554eed2ce2ef737a68bb369d7527df', tree['README.txt'].id) + assert_not_none(tree['README.txt']) + assert_equal('8b1e02c0fb554eed2ce2ef737a68bb369d7527df', tree['README.txt'].id) - assert_true(git.called) - assert_equal(git.call_args, (('ls_tree', 'master'), {})) + assert_true(git.called) + assert_equal(git.call_args, (('ls_tree', 'master'), {})) - @patch_object(Git, '_call_process') - def test_dict_with_commits(self, git): - git.return_value = fixture('ls_tree_commit') + @patch_object(Git, '_call_process') + def test_dict_with_commits(self, git): + git.return_value = fixture('ls_tree_commit') - tree = self.repo.tree('master') + tree = self.repo.tree('master') - assert_none(tree.get('bar')) - assert_equal('2afb47bcedf21663580d5e6d2f406f08f3f65f19', tree['foo'].id) - assert_equal('f623ee576a09ca491c4a27e48c0dfe04be5f4a2e', tree['baz'].id) + assert_none(tree.get('bar')) + assert_equal('2afb47bcedf21663580d5e6d2f406f08f3f65f19', tree['foo'].id) + assert_equal('f623ee576a09ca491c4a27e48c0dfe04be5f4a2e', tree['baz'].id) - assert_true(git.called) - assert_equal(git.call_args, (('ls_tree', 'master'), {})) + assert_true(git.called) + assert_equal(git.call_args, (('ls_tree', 'master'), {})) - @patch_object(Git, '_call_process') - @raises(KeyError) - def test_dict_with_non_existant_file(self, git): - git.return_value = fixture('ls_tree_commit') + @patch_object(Git, '_call_process') + @raises(KeyError) + def test_dict_with_non_existant_file(self, git): + git.return_value = fixture('ls_tree_commit') - tree = self.repo.tree('master') - tree['bar'] + tree = self.repo.tree('master') + tree['bar'] - def test_repr(self): - tree = Tree(self.repo, id='abc') - assert_equal('<git.Tree "abc">', repr(tree)) + def test_repr(self): + tree = Tree(self.repo, id='abc') + assert_equal('<git.Tree "abc">', repr(tree)) |