simplistix / sybil

Automated testing for the examples in your documentation.

Home Page:https://sybil.readthedocs.io/en/latest/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support an alternative to invisible-code-block for doctests

Gallaecio opened this issue · comments

It took me a while to realize that invisible-code-block only works with code blocks.

As far as I can tell, it is currently not possible to write invisible code as context for a documentation example that has lines of output.

Can you give a simple example or two of what you're looking to do and what your proposed solution would look like?

I tried to do this:

.. invisible-code-block: python
    remember_me = b'see how namespaces work?'

>>> remember_me
b'see how namespaces work?'

or

.. invisible-code-block: python
    remember_me = b'see how namespaces work?'

::

    >>> remember_me
    b'see how namespaces work?'

But I am told that “remember_me” is undefined, because it seems to work only for code-block, which does not allow to perform output check, as far as I know.

I'll looks like you're missing the whitespace line after .. invisible-code-block, here's an example of invisible code blocks and doctest sections interacting on the same namespace:

https://github.com/Simplistix/testfixtures/blob/master/docs/comparing.txt#L440-L464

What test runner are you using? pytest -v shows what blocks are being picked up, if your invisible code block isn't there, it's not correctly formatted.

It works indeed. Thanks!!!

For the record, I believe the underlying issue was not actually Sybil, but pytest using regular doctest. I was accidentally combining both type of tests, Sybil’s were picking up the hidden code, but doctest’s was not, and I though it was Sybil as well.

Oh yes, now that you mention it, I remember this and it's a pretty frustating bug in pytest:
pytest-dev/pytest#4954 (comment)
Please follow up there in the hope it might get some priority :-)

Following up on this a long while later, adding addopts = -p no:doctest to your pytest config gets its doctest parser out of the way.