def _finish_current_message(self) -> None:
if self.messages:
+ if not self.translations:
+ self._invalid_pofile("", self.offset, f"missing msgstr for msgid '{self.messages[0].denormalize()}'")
+ self.translations.append([0, _NormalizedString("")])
self._add_message()
def _process_message_line(self, lineno, line, obsolete=False) -> None:
"Language: \n"
''')
assert pofile.read_po(buf).locale is None
+
+
+@pytest.mark.parametrize("case", ['msgid "foo"', 'msgid "foo"\nmsgid_plural "foos"'])
+@pytest.mark.parametrize("abort_invalid", [False, True])
+def test_issue_1134(case: str, abort_invalid: bool):
+ buf = StringIO(case)
+
+ if abort_invalid:
+ # Catalog not created, aborted with PoFileError
+ with pytest.raises(pofile.PoFileError) as excinfo:
+ pofile.read_po(buf, abort_invalid=True)
+ assert str(excinfo.value) == "missing msgstr for msgid 'foo' on 0"
+ else:
+ # Catalog is created with warning, no abort
+ output = pofile.read_po(buf)
+ assert len(output) == 1
+ assert output["foo"].string in ((''), ('', ''))