summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2009-10-20 22:05:51 +0200
committerSebastian Thiel <byronimo@gmail.com>2009-10-20 22:05:51 +0200
commit152bab7eb64e249122fefab0d5531db1e065f539 (patch)
tree160cfa3001fc95eefa2c2577564738389e7753f1
parent56823868efddd3bdbc0b624cdc79adc3a2e94a75 (diff)
downloadgitpython-152bab7eb64e249122fefab0d5531db1e065f539.tar.gz
improved IndexEntry type and added test for parsing of the stage
-rw-r--r--lib/git/index.py8
-rw-r--r--test/fixtures/index_mergebin0 -> 9192 bytes
-rw-r--r--test/git/test_index.py14
3 files changed, 13 insertions, 9 deletions
diff --git a/lib/git/index.py b/lib/git/index.py
index 1ce4183b..ad581ad4 100644
--- a/lib/git/index.py
+++ b/lib/git/index.py
@@ -62,7 +62,7 @@ class IndexEntry(tuple):
return self[7]
@property
- def data_size(self):
+ def size(self):
return self[8]
@property
@@ -70,7 +70,7 @@ class IndexEntry(tuple):
return self[9]
@property
- def path_size(self):
+ def stage(self):
return self[10]
@@ -108,7 +108,7 @@ class Index(object):
real_size = ((stream.tell() - beginoffset + 8) & ~7)
data = stream.read((beginoffset + real_size) - stream.tell())
return IndexEntry((path, ctime, mtime, dev, ino, mode, uid, gid, size,
- binascii.hexlify(sha), path_size))
+ binascii.hexlify(sha), flags >> 12))
def _read_header(self, stream):
@@ -129,7 +129,7 @@ class Index(object):
count = 0
while count < num_entries:
entry = self._read_entry(stream)
- self.entries[entry[0]] = entry[1:]
+ self.entries[(entry.path,entry.stage)] = entry
count += 1
# END for each entry
diff --git a/test/fixtures/index_merge b/test/fixtures/index_merge
new file mode 100644
index 00000000..2a743455
--- /dev/null
+++ b/test/fixtures/index_merge
Binary files differ
diff --git a/test/git/test_index.py b/test/git/test_index.py
index 91ce22fd..86bde655 100644
--- a/test/git/test_index.py
+++ b/test/git/test_index.py
@@ -23,11 +23,15 @@ class TestTree(TestCase):
# test entry
last_val = None
entry = index.entries.itervalues().next()
- for name, method in inspect.getmembers(entry,inspect.ismethod):
- val = method(entry)
- assert val != last_val
- last_val = val
+ 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(list(e for e in index_merge.entries.itervalues() if e.stage != 0 ))
+
# write
- self.fail("writing, object type and stage")
+ self.fail("writing, what is 'size' attribute for ?")
+