summaryrefslogtreecommitdiff
path: root/test/git/test_commit.py
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2010-10-15 12:40:54 +0200
committerSebastian Thiel <byronimo@gmail.com>2010-10-15 12:40:54 +0200
commit13647590f96fb5a22cb60f12c5a70e00065a7f3a (patch)
tree75c5fcd85fe9e655e035bd3cbec10e49071562f1 /test/git/test_commit.py
parent741dfaadf732d4a2a897250c006d5ef3d3cd9f3a (diff)
parent0019d7dc8c72839d238065473a62b137c3c350f5 (diff)
downloadgitpython-13647590f96fb5a22cb60f12c5a70e00065a7f3a.tar.gz
Merge branch 'unicode'
Diffstat (limited to 'test/git/test_commit.py')
-rw-r--r--test/git/test_commit.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/git/test_commit.py b/test/git/test_commit.py
index 31ce2c4e..2692938f 100644
--- a/test/git/test_commit.py
+++ b/test/git/test_commit.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
# test_commit.py
# Copyright (C) 2008, 2009 Michael Trier (mtrier@gmail.com) and contributors
#
@@ -108,6 +109,14 @@ class TestCommit(TestBase):
assert commit.committer_tz_offset == 14400, commit.committer_tz_offset
assert commit.message == "initial project\n"
+ def test_unicode_actor(self):
+ # assure we can parse unicode actors correctly
+ name = "Üäöß ÄußÉ".decode("utf-8")
+ assert len(name) == 9
+ special = Actor._from_string(u"%s <something@this.com>" % name)
+ assert special.name == name
+ assert isinstance(special.name, unicode)
+
def test_traversal(self):
start = self.rorepo.commit("a4d06724202afccd2b5c54f81bcf2bf26dea7fff")
first = self.rorepo.commit("33ebe7acec14b25c5f84f35a664803fcab2f7781")
@@ -233,3 +242,32 @@ class TestCommit(TestBase):
# create all commits of our repo
assert_commit_serialization(rwrepo, '0.1.6')
+ def test_serialization_unicode_support(self):
+ assert Commit.default_encoding.lower() == 'utf-8'
+
+ # create a commit with unicode in the message, and the author's name
+ # Verify its serialization and deserialization
+ cmt = self.rorepo.commit('0.1.6')
+ assert isinstance(cmt.message, unicode) # it automatically decodes it as such
+ assert isinstance(cmt.author.name, unicode) # same here
+
+ cmt.message = "üäêèß".decode("utf-8")
+ assert len(cmt.message) == 5
+
+ cmt.author.name = "äüß".decode("utf-8")
+ assert len(cmt.author.name) == 3
+
+ cstream = StringIO()
+ cmt._serialize(cstream)
+ cstream.seek(0)
+ assert len(cstream.getvalue())
+
+ ncmt = Commit(self.rorepo, cmt.binsha)
+ ncmt._deserialize(cstream)
+
+ assert cmt.author.name == ncmt.author.name
+ assert cmt.message == ncmt.message
+ # actually, it can't be printed in a shell as repr wants to have ascii only
+ # it appears
+ cmt.author.__repr__()
+