Mercurial > kallithea
changeset 2894:2654edfb1700 beta
fixes #591 git backend was causing encoding errors when handling binary files
- added a test case for VCS lib tests
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 03 Oct 2012 20:20:16 +0200 |
parents | eb180eb16c18 |
children | f5dc0417d6b1 |
files | rhodecode/lib/vcs/backends/git/inmemory.py rhodecode/tests/vcs/test_inmemchangesets.py |
diffstat | 2 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/lib/vcs/backends/git/inmemory.py Wed Oct 03 19:02:40 2012 +0200 +++ b/rhodecode/lib/vcs/backends/git/inmemory.py Wed Oct 03 20:20:16 2012 +0200 @@ -63,10 +63,16 @@ # If found, updates parent parent = self.repository._repo[dir_id] ancestors.append((curdir, parent)) - # Now parent is deepest exising tree and we need to create subtrees + # Now parent is deepest existing tree and we need to create subtrees # for dirnames (in reverse order) [this only applies for nodes from added] new_trees = [] - blob = objects.Blob.from_string(node.content.encode(ENCODING)) + + if not node.is_binary: + content = node.content.encode(ENCODING) + else: + content = node.content + blob = objects.Blob.from_string(content) + node_path = node.name.encode(ENCODING) if dirnames: # If there are trees which should be created we need to build
--- a/rhodecode/tests/vcs/test_inmemchangesets.py Wed Oct 03 19:02:40 2012 +0200 +++ b/rhodecode/tests/vcs/test_inmemchangesets.py Wed Oct 03 20:20:16 2012 +0200 @@ -44,6 +44,7 @@ FileNode('foobar2', content='Foo & bar, doubled!'), FileNode('foo bar with spaces', content=''), FileNode('foo/bar/baz', content='Inside'), + FileNode('foo/bar/file.bin', content='\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00;\x00\x03\x00\xfe\xff\t\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff'), ] def test_add(self):