diff --git a/CHANGELOG.rst b/CHANGELOG.rst index f2d86b24f9f..7dbf5344fb0 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -8,6 +8,67 @@ .. towncrier release notes start +Pytest 3.6.0 (2018-05-03) +========================= + +Features +-------- + +- Now when ``@pytest.fixture`` is applied more than once to the same function a + ``ValueError`` is raised. This buggy behavior would cause surprising problems + and if was working for a test suite it was mostly by accident. (`#2334 + `_) + +- Support for Python 3.7's builtin ``breakpoint()`` method, see `Using the + builtin breakpoint function + `_ for + details. (`#3180 `_) + +- ``monkeypatch`` now supports a ``context()`` function which acts as a context + manager which undoes all patching done within the ``with`` block. (`#3290 + `_) + +- The ``--pdb`` option now causes KeyboardInterrupt to enter the debugger, + instead of stopping the test session. On python 2.7, hitting CTRL+C again + exits the debugger. On python 3.2 and higher, use CTRL+D. (`#3299 + `_) + +- pytest not longer changes the log level of the root logger when the + ``log-level`` parameter has greater numeric value than that of the level of + the root logger, which makes it play better with custom logging configuration + in user code. (`#3307 `_) + +- Revamp the internals of the ``pytest.mark`` implementation with correct per + node handling and introduce a new ``Node.iter_markers`` API for mark + iteration over nodes which fixes a number of long standing bugs caused by the + old approach. More details can be found in `the marks documentation + `_. + (`#3317 `_) + + +Bug Fixes +--------- + +- A rare race-condition which might result in corrupted ``.pyc`` files on + Windows has been hopefully solved. (`#3008 + `_) + +- Also use iter_marker for discovering the marks applying for marker + expressions from the cli to avoid the bad data from the legacy mark storage. + (`#3441 `_) + + +Trivial/Internal Changes +------------------------ + +- ``pytest`` now depends on the `python-atomicwrites + `_ library. (`#3008 + `_) + +- Update all pypi.python.org URLs to pypi.org. (`#3431 + `_) + + Pytest 3.5.1 (2018-04-23) ========================= diff --git a/README.rst b/README.rst index b2ed1e14043..dd8838d166c 100644 --- a/README.rst +++ b/README.rst @@ -6,13 +6,13 @@ ------ .. image:: https://img.shields.io/pypi/v/pytest.svg - :target: https://pypi.python.org/pypi/pytest + :target: https://pypi.org/project/pytest/ -.. image:: https://anaconda.org/conda-forge/pytest/badges/version.svg +.. image:: https://img.shields.io/conda/vn/conda-forge/pytest.svg :target: https://anaconda.org/conda-forge/pytest .. image:: https://img.shields.io/pypi/pyversions/pytest.svg - :target: https://pypi.python.org/pypi/pytest + :target: https://pypi.org/project/pytest/ .. image:: https://img.shields.io/coveralls/pytest-dev/pytest/master.svg :target: https://coveralls.io/r/pytest-dev/pytest diff --git a/changelog/2334.feature b/changelog/2334.feature deleted file mode 100644 index 5af16852614..00000000000 --- a/changelog/2334.feature +++ /dev/null @@ -1 +0,0 @@ -Now when ``@pytest.fixture`` is applied more than once to the same function a ``ValueError`` is raised. This buggy behavior would cause surprising problems and if was working for a test suite it was mostly by accident. diff --git a/changelog/3008.bugfix.rst b/changelog/3008.bugfix.rst deleted file mode 100644 index 780c54773e3..00000000000 --- a/changelog/3008.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -A rare race-condition which might result in corrupted ``.pyc`` files on Windows has been hopefully solved. diff --git a/changelog/3008.trivial.rst b/changelog/3008.trivial.rst deleted file mode 100644 index 74231da0957..00000000000 --- a/changelog/3008.trivial.rst +++ /dev/null @@ -1 +0,0 @@ -``pytest`` now depends on the `python-atomicwrites `_ library. diff --git a/changelog/3180.feature.rst b/changelog/3180.feature.rst deleted file mode 100644 index 31db646f469..00000000000 --- a/changelog/3180.feature.rst +++ /dev/null @@ -1 +0,0 @@ -Support for Python 3.7's builtin ``breakpoint()`` method, see `Using the builtin breakpoint function `_ for details. diff --git a/changelog/3290.feature b/changelog/3290.feature deleted file mode 100644 index a40afcb1a6b..00000000000 --- a/changelog/3290.feature +++ /dev/null @@ -1,2 +0,0 @@ -``monkeypatch`` now supports a ``context()`` function which acts as a context manager which undoes all patching done -within the ``with`` block. diff --git a/changelog/3299.feature.rst b/changelog/3299.feature.rst deleted file mode 100644 index 5fe591e4468..00000000000 --- a/changelog/3299.feature.rst +++ /dev/null @@ -1,2 +0,0 @@ -The ``--pdb`` option now causes KeyboardInterrupt to enter the debugger, instead of stopping the test session. -On python 2.7, hitting CTRL+C again exits the debugger. On python 3.2 and higher, use CTRL+D. \ No newline at end of file diff --git a/changelog/3307.feature.rst b/changelog/3307.feature.rst deleted file mode 100644 index dde44906619..00000000000 --- a/changelog/3307.feature.rst +++ /dev/null @@ -1,3 +0,0 @@ -pytest not longer changes the log level of the root logger when the -``log-level`` parameter has greater numeric value than that of the level of -the root logger, which makes it play better with custom logging configuration in user code. diff --git a/changelog/3317.feature b/changelog/3317.feature deleted file mode 100644 index b7f947af89d..00000000000 --- a/changelog/3317.feature +++ /dev/null @@ -1,3 +0,0 @@ -Revamp the internals of the ``pytest.mark`` implementation with correct per node handling and introduce a new ``Node.iter_markers`` -API for mark iteration over nodes which fixes a number of long standing bugs caused by the old approach. More details can be -found in `the marks documentation `_. diff --git a/changelog/3441.bugfix b/changelog/3441.bugfix deleted file mode 100644 index 6afeeab6245..00000000000 --- a/changelog/3441.bugfix +++ /dev/null @@ -1 +0,0 @@ -Also use iter_marker for discovering the marks applying for marker expressions from the cli to avoid the bad data from the legacy mark storage. \ No newline at end of file diff --git a/doc/en/_templates/links.html b/doc/en/_templates/links.html index 91157dfb7af..3a1a27a26f2 100644 --- a/doc/en/_templates/links.html +++ b/doc/en/_templates/links.html @@ -1,6 +1,6 @@

