62 lines
2.4 KiB
Diff
62 lines
2.4 KiB
Diff
From f4f6653e6aa053724d2c6dc0ee71dcb928013352 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Niklas=20Hamb=C3=BCchen?= <mail@nh2.me>
|
|
Date: Tue, 28 Jan 2020 02:46:25 +0100
|
|
Subject: [PATCH] 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.
|
|
---
|
|
babel/messages/pofile.py | 3 ++-
|
|
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)
|
|
--
|
|
1.8.3.1
|
|
|