Skip to content

Commit 9a97bb5

Browse files
committed
Add xdist 0.30 and update bootstrap.py to work better (on windows too).
1 parent 508e237 commit 9a97bb5

File tree

5 files changed

+92
-15
lines changed

5 files changed

+92
-15
lines changed

.travis.yml

+48
Original file line numberDiff line numberDiff line change
@@ -77,50 +77,98 @@ jobs:
7777
python: '3.6'
7878
- env: TOXENV=py36-pytest46-xdist29-coverage50
7979
python: '3.6'
80+
- env: TOXENV=py36-pytest46-xdist30-coverage45
81+
python: '3.6'
82+
- env: TOXENV=py36-pytest46-xdist30-coverage50
83+
python: '3.6'
8084
- env: TOXENV=py36-pytest51-xdist29-coverage45
8185
python: '3.6'
8286
- env: TOXENV=py36-pytest51-xdist29-coverage50
8387
python: '3.6'
88+
- env: TOXENV=py36-pytest51-xdist30-coverage45
89+
python: '3.6'
90+
- env: TOXENV=py36-pytest51-xdist30-coverage50
91+
python: '3.6'
8492
- env: TOXENV=py36-pytest52-xdist29-coverage45
8593
python: '3.6'
8694
- env: TOXENV=py36-pytest52-xdist29-coverage50
8795
python: '3.6'
96+
- env: TOXENV=py36-pytest52-xdist30-coverage45
97+
python: '3.6'
98+
- env: TOXENV=py36-pytest52-xdist30-coverage50
99+
python: '3.6'
88100
- env: TOXENV=py37-pytest46-xdist29-coverage45
89101
python: '3.7'
90102
- env: TOXENV=py37-pytest46-xdist29-coverage50
91103
python: '3.7'
104+
- env: TOXENV=py37-pytest46-xdist30-coverage45
105+
python: '3.7'
106+
- env: TOXENV=py37-pytest46-xdist30-coverage50
107+
python: '3.7'
92108
- env: TOXENV=py37-pytest51-xdist29-coverage45
93109
python: '3.7'
94110
- env: TOXENV=py37-pytest51-xdist29-coverage50
95111
python: '3.7'
112+
- env: TOXENV=py37-pytest51-xdist30-coverage45
113+
python: '3.7'
114+
- env: TOXENV=py37-pytest51-xdist30-coverage50
115+
python: '3.7'
96116
- env: TOXENV=py37-pytest52-xdist29-coverage45
97117
python: '3.7'
98118
- env: TOXENV=py37-pytest52-xdist29-coverage50
99119
python: '3.7'
120+
- env: TOXENV=py37-pytest52-xdist30-coverage45
121+
python: '3.7'
122+
- env: TOXENV=py37-pytest52-xdist30-coverage50
123+
python: '3.7'
100124
- env: TOXENV=py38-pytest46-xdist29-coverage45
101125
python: '3.8-dev'
102126
- env: TOXENV=py38-pytest46-xdist29-coverage50
103127
python: '3.8-dev'
128+
- env: TOXENV=py38-pytest46-xdist30-coverage45
129+
python: '3.8-dev'
130+
- env: TOXENV=py38-pytest46-xdist30-coverage50
131+
python: '3.8-dev'
104132
- env: TOXENV=py38-pytest51-xdist29-coverage45
105133
python: '3.8-dev'
106134
- env: TOXENV=py38-pytest51-xdist29-coverage50
107135
python: '3.8-dev'
136+
- env: TOXENV=py38-pytest51-xdist30-coverage45
137+
python: '3.8-dev'
138+
- env: TOXENV=py38-pytest51-xdist30-coverage50
139+
python: '3.8-dev'
108140
- env: TOXENV=py38-pytest52-xdist29-coverage45
109141
python: '3.8-dev'
110142
- env: TOXENV=py38-pytest52-xdist29-coverage50
111143
python: '3.8-dev'
144+
- env: TOXENV=py38-pytest52-xdist30-coverage45
145+
python: '3.8-dev'
146+
- env: TOXENV=py38-pytest52-xdist30-coverage50
147+
python: '3.8-dev'
112148
- env: TOXENV=pypy3-pytest46-xdist29-coverage45
113149
python: 'pypy3'
114150
- env: TOXENV=pypy3-pytest46-xdist29-coverage50
115151
python: 'pypy3'
152+
- env: TOXENV=pypy3-pytest46-xdist30-coverage45
153+
python: 'pypy3'
154+
- env: TOXENV=pypy3-pytest46-xdist30-coverage50
155+
python: 'pypy3'
116156
- env: TOXENV=pypy3-pytest51-xdist29-coverage45
117157
python: 'pypy3'
118158
- env: TOXENV=pypy3-pytest51-xdist29-coverage50
119159
python: 'pypy3'
160+
- env: TOXENV=pypy3-pytest51-xdist30-coverage45
161+
python: 'pypy3'
162+
- env: TOXENV=pypy3-pytest51-xdist30-coverage50
163+
python: 'pypy3'
120164
- env: TOXENV=pypy3-pytest52-xdist29-coverage45
121165
python: 'pypy3'
122166
- env: TOXENV=pypy3-pytest52-xdist29-coverage50
123167
python: 'pypy3'
168+
- env: TOXENV=pypy3-pytest52-xdist30-coverage45
169+
python: 'pypy3'
170+
- env: TOXENV=pypy3-pytest52-xdist30-coverage50
171+
python: 'pypy3'
124172