Useful Links

    -
  • pytest @ PyPI
  • +
  • pytest @ PyPI
  • pytest @ GitHub
  • 3rd party plugins
  • Issue Tracker
  • diff --git a/doc/en/announce/index.rst b/doc/en/announce/index.rst index f802c9e4c4b..98b9de572af 100644 --- a/doc/en/announce/index.rst +++ b/doc/en/announce/index.rst @@ -6,6 +6,7 @@ Release announcements :maxdepth: 2 + release-3.6.0 release-3.5.1 release-3.5.0 release-3.4.2 diff --git a/doc/en/announce/release-2.3.5.rst b/doc/en/announce/release-2.3.5.rst index 112399ef3ca..bb4e84af0f9 100644 --- a/doc/en/announce/release-2.3.5.rst +++ b/doc/en/announce/release-2.3.5.rst @@ -14,7 +14,7 @@ few interesting new plugins saw the light last month: And several others like pytest-django saw maintenance releases. For a more complete list, check out -https://pypi.python.org/pypi?%3Aaction=search&term=pytest&submit=search. +https://pypi.org/search/?q=pytest For general information see: diff --git a/doc/en/announce/release-2.4.0.rst b/doc/en/announce/release-2.4.0.rst index be3aaedb09f..4fb3d05cd45 100644 --- a/doc/en/announce/release-2.4.0.rst +++ b/doc/en/announce/release-2.4.0.rst @@ -23,14 +23,14 @@ a full list of details. A few feature highlights: called if the corresponding setup method succeeded. - integrate tab-completion on command line options if you - have `argcomplete `_ + have `argcomplete `_ configured. - allow boolean expression directly with skipif/xfail if a "reason" is also specified. - a new hook ``pytest_load_initial_conftests`` allows plugins like - `pytest-django `_ to + `pytest-django `_ to influence the environment before conftest files import ``django``. - reporting: color the last line red or green depending if diff --git a/doc/en/announce/release-3.6.0.rst b/doc/en/announce/release-3.6.0.rst new file mode 100644 index 00000000000..bd68f217501 --- /dev/null +++ b/doc/en/announce/release-3.6.0.rst @@ -0,0 +1,36 @@ +pytest-3.6.0 +======================================= + +The pytest team is proud to announce the 3.6.0 release! + +pytest is a mature Python testing tool with more than a 1600 tests +against itself, passing on many different interpreters and platforms. + +This release contains a number of bugs fixes and improvements, so users are encouraged +to take a look at the CHANGELOG: + + http://doc.pytest.org/en/latest/changelog.html + +For complete documentation, please visit: + + http://docs.pytest.org + +As usual, you can upgrade from pypi via: + + pip install -U pytest + +Thanks to all who contributed to this release, among them: + +* Anthony Shaw +* ApaDoctor +* Brian Maissy +* Bruno Oliveira +* Jon Dufresne +* Katerina Koukiou +* Rachel Kogan +* Ronny Pfannschmidt +* feuillemorte + + +Happy testing, +The Pytest Development Team diff --git a/doc/en/development_guide.rst b/doc/en/development_guide.rst index 2dac82880b1..f69371a5add 100644 --- a/doc/en/development_guide.rst +++ b/doc/en/development_guide.rst @@ -10,7 +10,7 @@ Code Style ---------- * `PEP-8 `_ -* `flake8 `_ for quality checks +* `flake8 `_ for quality checks * `invoke `_ to automate development tasks diff --git a/doc/en/example/nonpython.rst b/doc/en/example/nonpython.rst index dd25e888f57..ca7b2c8df12 100644 --- a/doc/en/example/nonpython.rst +++ b/doc/en/example/nonpython.rst @@ -10,7 +10,7 @@ A basic example for specifying tests in Yaml files -------------------------------------------------------------- .. _`pytest-yamlwsgi`: http://bitbucket.org/aafshar/pytest-yamlwsgi/src/tip/pytest_yamlwsgi.py -.. _`PyYAML`: http://pypi.python.org/pypi/PyYAML/ +.. _`PyYAML`: https://pypi.org/project/PyYAML/ Here is an example ``conftest.py`` (extracted from Ali Afshnars special purpose `pytest-yamlwsgi`_ plugin). This ``conftest.py`` will collect ``test*.yml`` files and will execute the yaml-formatted content as custom tests: diff --git a/doc/en/example/parametrize.rst b/doc/en/example/parametrize.rst index dd01b25277a..073f7fb88d2 100644 --- a/doc/en/example/parametrize.rst +++ b/doc/en/example/parametrize.rst @@ -160,7 +160,7 @@ together with the actual data, instead of listing them separately. A quick port of "testscenarios" ------------------------------------ -.. _`test scenarios`: http://pypi.python.org/pypi/testscenarios/ +.. _`test scenarios`: https://pypi.org/project/testscenarios/ Here is a quick port to run tests configured with `test scenarios`_, an add-on from Robert Collins for the standard unittest framework. We diff --git a/doc/en/example/simple.rst b/doc/en/example/simple.rst index ce9ec86038d..634e01d5d32 100644 --- a/doc/en/example/simple.rst +++ b/doc/en/example/simple.rst @@ -108,7 +108,7 @@ the command line arguments before they get processed: num = max(multiprocessing.cpu_count() / 2, 1) args[:] = ["-n", str(num)] + args -If you have the `xdist plugin `_ installed +If you have the `xdist plugin `_ installed you will now always perform test runs using a number of subprocesses close to your CPU. Running in an empty directory with the above conftest.py:: @@ -778,7 +778,7 @@ which test got stuck, for example if pytest was run in quiet mode (``-q``) or yo output. This is particularly a problem if the problem helps only sporadically, the famous "flaky" kind of tests. ``pytest`` sets a ``PYTEST_CURRENT_TEST`` environment variable when running tests, which can be inspected -by process monitoring utilities or libraries like `psutil `_ to discover which +by process monitoring utilities or libraries like `psutil `_ to discover which test got stuck if necessary: .. code-block:: python diff --git a/doc/en/faq.rst b/doc/en/faq.rst index 27d74e1148c..5b13818ea5e 100644 --- a/doc/en/faq.rst +++ b/doc/en/faq.rst @@ -30,14 +30,14 @@ and does not handle Deferreds returned from a test in pytest style. If you are using trial's unittest.TestCase chances are that you can just run your tests even if you return Deferreds. In addition, there also is a dedicated `pytest-twisted -`_ plugin which allows you to +`_ plugin which allows you to return deferreds from pytest-style tests, allowing the use of :ref:`fixtures` and other features. how does pytest work with Django? ++++++++++++++++++++++++++++++++++++++++++++++ -In 2012, some work is going into the `pytest-django plugin `_. It substitutes the usage of Django's +In 2012, some work is going into the `pytest-django plugin `_. It substitutes the usage of Django's ``manage.py test`` and allows the use of all pytest features_ most of which are not available from Django directly. diff --git a/doc/en/fixture.rst b/doc/en/fixture.rst index fbb922d796c..f1cdf622a95 100644 --- a/doc/en/fixture.rst +++ b/doc/en/fixture.rst @@ -154,7 +154,7 @@ This makes use of the automatic caching mechanisms of pytest. Another good approach is by adding the data files in the ``tests`` folder. There are also community plugins available to help managing this aspect of testing, e.g. `pytest-datadir `__ -and `pytest-datafiles `__. +and `pytest-datafiles `__. .. _smtpshared: diff --git a/doc/en/getting-started.rst b/doc/en/getting-started.rst index 7b9bfba574f..aae0bf97168 100644 --- a/doc/en/getting-started.rst +++ b/doc/en/getting-started.rst @@ -5,10 +5,10 @@ Installation and Getting Started **Platforms**: Unix/Posix and Windows -**PyPI package name**: `pytest `_ +**PyPI package name**: `pytest `_ -**Dependencies**: `py `_, -`colorama (Windows) `_, +**Dependencies**: `py `_, +`colorama (Windows) `_, **Documentation as PDF**: `download latest `_ diff --git a/doc/en/goodpractices.rst b/doc/en/goodpractices.rst index 16fdd24c392..490ecadd62f 100644 --- a/doc/en/goodpractices.rst +++ b/doc/en/goodpractices.rst @@ -168,9 +168,9 @@ Note that this layout also works in conjunction with the ``src`` layout mentione to avoid surprises such as a test module getting imported twice. -.. _`virtualenv`: http://pypi.python.org/pypi/virtualenv +.. _`virtualenv`: https://pypi.org/project/virtualenv/ .. _`buildout`: http://www.buildout.org/ -.. _pip: http://pypi.python.org/pypi/pip +.. _pip: https://pypi.org/project/pip/ .. _`use tox`: @@ -205,7 +205,7 @@ Integrating with setuptools / ``python setup.py test`` / ``pytest-runner`` -------------------------------------------------------------------------- You can integrate test runs into your setuptools based project -with the `pytest-runner `_ plugin. +with the `pytest-runner `_ plugin. Add this to ``setup.py`` file: diff --git a/doc/en/links.inc b/doc/en/links.inc index b69390baa84..4d5a4b1eebf 100644 --- a/doc/en/links.inc +++ b/doc/en/links.inc @@ -7,14 +7,14 @@ .. _`reStructured Text`: http://docutils.sourceforge.net .. _`Python debugger`: http://docs.python.org/lib/module-pdb.html .. _nose: https://nose.readthedocs.io/en/latest/ -.. _pytest: http://pypi.python.org/pypi/pytest +.. _pytest: https://pypi.org/project/pytest/ .. _mercurial: http://mercurial.selenic.com/wiki/ -.. _`setuptools`: http://pypi.python.org/pypi/setuptools +.. _`setuptools`: https://pypi.org/project/setuptools/ .. _`easy_install`: .. _`distribute docs`: -.. _`distribute`: http://pypi.python.org/pypi/distribute -.. _`pip`: http://pypi.python.org/pypi/pip -.. _`virtualenv`: http://pypi.python.org/pypi/virtualenv +.. _`distribute`: https://pypi.org/project/distribute/ +.. _`pip`: https://pypi.org/project/pip/ +.. _`virtualenv`: https://pypi.org/project/virtualenv/ .. _hudson: http://hudson-ci.org/ .. _jenkins: http://jenkins-ci.org/ .. _tox: http://testrun.org/tox diff --git a/doc/en/plugins.rst b/doc/en/plugins.rst index 3d1226d3432..9ddba5d38ca 100644 --- a/doc/en/plugins.rst +++ b/doc/en/plugins.rst @@ -20,39 +20,39 @@ Here is a little annotated list for some popular plugins: .. _`django`: https://www.djangoproject.com/ -* `pytest-django `_: write tests +* `pytest-django `_: write tests for `django`_ apps, using pytest integration. -* `pytest-twisted `_: write tests +* `pytest-twisted `_: write tests for `twisted `_ apps, starting a reactor and processing deferreds from test functions. -* `pytest-cov `_: +* `pytest-cov `_: coverage reporting, compatible with distributed testing -* `pytest-xdist `_: +* `pytest-xdist `_: to distribute tests to CPUs and remote hosts, to run in boxed mode which allows to survive segmentation faults, to run in looponfailing mode, automatically re-running failing tests on file changes. -* `pytest-instafail `_: +* `pytest-instafail `_: to report failures while the test run is happening. -* `pytest-bdd `_ and - `pytest-konira `_ +* `pytest-bdd `_ and + `pytest-konira `_ to write tests using behaviour-driven testing. -* `pytest-timeout `_: +* `pytest-timeout `_: to timeout tests based on function marks or global definitions. -* `pytest-pep8 `_: +* `pytest-pep8 `_: a ``--pep8`` option to enable PEP8 compliance checking. -* `pytest-flakes `_: +* `pytest-flakes `_: check source code with pyflakes. -* `oejskit `_: +* `oejskit `_: a plugin to run javascript unittests in live browsers. To see a complete list of all plugins with their latest testing @@ -61,7 +61,7 @@ status against different pytest and Python versions, please visit You may also discover more plugins through a `pytest- pypi.python.org search`_. -.. _`pytest- pypi.python.org search`: http://pypi.python.org/pypi?%3Aaction=search&term=pytest-&submit=search +.. _`pytest- pypi.python.org search`: https://pypi.org/search/?q=pytest- .. _`available installable plugins`: diff --git a/doc/en/projects.rst b/doc/en/projects.rst index 51f2d94fdcc..606e9d47c16 100644 --- a/doc/en/projects.rst +++ b/doc/en/projects.rst @@ -32,40 +32,40 @@ Here are some examples of projects using ``pytest`` (please send notes via :ref: * `PyPM `_ ActiveState's package manager * `Fom `_ a fluid object mapper for FluidDB * `applib `_ cross-platform utilities -* `six `_ Python 2 and 3 compatibility utilities +* `six `_ Python 2 and 3 compatibility utilities * `pediapress `_ MediaWiki articles -* `mwlib `_ mediawiki parser and utility library +* `mwlib `_ mediawiki parser and utility library * `The Translate Toolkit `_ for localization and conversion * `execnet `_ rapid multi-Python deployment * `pylib `_ cross-platform path, IO, dynamic code library * `Pacha `_ configuration management in five minutes -* `bbfreeze `_ create standalone executables from Python scripts +* `bbfreeze `_ create standalone executables from Python scripts * `pdb++ `_ a fancier version of PDB * `py-s3fuse `_ Amazon S3 FUSE based filesystem * `waskr `_ WSGI Stats Middleware * `guachi `_ global persistent configs for Python modules -* `Circuits `_ lightweight Event Driven Framework +* `Circuits `_ lightweight Event Driven Framework * `pygtk-helpers `_ easy interaction with PyGTK * `QuantumCore `_ statusmessage and repoze openid plugin * `pydataportability `_ libraries for managing the open web * `XIST `_ extensible HTML/XML generator -* `tiddlyweb `_ optionally headless, extensible RESTful datastore +* `tiddlyweb `_ optionally headless, extensible RESTful datastore * `fancycompleter `_ for colorful tab-completion * `Paludis `_ tools for Gentoo Paludis package manager * `Gerald `_ schema comparison tool * `abjad `_ Python API for Formalized Score control * `bu `_ a microscopic build system * `katcp `_ Telescope communication protocol over Twisted -* `kss plugin timer `_ +* `kss plugin timer `_ * `pyudev `_ a pure Python binding to the Linux library libudev * `pytest-localserver `_ a plugin for pytest that provides an httpserver and smtpserver -* `pytest-monkeyplus `_ a plugin that extends monkeypatch +* `pytest-monkeyplus `_ a plugin that extends monkeypatch These projects help integrate ``pytest`` into other Python frameworks: -* `pytest-django `_ for Django +* `pytest-django `_ for Django * `zope.pytest `_ for Zope and Grok -* `pytest_gae `_ for Google App Engine +* `pytest_gae `_ for Google App Engine * There is `some work `_ underway for Kotti, a CMS built in Pyramid/Pylons diff --git a/doc/en/proposals/parametrize_with_fixtures.rst b/doc/en/proposals/parametrize_with_fixtures.rst index 146032aa471..eb4b078793f 100644 --- a/doc/en/proposals/parametrize_with_fixtures.rst +++ b/doc/en/proposals/parametrize_with_fixtures.rst @@ -118,7 +118,7 @@ all parameters marked as a fixture. .. note:: - The `pytest-lazy-fixture `_ plugin implements a very + The `pytest-lazy-fixture `_ plugin implements a very similar solution to the proposal below, make sure to check it out. .. code-block:: python diff --git a/doc/en/test/plugin/cov.rst b/doc/en/test/plugin/cov.rst index 541c7ef9479..0b95aa45229 100644 --- a/doc/en/test/plugin/cov.rst +++ b/doc/en/test/plugin/cov.rst @@ -21,7 +21,7 @@ The `pytest-cov`_ package may be installed with pip or easy_install:: pip install pytest-cov easy_install pytest-cov -.. _`pytest-cov`: http://pypi.python.org/pypi/pytest-cov/ +.. _`pytest-cov`: https://pypi.org/project/pytest-cov/ Uninstallation diff --git a/doc/en/test/plugin/oejskit.rst b/doc/en/test/plugin/oejskit.rst index 4995aa17c72..791f5c72552 100644 --- a/doc/en/test/plugin/oejskit.rst +++ b/doc/en/test/plugin/oejskit.rst @@ -7,6 +7,6 @@ The approach enables to write integration tests such that the JavaScript code is For more info and download please visit the `oejskit PyPI`_ page. .. _`oejskit`: -.. _`oejskit PyPI`: http://pypi.python.org/pypi/oejskit +.. _`oejskit PyPI`: https://pypi.org/project/oejskit/ .. source link 'http://bitbucket.org/pedronis/js-infrastructure/src/tip/pytest_jstests.py', diff --git a/doc/en/test/plugin/xdist.rst b/doc/en/test/plugin/xdist.rst index 506d240aee1..865b3596dd2 100644 --- a/doc/en/test/plugin/xdist.rst +++ b/doc/en/test/plugin/xdist.rst @@ -26,7 +26,7 @@ program source code to the remote place. All test results are reported back and displayed to your local test session. You may specify different Python versions and interpreters. -.. _`pytest-xdist`: http://pypi.python.org/pypi/pytest-xdist +.. _`pytest-xdist`: https://pypi.org/project/pytest-xdist/ Usage examples --------------------- diff --git a/doc/en/unittest.rst b/doc/en/unittest.rst index b44bda44fa8..1bc33ab191c 100644 --- a/doc/en/unittest.rst +++ b/doc/en/unittest.rst @@ -46,9 +46,9 @@ in most cases without having to modify existing code: * :ref:`maxfail`; * :ref:`--pdb ` command-line option for debugging on test failures (see :ref:`note ` below); -* Distribute tests to multiple CPUs using the `pytest-xdist `_ plugin; +* Distribute tests to multiple CPUs using the `pytest-xdist `_ plugin; * Use :ref:`plain assert-statements ` instead of ``self.assert*`` functions (`unittest2pytest - `__ is immensely helpful in this); + `__ is immensely helpful in this); pytest features in ``unittest.TestCase`` subclasses diff --git a/doc/en/usage.rst b/doc/en/usage.rst index 72b2eedc9d0..b9b8059f7d2 100644 --- a/doc/en/usage.rst +++ b/doc/en/usage.rst @@ -421,7 +421,7 @@ Creating resultlog format files This option is rarely used and is scheduled for removal in 4.0. An alternative for users which still need similar functionality is to use the - `pytest-tap `_ plugin which provides + `pytest-tap `_ plugin which provides a stream of test data. If you have any concerns, please don't hesitate to diff --git a/doc/en/writing_plugins.rst b/doc/en/writing_plugins.rst index 7da09dbbbf5..67c885efb75 100644 --- a/doc/en/writing_plugins.rst +++ b/doc/en/writing_plugins.rst @@ -103,7 +103,7 @@ Here is how you might run it:: Writing your own plugin ----------------------- -.. _`setuptools`: http://pypi.python.org/pypi/setuptools +.. _`setuptools`: https://pypi.org/project/setuptools/ If you want to write a plugin, there are many real-life examples you can copy from: