self.assertDictEqual(actual._catalog, expected._catalog)
+ def test_po_with_bom(self):
+ with temp_cwd():
+ Path('bom.po').write_bytes(b'\xef\xbb\xbfmsgid "Python"\nmsgstr "Pioton"\n')
+
+ res = assert_python_failure(msgfmt, 'bom.po')
+ err = res.err.decode('utf-8')
+ self.assertIn('The file bom.po starts with a UTF-8 BOM', err)
+
def test_invalid_msgid_plural(self):
with temp_cwd():
Path('invalid.po').write_text('''\
import struct
import array
from email.parser import HeaderParser
+import codecs
__version__ = "1.2"
+
MESSAGES = {}
print(msg, file=sys.stderr)
sys.exit(1)
+ if lines[0].startswith(codecs.BOM_UTF8):
+ print(
+ f"The file {infile} starts with a UTF-8 BOM which is not allowed in .po files.\n"
+ "Please save the file without a BOM and try again.",
+ file=sys.stderr
+ )
+ sys.exit(1)
+
section = msgctxt = None
fuzzy = 0