diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2015-01-05 18:21:49 +0100 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2015-01-05 18:21:49 +0100 |
commit | 4a67e4e49c4e7b82e416067df69c72656213e886 (patch) | |
tree | f7ab6a08f66768ed7a40f28dba7c3382ef881ecd /git | |
parent | 31b3673bdb9d8fb7feea8ae887be455c4a880f76 (diff) | |
download | gitpython-4a67e4e49c4e7b82e416067df69c72656213e886.tar.gz |
test_fun works
Diffstat (limited to 'git')
-rw-r--r-- | git/compat.py | 3 | ||||
-rw-r--r-- | git/index/fun.py | 9 | ||||
-rw-r--r-- | git/objects/fun.py | 5 | ||||
-rw-r--r-- | git/test/test_fun.py | 12 |
4 files changed, 17 insertions, 12 deletions
diff --git a/git/compat.py b/git/compat.py index f11d1423..b9205418 100644 --- a/git/compat.py +++ b/git/compat.py @@ -29,6 +29,8 @@ if PY3: FileType = io.IOBase def byte_ord(b): return b + def bchr(n): + return bytes([n]) else: FileType = file # usually, this is just ascii, which might not enough for our encoding needs @@ -36,6 +38,7 @@ else: if defenc == 'ascii': defenc = 'utf-8' byte_ord = ord + bchr = chr def with_metaclass(meta, *bases): diff --git a/git/index/fun.py b/git/index/fun.py index 0e49ae8d..3e66a7ba 100644 --- a/git/index/fun.py +++ b/git/index/fun.py @@ -37,6 +37,7 @@ from .util import ( from gitdb.base import IStream from gitdb.typ import str_tree_type +from git.compat import defenc __all__ = ('write_cache', 'read_cache', 'write_tree_from_cache', 'entry_key', 'stat_mode_to_index_mode', 'S_IFGITLINK') @@ -86,9 +87,9 @@ def write_cache(entries, stream, extension_data=None, ShaStreamCls=IndexFileSHA1 flags = plen | (entry[2] & CE_NAMEMASK_INV) # clear possible previous values write(pack(">LLLLLL20sH", entry[6], entry[7], entry[0], entry[8], entry[9], entry[10], entry[1], flags)) - write(path) + write(path.encode(defenc)) real_size = ((tell() - beginoffset + 8) & ~7) - write("\0" * ((beginoffset + real_size) - tell())) + write(b"\0" * ((beginoffset + real_size) - tell())) # END for each entry # write previously cached extensions data @@ -102,7 +103,7 @@ def write_cache(entries, stream, extension_data=None, ShaStreamCls=IndexFileSHA1 def read_header(stream): """Return tuple(version_long, num_entries) from the given stream""" type_id = stream.read(4) - if type_id != "DIRC": + if type_id != b"DIRC": raise AssertionError("Invalid index file header: %r" % type_id) version, num_entries = unpack(">LL", stream.read(4 * 2)) @@ -142,7 +143,7 @@ def read_cache(stream): (dev, ino, mode, uid, gid, size, sha, flags) = \ unpack(">LLLLLL20sH", read(20 + 4 * 6 + 2)) path_size = flags & CE_NAMEMASK - path = read(path_size) + path = read(path_size).decode(defenc) real_size = ((tell() - beginoffset + 8) & ~7) read((beginoffset + real_size) - tell()) diff --git a/git/objects/fun.py b/git/objects/fun.py index 610bdb5c..ba8dbcf4 100644 --- a/git/objects/fun.py +++ b/git/objects/fun.py @@ -4,7 +4,8 @@ from git.compat import ( byte_ord, defenc, xrange, - text_type + text_type, + bchr ) __all__ = ('tree_to_stream', 'tree_entries_from_data', 'traverse_trees_recursive', @@ -21,7 +22,7 @@ def tree_to_stream(entries, write): for binsha, mode, name in entries: mode_str = b'' for i in xrange(6): - mode_str = chr(((mode >> (i * 3)) & bit_mask) + ord_zero) + mode_str + mode_str = bchr(((mode >> (i * 3)) & bit_mask) + ord_zero) + mode_str # END for each 8 octal value # git slices away the first octal if its zero diff --git a/git/test/test_fun.py b/git/test/test_fun.py index 9d3e749e..40d040b9 100644 --- a/git/test/test_fun.py +++ b/git/test/test_fun.py @@ -30,7 +30,7 @@ from io import BytesIO class TestFun(TestBase): def _assert_index_entries(self, entries, trees): - index = IndexFile.from_tree(self.rorepo, *[self.rorepo.tree(bin_to_hex(t)) for t in trees]) + index = IndexFile.from_tree(self.rorepo, *[self.rorepo.tree(bin_to_hex(t).decode('ascii')) for t in trees]) assert entries assert len(index.entries) == len(entries) for entry in entries: @@ -91,9 +91,9 @@ class TestFun(TestBase): assert has_conflict == (len([e for e in entries if e.stage != 0]) > 0) mktree = self.mktree - shaa = "\1" * 20 - shab = "\2" * 20 - shac = "\3" * 20 + shaa = b"\1" * 20 + shab = b"\2" * 20 + shac = b"\3" * 20 odb = rwrepo.odb @@ -256,6 +256,6 @@ class TestFun(TestBase): assert entries # END for each commit - def test_tree_entries_from_data(self): + def test_tree_entries_from_data_with_failing_name_decode(self): r = tree_entries_from_data(b'100644 \x9f\0aaa') - assert r == [('aaa', 33188, '\x9f')], r + assert r == [(b'aaa', 33188, b'\x9f')], r |