summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2017-11-22 14:24:20 +0100
committerMichał Górny <mgorny@gentoo.org>2017-11-22 14:24:20 +0100
commit04b06d6d99ea47798c349d0c34f622a68370c767 (patch)
treef8d8f5aeb77ba4b9e9c2a65722ad0f9f02c9b004
parent9e905cbb6f25e3ace140e9e9e86b85f585129aa7 (diff)
downloadgemato-04b06d6d99ea47798c349d0c34f622a68370c767.tar.gz
manifest: Fix encoding support with Python 2
-rw-r--r--gemato/manifest.py7
-rw-r--r--tests/test_manifest.py14
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',