125173
- stage: examples
126174
python: '3.6'

CHANGELOG.rst

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Changelog
22
=========
33

4-
2.8.0 (2019-09-30)
4+
2.8.0 (2019-10-03)
55
------------------
66

77
* Fixed ``RecursionError`` that can occur when using
@@ -40,6 +40,8 @@ Changelog
4040
`#326 <https://github.com/pytest-dev/pytest-cov/pull/326>`_,
4141
`#334 <https://github.com/pytest-dev/pytest-cov/pull/334>`_ and
4242
`#335 <https://github.com/pytest-dev/pytest-cov/pull/335>`_.
43+
* Added the ``--cov-context`` CLI options that enables coverage contexts. Only works with coverage 5.0+.
44+
Contributed by Ned Batchelder in `#345 <https://github.com/pytest-dev/pytest-cov/pull/345>`_.
4345

4446
2.7.1 (2019-05-03)
4547
------------------

appveyor.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ environment:
77
- TOXENV: 'py27-pytest310-xdist27-coverage45,py27-pytest46-xdist27-coverage45,py27-pytest310-xdist27-coverage50,py27-pytest46-xdist27-coverage50'
88
- TOXENV: 'py34-pytest310-xdist27-coverage45,py34-pytest46-xdist27-coverage45'
99
- TOXENV: 'py35-pytest310-xdist27-coverage45,py35-pytest46-xdist27-coverage45,py35-pytest310-xdist27-coverage50,py35-pytest46-xdist27-coverage50'
10-
- TOXENV: 'py36-pytest310-xdist27-coverage45,py36-pytest46-xdist27-coverage45,py36-pytest310-xdist27-coverage50,py36-pytest46-xdist27-coverage50,py36-pytest46-xdist29-coverage45,py36-pytest46-xdist29-coverage50,py36-pytest51-xdist29-coverage45,py36-pytest51-xdist29-coverage50,py36-pytest52-xdist29-coverage45,py36-pytest52-xdist29-coverage50'
11-
- TOXENV: 'py37-pytest310-xdist27-coverage45,py37-pytest46-xdist27-coverage45,py37-pytest310-xdist27-coverage50,py37-pytest46-xdist27-coverage50,py37-pytest46-xdist29-coverage45,py37-pytest46-xdist29-coverage50,py37-pytest51-xdist29-coverage45,py37-pytest51-xdist29-coverage50,py37-pytest52-xdist29-coverage45,py37-pytest52-xdist29-coverage50'
10+
- TOXENV: 'py36-pytest310-xdist27-coverage45,py36-pytest46-xdist27-coverage45,py36-pytest310-xdist27-coverage50,py36-pytest46-xdist27-coverage50,py36-pytest46-xdist29-coverage45,py36-pytest46-xdist29-coverage50,py36-pytest46-xdist30-coverage45,py36-pytest46-xdist30-coverage50,py36-pytest51-xdist29-coverage45,py36-pytest51-xdist29-coverage50,py36-pytest51-xdist30-coverage45,py36-pytest51-xdist30-coverage50,py36-pytest52-xdist29-coverage45,py36-pytest52-xdist29-coverage50,py36-pytest52-xdist30-coverage45,py36-pytest52-xdist30-coverage50'
11+
- TOXENV: 'py37-pytest310-xdist27-coverage45,py37-pytest46-xdist27-coverage45,py37-pytest310-xdist27-coverage50,py37-pytest46-xdist27-coverage50,py37-pytest46-xdist29-coverage45,py37-pytest46-xdist29-coverage50,py37-pytest46-xdist30-coverage45,py37-pytest46-xdist30-coverage50,py37-pytest51-xdist29-coverage45,py37-pytest51-xdist29-coverage50,py37-pytest51-xdist30-coverage45,py37-pytest51-xdist30-coverage50,py37-pytest52-xdist29-coverage45,py37-pytest52-xdist29-coverage50,py37-pytest52-xdist30-coverage45,py37-pytest52-xdist30-coverage50'
1212
- TOXENV: 'pypy-pytest310-xdist27-coverage45,pypy-pytest46-xdist27-coverage45,pypy-pytest310-xdist27-coverage50,pypy-pytest46-xdist27-coverage50'
1313

