pytest-runner
=============

Setup scripts can use pytest-runner to add setup.py test support for pytest
runner.

Usage
-----

- Add 'pytest-runner' to your 'setup_requires'. Pin to '>=2.0,<3dev' (or
  similar) to avoid pulling in incompatible versions.
- Include 'pytest' and any other testing requirements to 'tests_require'.
- Invoke tests with ``setup.py pytest``.
- Pass ``--index-url`` to have test requirements downloaded from an alternate
  index URL.
- Pass additional py.test command-line options using ``--addopts``.
- Set permanent options for the pytest distutils command in the ``[pytest]``
  section of setup.cfg.
- Set permanent options for the pytest run itself in the ``[pytest]``
  section of pytest.ini or tox.ini. See `pytest 567
  <https://bitbucket.org/hpk42/pytest/issue/567>`_ for details on
  why setup.cfg is inadequate.
- Optionally, set ``test=pytest`` in the ``[aliases]`` section of setup.cfg
  to cause ``setup.py test`` to invoke pytest.

Example
-------

See the `jaraco.collections
<https://bitbucket.org/jaraco/jaraco.collections/>`_ project
for example usage.

Considerations
--------------

Conditional Requirement
~~~~~~~~~~~~~~~~~~~~~~~

Because it uses Setuptools setup_requires, pytest-runner will install itself
on every invocation of setup.py. In some cases, this causes delays for
invocations of setup.py that will never invoke pytest-runner. To help avoid
this contingency, consider requiring pytest-runner only when pytest
is invoked::

    needs_pytest = {'pytest', 'test', 'ptr'}.intersection(sys.argv)
    pytest_runner = ['pytest_runner'] if needs_pytest else []

    # ...

    setup(
    	#...
    	setup_requires=[
    		#... (other setup requirements)
    	] + pytest_runner,
    )


Changes
-------

2.3
~~~

* Use hgdistver for version management and file discovery.

2.2
~~~

* Honor ``.eggs`` directory for transient downloads as introduced in Setuptools
  7.0.

2.1
~~~

* The preferred invocation is now the 'pytest' command.

2.0
~~~

* Removed support for the alternate usage. The recommended usage (as a
  distutils command) is now the only supported usage.
* Removed support for the --junitxml parameter to the ptr command. Clients
  should pass the same parameter (and all other py.test arguments) to py.test
  via the --addopts parameter.

1.1
~~~

* Added support for --addopts to pass any arguments through to py.test.
* Deprecated support for --junitxml. Use --addopts instead. --junitxml will be
  removed in 2.0.

1.0
~~~

Initial implementation.
