Re: [docutils:feature-requests] #81 0.17.1: pytest is failing

Guenter Milde via Docutils-develop <[email protected]>
Newsgroups gmane.text.docutils.devel
Message-ID <[email protected]>
Dear Adam, dear Docutils developers,

On 2022-12-02, Adam Turner wrote:

...

> Perhaps we should add ``maxDiff = None`` to all test cases.

To all tests where it applies, yes.
But this might also be done step by step whenever required.


>>     #> pytest-3 --quiet .
>>     [...]


>> * Only 369 out of 1739 tests reported by "alltests.py" are reported.
>>   Is this different counting or does pytest miss more than half of the
>>   tests?

> Different counting -- "sub tests" aren't counted individually by
> default, see ``NumbersTestResult`` in ``alltests.py``.

Ah. So this is because a large number of tests becam "downgraded" to
sub-tests.


...


> I am unsure if we should declare support for this method of running
> tests, whilst it works it may constrain us should we choose e.g. to
> move to ``pytest`` more properly.

We would need to announce this new requirement anyway.
For now, we may just add a caveat, e.g.

diff --git a/docutils/docs/dev/testing.txt b/docutils/docs/dev/testing.txt
index be934a7af..817f20733 100644
--- a/docutils/docs/dev/testing.txt
+++ b/docutils/docs/dev/testing.txt
@@ -40,15 +40,15 @@ In a pinch, the edge cases should cover most of it.
 .. note::
    The ``alltests.py`` test runner is based on the standard library's unittest_
    framework.
-   Since Docutils 0.19, running ``python -m unittest``, the pytest_, and the
-   nose_ frameworks no longer result in spurious failures (cf. `bug #270`_).
-   However, there are differences in the reported number of tests and in
-   test coverage.
+   Since Docutils 0.19, running ``python -m unittest`` and the pytest_
+   framework no longer result in spurious failures (cf. `bug #270`_).
+   However, there are differences in the reported number of tests
+   (``alltests.py`` also counts sub-tests).
+   In future, running the test suite may require pytest_.
 
 __ policies.html#check-ins
 .. _unittest: https://docs.python.org/3/library/unittest.html
 .. _pytest: https://pypi.org/project/pytest
-.. _nose: https://pypi.org/project/nose
 .. _`bug #270`: https://sourceforge.net/p/docutils/bugs/270/
 

>> The "nose" test framework fails, too::

> ``nose`` is unsupported and I don't intend to support it. The
> maintainers don't recommend using it
> (https://nose.readthedocs.io/en/latest/#note-to-users)

OK.

> -----

>> Running idividual test files::

> Must the executable be ``python`` here?  
> ``pytest .\test_parsers\test_rst\test_definition_lists.py`` works, as
> ``pytest`` discovers the root directory as the one containing
> ``setup.cfg`` (or a numer of other sentinel files) and prepends it to
> ``sys.path``. Similarly, ``pytest test_definition_lists.py`` works
> within ``test\test_parsers\test_rst``. 

With the fixes in r9263+, individual test files run fine again.
Switching to pytest is an option for the future 
(would require changing the "shebang line").

> -----

>> trying the test suite on an installation without recommonmark, I
>> stumbled about a new problem:

>>     Traceback (most recent call last):
>>     [...]
>>         raise unittest.SkipTest(f'Cannot test "{md_parser}". '
>>     unittest.case.SkipTest: Cannot test "recommonmark". Parser not found.

>> It seems raising SkipTest is only applicable for test run through the unittest framework (where I am not sure all test run).

> Ahh, we should use ``unittest.defaultTestLoader.discover`` to load
> tests, this respects ``SkipTest``.

Solved now.


Thank you for the work and for the explanations.

Günter



_______________________________________________
Docutils-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/docutils-develop

Please use "Reply All" to reply to the list.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.