From 152bab7eb64e249122fefab0d5531db1e065f539 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Tue, 20 Oct 2009 22:05:51 +0200 Subject: improved IndexEntry type and added test for parsing of the stage --- lib/git/index.py | 8 ++++---- test/fixtures/index_merge | Bin 0 -> 9192 bytes test/git/test_index.py | 14 +++++++++----- 3 files changed, 13 insertions(+), 9 deletions(-) create mode 100644 test/fixtures/index_merge 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 Binary files /dev/null and b/test/fixtures/index_merge 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 ?") + -- cgit v1.2.3