On 3/6/07, Patrick Maupin <[EMAIL PROTECTED]> wrote: > It appears that if a C function is called from Python with **kwargs, a > new dictionary object is created and passed to the C function even if > **kwargs is empty, but if the same C function is called without > **kwargs, then the NULL pointer is passed to the C function. > > Because unittest always creates **kwargs, any code path in a C > function which is only executed when the *keywords parameter is NULL > will never be correctly tested from the standard unittest methods.
This needs some context; which call from unittest to a C function are you talking about? > doctest doesn't have this issue, but appears to be deprecated. Far from it! Doctest is alive and well. I even used it to test the xreload module I added to Py3k. I admit that I've not been a fan of it in the past, and in many cases I will prefer unittest, but there are definitely very good reasons to support doctest. Consider it a rare deviation from TOOWTDI. > OTOH > unless it would be a major performance hit to never pass empty > *dictionary parameters (always use a NULL pointer) to C functions, it > would remove a whole class of untested potential execution paths to > change the interpreter. You guessed it, it's a major performance hit to create a whole new dict object (even if empty) when the majority of calls don't need it. So, no, this isn't going away any time soon. -- --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ Python-3000 mailing list [email protected] http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com
