# test_index.py # Copyright (C) 2008, 2009 Michael Trier (mtrier@gmail.com) and contributors # # This module is part of GitPython and is released under # the BSD License: http://www.opensource.org/licenses/bsd-license.php from test.testlib import * from git import * import inspect import os class TestTree(TestCase): @classmethod def setUpAll(cls): cls.repo = Repo(GIT_REPO) def test_base(self): # read from file index = Index.from_file(fixture_path("index")) assert index.entries assert index.version > 0 # test entry last_val = None entry = index.entries.itervalues().next() for attr in ("path","ctime","mtime","dev","inode","mode","uid", "gid","size","sha","stage"): val = getattr(entry, attr) # END for each method # test stage index_merge = Index.from_file(fixture_path("index_merge")) assert len(index_merge.entries) == 106 assert len(list(e for e in index_merge.entries.itervalues() if e.stage != 0 )) # write the data - it must match the original index_output = os.tmpfile() index_merge.write(index_output) index_output.seek(0) assert index_output.read() == fixture("index_merge") def test_merge(self): common_ancestor_sha = "5117c9c8a4d3af19a9958677e45cda9269de1541" cur_sha = "4b43ca7ff72d5f535134241e7c797ddc9c7a3573" other_sha = "39f85c4358b7346fee22169da9cad93901ea9eb9" # simple index from tree base_index = Index.from_tree(self.repo, common_ancestor_sha) assert base_index.entries # merge two trees two_way_index = Index.from_tree(self.repo, common_ancestor_sha, cur_sha) assert two_way_index.entries for e in two_way_index.entries.values(): print "%i | %s" % ( e.stage, e.path ) # merge three trees - here we have a merge conflict tree_way_index = Index.from_tree(self.repo, common_ancestor_sha, cur_sha, other_sha) assert len(list(e for e in tree_way_index.entries.values() if e.stage != 0)) def test_custom_commit(self): self.fail("Custom commit:write tree, make commit with custom parents")