Iwana 20211114 t1305 pytestx by aucampia · Pull Request #1460 · RDFLib/rdflib (original) (raw)
This patch replace all uses of nose with pytest. It also includes a
pytest plugin for creating EARL reports for tests with a rdf_test_uri
parameter.
Some caveats:
- HTML report directory is now htmlcov instead of coverage
- There is some warning related to the EARL reporting plugin which I can't quite figure out:
This is not causing any problems as far as I can tell, but still annoying..venv/lib64/python3.7/site-packages/_pytest/config/__init__.py:676 /home/iwana/sw/d/github.com/iafork/rdflib/.venv/lib64/python3.7/site-packages/_pytest/config/__init__.py:676: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: test.earl self.import_plugin(import_spec)
- python setup.py test won't work anymore, I can make it work but this is not advised by pytest: https://github.com/pytest-dev/pytest-runner/#deprecation-notice
- run_test.py is still there but it's not really referenced anymore from anywhere and the options it accepts are completely different as it's options were based on nose. I would say it should be removed entirely but for now it is basically just a wrapper around pytest that basically does nothing.
- Removed references to test attributes as currently they are not being used anywhere anyway, I guess we can add them back if there is some use for them later.
- A lot of tests are still marked to skip when really they should be marked with xfail. This is also affecting the RDFT test manifests and result in reports saying tests are skipped when really we know they will fail and they are only skipped for this reason. But there is no change here from before, and pytest makes it easier to dynamically do expected failures.
Special thanks to Wes Turner for his advice and inputs on this process.
- Removed unused ignores.
- Use official description text of RDFLib in DOAP used in EARL report.
This eliminates this warning:
.venv/lib64/python3.7/site-packages/_pytest/config/__init__.py:676
/home/iwana/sw/d/github.com/iafork/rdflib/.venv/lib64/python3.7/site-packages/_pytest/config/__init__.py:676: PytestAssertRewriteWarning: Module already imported so cannot be rewritten: test.earl
self.import_plugin(import_spec)
By adding PYTEST_DONT_REWRITE to the plugin module docstring.
pytest's behaviour causes some spurious warnings during test, this commit configures pytest to ignore them.
Skipping was done incorrectly and failed on Windows.
This is so that it works properly on MacOS which does not permit listening on random loopback addresses for user processes.
Errors were being piped to true, but that will fail if it runs with
pipefail. The better option is to do black ... || true
which will work
for ignoring errors even with pipefail.