diff options
author | Niklas Hambüchen <mail@nh2.me> | 2020-01-28 02:46:25 +0100 |
---|---|---|
committer | Niklas Hambüchen <mail@nh2.me> | 2020-01-28 02:58:42 +0100 |
commit | f4f6653e6aa053724d2c6dc0ee71dcb928013352 (patch) | |
tree | fe3b30f503cd79d4763ab529b4f505ca65927422 | |
parent | 4fa749b918810b52a63b312d82e4003e24db0406 (diff) | |
download | babel-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.py | 3 | ||||
-rw-r--r-- | tests/messages/test_pofile.py | 2 |
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) |