From 04b06d6d99ea47798c349d0c34f622a68370c767 Mon Sep 17 00:00:00 2001 From: Michał Górny Date: Wed, 22 Nov 2017 14:24:20 +0100 Subject: manifest: Fix encoding support with Python 2 --- gemato/manifest.py | 7 ++++++- tests/test_manifest.py | 14 +++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/gemato/manifest.py b/gemato/manifest.py index 5c38801..61ff72f 100644 --- a/gemato/manifest.py +++ b/gemato/manifest.py @@ -7,6 +7,7 @@ import datetime import io import os.path import re +import sys import gemato.exceptions import gemato.openpgp @@ -49,6 +50,10 @@ class ManifestEntryTIMESTAMP(object): or (self.tag == other.tag and self.ts < other.ts)) +if sys.hexversion >= 0x03000000: + unichr = chr + + class ManifestPathEntry(object): """ Base class for entries using a path. @@ -68,7 +73,7 @@ class ManifestPathEntry(object): if val is None: raise gemato.exceptions.ManifestSyntaxError( 'Invalid escape sequence at pos {} of: {}'.format(m.start(), m.string)) - return chr(int(val[1:], base=16)) + return unichr(int(val[1:], base=16)) @classmethod def process_path(cls, l): diff --git a/tests/test_manifest.py b/tests/test_manifest.py index 20f1f29..c327521 100644 --- a/tests/test_manifest.py +++ b/tests/test_manifest.py @@ -446,15 +446,15 @@ class ManifestPathEncodingTest(unittest.TestCase): def test_encode_nbsp_in_filename(self): m = gemato.manifest.new_manifest_entry('DATA', - 'tes\u00a0t', 32, {}) - self.assertEqual(m.path, 'tes\u00a0t') + u'tes\u00a0t', 32, {}) + self.assertEqual(m.path, u'tes\u00a0t') self.assertListEqual(list(m.to_list()), ['DATA', 'tes\\u00A0t', '32']) def test_encode_en_quad_in_filename(self): m = gemato.manifest.new_manifest_entry('DATA', - 'tes\u2000t', 32, {}) - self.assertEqual(m.path, 'tes\u2000t') + u'tes\u2000t', 32, {}) + self.assertEqual(m.path, u'tes\u2000t') self.assertListEqual(list(m.to_list()), ['DATA', 'tes\\u2000t', '32']) @@ -495,17 +495,17 @@ class ManifestPathEncodingTest(unittest.TestCase): def test_decode_nbsp_in_filename(self): m = gemato.manifest.ManifestEntryDATA.from_list(['DATA', 'tes\\u00A0t', 32]) - self.assertEqual(m.path, 'tes\u00a0t') + self.assertEqual(m.path, u'tes\u00a0t') def test_decode_nbsp_in_filename_lc(self): m = gemato.manifest.ManifestEntryDATA.from_list(['DATA', 'tes\\u00a0t', 32]) - self.assertEqual(m.path, 'tes\u00a0t') + self.assertEqual(m.path, u'tes\u00a0t') def test_decode_en_quad_in_filename(self): m = gemato.manifest.ManifestEntryDATA.from_list(['DATA', 'tes\\u2000t', 32]) - self.assertEqual(m.path, 'tes\u2000t') + self.assertEqual(m.path, u'tes\u2000t') def test_decode_null_in_filename(self): m = gemato.manifest.ManifestEntryDATA.from_list(['DATA', -- cgit v1.2.3