[Python-Dev] unittest assertRaisesRegex bug?

R. David Murray rdmurray at bitdance.com
Thu Mar 20 01:45:19 CET 2014


On Wed, 19 Mar 2014 16:41:10 -0700, Thomas Wouters <thomas at python.org> wrote:
> On Wed, Mar 19, 2014 at 4:13 PM, Ethan Furman <ethan at stoneleaf.us> wrote:
> 
> > 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:
> >>>>> 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.
> >
> 
> What Antoine is trying to tell you is that the traceback you pasted shows
> this:
> 
>   File "/home/ethan/source/python/issue19995/Lib/test/test_unicode.py",
> line 1156, in test_formatting
>     self.assertRaisesRegex(TypeError, '%c'.__mod__, pi),
> 
> ... which is passing '%c'.__mod__ as the 'regex' argument. '%c'.__mod__ is
> a method of a builtin type, a 'method-wrapper' object, which is why you get
> the error you're getting: AttributeError: 'method-wrapper' object has no
> attribute 'search'.

I think http://bugs.python.org/issue20145 is relevant here.

--David


More information about the Python-Dev mailing list