Mercurial > kallithea
changeset 7054:3725f86e8514
api: wrap changeset file paths with safe_unicode
Fixes error in get_changesets if path contains non ascii character.
author | domruf <dominikruf@gmail.com> |
---|---|
date | Tue, 17 Oct 2017 19:27:10 +0200 |
parents | 64ee7afabaaa |
children | 6ef837acb0d2 |
files | kallithea/lib/vcs/backends/base.py kallithea/tests/vcs/test_changesets.py |
diffstat | 2 files changed, 13 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/lib/vcs/backends/base.py Wed Nov 15 00:05:24 2017 +0100 +++ b/kallithea/lib/vcs/backends/base.py Tue Oct 17 19:27:10 2017 +0200 @@ -393,9 +393,9 @@ message=self.message, date=self.date, author=self.author, - added=[el.path for el in self.added], - changed=[el.path for el in self.changed], - removed=[el.path for el in self.removed], + added=[safe_unicode(el.path) for el in self.added], + changed=[safe_unicode(el.path) for el in self.changed], + removed=[safe_unicode(el.path) for el in self.removed], ) else: return dict( @@ -667,9 +667,9 @@ data = get_dict_for_attrs(self, ['id', 'raw_id', 'short_id', 'revision', 'date', 'message']) data['author'] = {'name': self.author_name, 'email': self.author_email} - data['added'] = [node.path for node in self.added] - data['changed'] = [node.path for node in self.changed] - data['removed'] = [node.path for node in self.removed] + data['added'] = [safe_unicode(node.path) for node in self.added] + data['changed'] = [safe_unicode(node.path) for node in self.changed] + data['removed'] = [safe_unicode(node.path) for node in self.removed] return data @LazyProperty
--- a/kallithea/tests/vcs/test_changesets.py Wed Nov 15 00:05:24 2017 +0100 +++ b/kallithea/tests/vcs/test_changesets.py Tue Oct 17 19:27:10 2017 +0200 @@ -30,7 +30,7 @@ changeset.date = datetime.datetime(2011, 1, 30, 1, 45) changeset.message = 'Message of a commit' changeset.author = 'Joe Doe <joe.doe@example.com>' - changeset.added = [FileNode('foo/bar/baz'), FileNode('foobar')] + changeset.added = [FileNode('foo/bar/baz'), FileNode(u'foobar'), FileNode(u'blåbærgrød')] changeset.changed = [] changeset.removed = [] self.assertEqual(changeset.as_dict(), { @@ -44,7 +44,7 @@ 'name': 'Joe Doe', 'email': 'joe.doe@example.com', }, - 'added': ['foo/bar/baz', 'foobar'], + 'added': ['foo/bar/baz', 'foobar', u'bl\xe5b\xe6rgr\xf8d'], 'changed': [], 'removed': [], }) @@ -341,6 +341,8 @@ ]) self.assertItemsEqual(changeset.changed, []) self.assertItemsEqual(changeset.removed, []) + assert u'foo/ba\u0142' in changeset.as_dict()['added'] + assert u'foo/ba\u0142' in changeset.__json__(with_file_list=True)['added'] def test_head_added(self): changeset = self.repo.get_changeset() @@ -373,17 +375,17 @@ 'backend_alias': alias, } # tests with additional commits - cls_name = ''.join(('%s changesets with commits test' % alias).title().split()) + cls_name = alias.title() + 'ChangesetsWithCommitsTest' bases = (_ChangesetsWithCommitsTestCaseixin, unittest.TestCase) globals()[cls_name] = type(cls_name, bases, attrs) # tests without additional commits - cls_name = ''.join(('%s changesets test' % alias).title().split()) + cls_name = alias.title() + 'ChangesetsTest' bases = (_ChangesetsTestCaseMixin, unittest.TestCase) globals()[cls_name] = type(cls_name, bases, attrs) # tests changes - cls_name = ''.join(('%s changesets changes test' % alias).title().split()) + cls_name = alias.title() + 'ChangesetsChangesTest' bases = (_ChangesetsChangesTestCaseMixin, unittest.TestCase) globals()[cls_name] = type(cls_name, bases, attrs)