diff options
author | Michał Górny <mgorny@gentoo.org> | 2017-11-22 14:24:20 +0100 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2017-11-22 14:24:20 +0100 |
commit | 04b06d6d99ea47798c349d0c34f622a68370c767 (patch) | |
tree | f8d8f5aeb77ba4b9e9c2a65722ad0f9f02c9b004 | |
parent | 9e905cbb6f25e3ace140e9e9e86b85f585129aa7 (diff) | |
download | gemato-04b06d6d99ea47798c349d0c34f622a68370c767.tar.gz |
manifest: Fix encoding support with Python 2
-rw-r--r-- | gemato/manifest.py | 7 | ||||
-rw-r--r-- | 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', |