Stefan Behnel wrote:
> Dag Sverre Seljebotn wrote:
>   
>> I now have code sitting on my drive for a doctesthack directive. What it 
>> does is work around the limitations of the doctest module by 
>> automatically creating a global __test__ dictionary mapping descriptive 
>> names to function and method docstrings.
>>
>> 1) Can I push it?
>> 2) Can I make it the default? It never does anything if a __test__ 
>> already exists, so it should be fully backwards compatible. The only 
>> downside I can see is a little bit of extra memory used.
>>
>> Line numbers are embedded into the test names (the keys in __dict__).
>>
>> Note: This does not solve the problem of doctest being unable to print 
>> line numbers for class docstrings. Also the test procedure ends up 
>> flowing a little bit different from the Python module (as each function 
>> is a seperate testcase, and not simply part of the module test). As the 
>> name says, it is a hack.
>>     
>
> Now that I know what kind of problems this does *not* fix and what new
> problems it introduces, what about some more detail what kind of problem
> this actually fixes?
>   
What it fixes is that I can take a simple pyx file like this:

def func(x):
    """
    >>> func(3)
    """
    ...

and then test it like I would a Python module:

python -c 'import doctest; import mymod; doctest.testmod(mymod)'

doctest does not pick up the function docstring automatically as it 
reports negative to inspect.isfunction, however putting those functions 
in the __test__ dict works around it.

Arguments in favor:
 - Lowers the barrier. It is the kind of thing which took me by surprise 
when I first met it; letting this be the default could save half an hour 
for every new Cython user.
 - This also allows very easily writing function-wise doctests in the 
Cython test suite

An approach which requires a custom script for doctesting Cython files 
is here:

http://wiki.cython.org/FAQ#HowcanIrundoctestsinCythoncode.28pyxfiles.29.3F

But I happen to like this approach better as it lower the barriers and 
makes peoples test scripts simpler without Cython-specific logic.

Dag Sverre
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to