From 97331ca511fefc02b7cfd8f38503ca74e9c15126 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Thu, 9 Jan 2020 22:53:12 +0100 Subject: [PATCH 1/6] ci: revisit coverage reporting, use codecov --- .travis.yml | 18 +++++++----------- setup.py | 1 - tox.ini | 15 +++++++-------- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/.travis.yml b/.travis.yml index fe902344..d7d3d390 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,20 +2,16 @@ language: python matrix: include: - python: 3.5 - env: TOX_ENV=py35 + env: TOXENV=py35-coverage - python: 3.6 - env: TOX_ENV=py36 + env: TOXENV=py36-coverage - python: 3.7 - env: TOX_ENV=py37 - # TODO: the dist and sudo keys are currently needed to use Python 3.7. - # They should be removed once Travis-CI supports 3.7 on the default image. - dist: xenial - sudo: true + env: TOXENV=py37-coverage -install: pip install tox-travis coveralls +install: pip install tox -script: tox -e $TOX_ENV +script: tox after_success: - - tox -e coverage-report - - coveralls + - curl -S -L --connect-timeout 5 --retry 6 -s https://codecov.io/bash -o codecov-upload.sh + - bash codecov-upload.sh -Z -X fix -f coverage.xml diff --git a/setup.py b/setup.py index 8c074a24..4605fec5 100644 --- a/setup.py +++ b/setup.py @@ -44,7 +44,6 @@ def find_version(): extras_require={ ':python_version == "3.5"': "async_generator >= 1.3", "testing": [ - "coverage", "async_generator >= 1.3", "hypothesis >= 3.64", ], diff --git a/tox.ini b/tox.ini index 13d5155a..5c83f6de 100644 --- a/tox.ini +++ b/tox.ini @@ -4,11 +4,10 @@ minversion = 2.5.0 [testenv] extras = testing -commands = coverage run -m pytest {posargs} - -[testenv:coverage-report] -deps = coverage -skip_install = true -commands = - coverage combine - coverage report +deps = + coverage: coverage +commands = {env:COVERAGE_RUN:pytest} {posargs} + coverage: coverage report -m + coverage: coverage xml +setenv = + coverage: COVERAGE_RUN=coverage run -m pytest From a070d98df8d6485db4e49d8e359c3bed2b110d07 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Thu, 9 Jan 2020 22:58:43 +0100 Subject: [PATCH 2/6] add codecov config --- codecov.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 codecov.yml diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 00000000..a0a30858 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,7 @@ +coverage: + status: + project: true + patch: true + changes: true + +comment: off From 7ead4b4f5127c04a081637690e07f1d0243352f8 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Thu, 9 Jan 2020 23:12:27 +0100 Subject: [PATCH 3/6] README: update badge --- README.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index 9695de4d..24c5c378 100644 --- a/README.rst +++ b/README.rst @@ -5,8 +5,9 @@ pytest-asyncio: pytest support for asyncio :target: https://pypi.python.org/pypi/pytest-asyncio .. image:: https://travis-ci.org/pytest-dev/pytest-asyncio.svg?branch=master :target: https://travis-ci.org/pytest-dev/pytest-asyncio -.. image:: https://coveralls.io/repos/pytest-dev/pytest-asyncio/badge.svg - :target: https://coveralls.io/r/pytest-dev/pytest-asyncio +.. image:: https://codecov.io/gh/pytest-dev/pytest-asyncio/branch/master/graph/badge.svg + :target: https://codecov.io/gh/pytest-dev/pytest-asyncio + :alt: Code coverage Status .. image:: https://img.shields.io/pypi/pyversions/pytest-asyncio.svg :target: https://github.com/pytest-dev/pytest-asyncio :alt: Supported Python versions From 4ae3d698924a68de8d04d6883d6a7d857c1f4477 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Thu, 9 Jan 2020 23:18:28 +0100 Subject: [PATCH 4/6] enable branch coverage, track tests --- setup.cfg | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 4a0e3005..eef530a5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,6 @@ [coverage:run] -source = pytest_asyncio +source = pytest_asyncio,tests +branch = 1 [coverage:report] show_missing = true From 1417a8592134e937114c36f7d4a560f8a26e173b Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Thu, 9 Jan 2020 23:29:14 +0100 Subject: [PATCH 5/6] coveragerc: skip_covered=1 --- setup.cfg | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index eef530a5..90153159 100644 --- a/setup.cfg +++ b/setup.cfg @@ -3,7 +3,8 @@ source = pytest_asyncio,tests branch = 1 [coverage:report] -show_missing = true +show_missing = 1 +skip_covered = 1 [tool:pytest] addopts = -rsx --tb=short From 6f72dd9f419f7945906d566a85ba8d50b8d8324d Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Thu, 9 Jan 2020 23:32:28 +0100 Subject: [PATCH 6/6] coveragerc: exclude_lines for uncovered code --- setup.cfg | 4 ++++ tests/test_simple.py | 4 ++-- tests/test_simple_35.py | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/setup.cfg b/setup.cfg index 90153159..dd344b18 100644 --- a/setup.cfg +++ b/setup.cfg @@ -5,6 +5,10 @@ branch = 1 [coverage:report] show_missing = 1 skip_covered = 1 +exclude_lines = + \#\s*pragma: no cover + ^\s*raise NotImplementedError\b + ^\s*return NotImplemented\b [tool:pytest] addopts = -rsx --tb=short diff --git a/tests/test_simple.py b/tests/test_simple.py index 1627139d..b79daf33 100644 --- a/tests/test_simple.py +++ b/tests/test_simple.py @@ -42,7 +42,7 @@ async def test_unused_port_fixture(unused_tcp_port, event_loop): """Test the unused TCP port fixture.""" async def closer(_, writer): - writer.close() + raise NotImplementedError() server1 = await asyncio.start_server(closer, host='localhost', port=unused_tcp_port, @@ -62,7 +62,7 @@ async def test_unused_port_factory_fixture(unused_tcp_port_factory, event_loop): """Test the unused TCP port factory fixture.""" async def closer(_, writer): - writer.close() + raise NotImplementedError() port1, port2, port3 = (unused_tcp_port_factory(), unused_tcp_port_factory(), unused_tcp_port_factory()) diff --git a/tests/test_simple_35.py b/tests/test_simple_35.py index 1e4d697c..a545444d 100644 --- a/tests/test_simple_35.py +++ b/tests/test_simple_35.py @@ -24,7 +24,7 @@ async def test_asyncio_marker_with_default_param(a_param=None): async def test_unused_port_fixture(unused_tcp_port, event_loop): """Test the unused TCP port fixture.""" async def closer(_, writer): - writer.close() + raise NotImplementedError() server1 = await asyncio.start_server(closer, host='localhost', port=unused_tcp_port, @@ -38,7 +38,7 @@ def test_unused_port_factory_fixture(unused_tcp_port_factory, event_loop): """Test the unused TCP port factory fixture.""" async def closer(_, writer): - writer.close() + raise NotImplementedError() port1, port2, port3 = (unused_tcp_port_factory(), unused_tcp_port_factory(), unused_tcp_port_factory())