[Python-Dev] unittest assertRaisesRegex bug?
Ethan Furman
ethan at stoneleaf.us
Thu Mar 20 00:13:01 CET 2014
On 03/19/2014 03:57 PM, Antoine Pitrou wrote:
> On Wed, 19 Mar 2014 15:17:53 -0700
> Ethan Furman <ethan at stoneleaf.us> wrote:
>> On 03/19/2014 03:13 PM, Antoine Pitrou wrote:
>>> On Wed, 19 Mar 2014 14:37:42 -0700
>>> Ethan Furman <ethan at stoneleaf.us> wrote:
>>>> Here's the code in question:
>>>>
>>>> class PsuedoFloat:
>>>> def __init__(self, value):
>>>> self.value = float(value)
>>>> def __int__(self):
>>>> return int(self.value)
>>>>
>>>> pi = PsuedoFloat(3.1415)
>>>>
>>>> self.assertRaisesRegex(TypeError, '%x format: an integer is required, not PsuedoFloat', '%x'.__mod__, pi),
>>>>
>>>> Here's the exception:
>>>>
>>>> ======================================================================
>>>> ERROR: test_formatting (test.test_unicode.UnicodeTest)
>>>> ----------------------------------------------------------------------
>>>> TypeError: 'PsuedoFloat' object is not callable
>>>>
>>>> During handling of the above exception, another exception occurred:
>>>>
>>>> Traceback (most recent call last):
>>>> File "/home/ethan/source/python/issue19995/Lib/test/test_unicode.py", line 1156, in test_formatting
>>>> self.assertRaisesRegex(TypeError, '%c'.__mod__, pi),
>>>
>>> This is certainly not the code you are showing above.
>>
>> More words, please! :)
>
> I mean the line shown just above in the traceback does not match the
> code you presented at the top, and that line clearly has a missing
> regex pattern.
A regex pattern can be a literal, yes? In which case
exception -> TypeError
regex -> '%x format: an integer is required, not PsuedoFloat'
callable -> '%x'.__mod__
*args -> pi
**kwargs -> None
So, unless you can point to where I've gone wrong with the above (which is why I posted in the first place), I think we
have a bug in unittest.
Also:
self.assertRaisesRegex(TypeError, '%x format: an integer is required, not float','%x'.__mod__, 3.14),
self.assertRaisesRegex(TypeError, '%X format: an integer is required, not float','%X'.__mod__, 2.11),
self.assertRaisesRegex(TypeError, '%o format: an integer is required, not float','%o'.__mod__, 1.79),
these lines all work just fine.
--
~Ethan~
More information about the Python-Dev
mailing list