summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiklas Hambüchen <mail@nh2.me>2020-01-28 02:46:25 +0100
committerNiklas Hambüchen <mail@nh2.me>2020-01-28 02:58:42 +0100
commitf4f6653e6aa053724d2c6dc0ee71dcb928013352 (patch)
treefe3b30f503cd79d4763ab529b4f505ca65927422
parent4fa749b918810b52a63b312d82e4003e24db0406 (diff)
downloadbabel-f4f6653e6aa053724d2c6dc0ee71dcb928013352.tar.gz
Introduce invariant that _invalid_pofile() takes unicode line.
This makes debugging and reasoning about the code easier; otherwise it is surprising that sometimes `line` is a unicode and sometimes not. So far, when it was not, it could either be only `""` or `'Algo esta mal'`; thus this commit makes those two u"" strings. In all other cases, it was guaranteed that it's unicode, because all code paths leading to `_invalid_pofile()` went through if not isinstance(line, text_type): line = line.decode(self.catalog.charset) before.
-rw-r--r--babel/messages/pofile.py3
-rw-r--r--tests/messages/test_pofile.py2
2 files changed, 3 insertions, 2 deletions
diff --git a/babel/messages/pofile.py b/babel/messages/pofile.py
index 93b0697..f6771be 100644
--- a/babel/messages/pofile.py
+++ b/babel/messages/pofile.py
@@ -178,7 +178,7 @@ class PoFileParser(object):
string = ['' for _ in range(self.catalog.num_plurals)]
for idx, translation in self.translations:
if idx >= self.catalog.num_plurals:
- self._invalid_pofile("", self.offset, "msg has more translations than num_plurals of catalog")
+ self._invalid_pofile(u"", self.offset, "msg has more translations than num_plurals of catalog")
continue
string[idx] = translation.denormalize()
string = tuple(string)
@@ -319,6 +319,7 @@ class PoFileParser(object):
self._add_message()
def _invalid_pofile(self, line, lineno, msg):
+ assert isinstance(line, text_type)
if self.abort_invalid:
raise PoFileError(msg, self.catalog, line, lineno)
print("WARNING:", msg)
diff --git a/tests/messages/test_pofile.py b/tests/messages/test_pofile.py
index e77fa6e..214ddf5 100644
--- a/tests/messages/test_pofile.py
+++ b/tests/messages/test_pofile.py
@@ -480,7 +480,7 @@ msgstr[2] "Vohs [text]"
def test_invalid_pofile_with_abort_flag(self):
parser = pofile.PoFileParser(None, abort_invalid=True)
lineno = 10
- line = 'Algo esta mal'
+ line = u'Algo esta mal'
msg = 'invalid file'
with self.assertRaises(pofile.PoFileError) as e:
parser._invalid_pofile(line, lineno, msg)