Issue #9738: PyUnicode_FromFormat() and PyErr_Format() raise an error on

a non-ASCII byte in the format string.

Document also the encoding.
This commit is contained in:
Victor Stinner 2010-09-11 00:54:47 +00:00
parent cd419abe42
commit 1205f2774e
8 changed files with 53 additions and 6 deletions

View file

@ -1385,6 +1385,20 @@ class UnicodeTest(string_tests.CommonTest,
self.assertEquals("%s" % s, '__str__ overridden')
self.assertEquals("{}".format(s), '__str__ overridden')
def test_from_format(self):
# Ensure that PyUnicode_FromFormat() raises an error for a non-ascii
# format string.
from _testcapi import format_unicode
# ascii format, non-ascii argument
text = format_unicode(b'ascii\x7f=%U', 'unicode\xe9')
self.assertEqual(text, 'ascii\x7f=unicode\xe9')
# non-ascii format, ascii argument
self.assertRaisesRegexp(ValueError,
'^PyUnicode_FromFormatV\(\) expects an ASCII-encoded format '
'string, got a non-ascii byte: 0xe9$',
format_unicode, b'unicode\xe9=%s', 'ascii')
def test_main():
support.run_unittest(__name__)