summaryrefslogtreecommitdiff
path: root/README
blob: 6247cff8e8166318fc04062b25aac7409b8e80dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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.