1414
init:

ci/bootstrap.py

+37-11
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,26 @@
11
#!/usr/bin/env python
22
# -*- coding: utf-8 -*-
3-
from __future__ import absolute_import, print_function, unicode_literals
3+
from __future__ import absolute_import
4+
from __future__ import print_function
5+
from __future__ import unicode_literals
46

57
import os
8+
import subprocess
69
import sys
710
from collections import defaultdict
811
from os.path import abspath
912
from os.path import dirname
1013
from os.path import exists
1114
from os.path import join
1215

13-
if __name__ == "__main__":
14-
base_path = dirname(dirname(abspath(__file__)))
15-
print("Project path: {0}".format(base_path))
16+
base_path = dirname(dirname(abspath(__file__)))
17+
18+
19+
def check_call(args):
20+
print("+", *args)
21+
subprocess.check_call(args)
22+
23+
def exec_in_env():
1624
env_path = join(base_path, ".tox", "bootstrap")
1725
if sys.platform == "win32":
1826
bin_path = join(env_path, "Scripts")
@@ -23,19 +31,26 @@
2331

2432
print("Making bootstrap env in: {0} ...".format(env_path))
2533
try:
26-
subprocess.check_call(["virtualenv", env_path])
34+
check_call([sys.executable, "-m", "venv", env_path])
2735
except subprocess.CalledProcessError:
28-
subprocess.check_call([sys.executable, "-m", "virtualenv", env_path])
36+
try:
37+
check_call([sys.executable, "-m", "virtualenv", env_path])
38+
except subprocess.CalledProcessError:
39+
check_call(["virtualenv", env_path])
2940
print("Installing `jinja2` into bootstrap environment...")
30-
subprocess.check_call([join(bin_path, "pip"), "install", "jinja2"])
41+
check_call([join(bin_path, "pip"), "install", "jinja2", "tox"])
3142
python_executable = join(bin_path, "python")
32-
if not os.path.samefile(python_executable, sys.executable):
33-
print("Re-executing with: {0}".format(python_executable))
34-
os.execv(python_executable, [python_executable, __file__])
43+
if not os.path.exists(python_executable):
44+
python_executable += '.exe'
45+
46+
print("Re-executing with: {0}".format(python_executable))
47+
print("+ exec", python_executable, __file__, "--no-env")
48+
os.execv(python_executable, [python_executable, __file__, "--no-env"])
3549

50+
def main():
3651
import jinja2
3752

38-
import subprocess
53+
print("Project path: {0}".format(base_path))
3954

4055
jinja = jinja2.Environment(
4156
loader=jinja2.FileSystemLoader(join(base_path, "ci", "templates")),
@@ -63,3 +78,14 @@
6378
fh.write(jinja.get_template(name).render(**template_vars))
6479
print("Wrote {}".format(name))
6580
print("DONE.")
81+
82+
if __name__ == "__main__":
83+
args = sys.argv[1:]
84+
if args == ["--no-env"]:
85+
main()
86+
elif not args:
87+
exec_in_env()
88+
else:
89+
print("Unexpected arguments {0}".format(args), file=sys.stderr)
90+
sys.exit(1)
91+

tox.ini

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ envlist =
55
check
66
py{27,34,35,36,37,py,py3}-pytest{310,46}-xdist27-coverage45
77
py{27,35,36,37,py,py3}-pytest{310,46}-xdist27-coverage50
8-
py{36,37,38,py3}-pytest{46,51,52}-xdist29-coverage{45,50}
8+
py{36,37,38,py3}-pytest{46,51,52}-xdist{29,30}-coverage{45,50}
99
docs
1010

1111
[testenv]
@@ -28,6 +28,7 @@ setenv =
2828
xdist27: _DEP_PYTESTXDIST=pytest-xdist==1.27.0
2929
xdist28: _DEP_PYTESTXDIST=pytest-xdist==1.28.0
3030
xdist29: _DEP_PYTESTXDIST=pytest-xdist==1.29.0
31+
xdist30: _DEP_PYTESTXDIST=pytest-xdist==1.30.0
3132

3233
coverage45: _DEP_COVERAGE=coverage==4.5.4
3334
coverage50: _DEP_COVERAGE=coverage==5.0a8

0 commit comments

Comments
 (0)