mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
* gh-131015: Add test for bytes formatting errors (#131881)
Co-authored-by: Ageev Maxim <maksim170901@gmail.com>
(cherry picked from commit 05557788f3
)
This commit is contained in:
parent
0c110439b3
commit
6dab90a403
1 changed files with 32 additions and 0 deletions
|
@ -10,6 +10,7 @@ import re
|
|||
import sys
|
||||
import copy
|
||||
import functools
|
||||
import operator
|
||||
import pickle
|
||||
import tempfile
|
||||
import textwrap
|
||||
|
@ -737,6 +738,37 @@ class BaseBytesTest:
|
|||
check(b'%i%b %*.*b', (10, b'3', 5, 3, b'abc',), b'103 abc')
|
||||
check(b'%c', b'a', b'a')
|
||||
|
||||
class PseudoFloat:
|
||||
def __init__(self, value):
|
||||
self.value = float(value)
|
||||
def __int__(self):
|
||||
return int(self.value)
|
||||
|
||||
pi = PseudoFloat(3.1415)
|
||||
|
||||
exceptions_params = [
|
||||
('%x format: an integer is required, not float', b'%x', 3.14),
|
||||
('%X format: an integer is required, not float', b'%X', 2.11),
|
||||
('%o format: an integer is required, not float', b'%o', 1.79),
|
||||
('%x format: an integer is required, not PseudoFloat', b'%x', pi),
|
||||
('%x format: an integer is required, not complex', b'%x', 3j),
|
||||
('%X format: an integer is required, not complex', b'%X', 2j),
|
||||
('%o format: an integer is required, not complex', b'%o', 1j),
|
||||
('%u format: a real number is required, not complex', b'%u', 3j),
|
||||
# See https://github.com/python/cpython/issues/130928 as for why
|
||||
# the exception message contains '%d' instead of '%i'.
|
||||
('%d format: a real number is required, not complex', b'%i', 2j),
|
||||
('%d format: a real number is required, not complex', b'%d', 2j),
|
||||
(
|
||||
r'%c requires an integer in range\(256\) or a single byte',
|
||||
b'%c', pi
|
||||
),
|
||||
]
|
||||
|
||||
for msg, format_bytes, value in exceptions_params:
|
||||
with self.assertRaisesRegex(TypeError, msg):
|
||||
operator.mod(format_bytes, value)
|
||||
|
||||
def test_imod(self):
|
||||
b = self.type2test(b'hello, %b!')
|
||||
orig = b
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue