Hello community,
here is the log from the commit of package python3-pytest-cov for
openSUSE:Factory checked in at 2014-07-31 21:50:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-pytest-cov (Old)
and /work/SRC/openSUSE:Factory/.python3-pytest-cov.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-pytest-cov"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-pytest-cov/python3-pytest-cov.changes
2014-02-12 07:08:02.000000000 +0100
+++
/work/SRC/openSUSE:Factory/.python3-pytest-cov.new/python3-pytest-cov.changes
2014-07-31 21:51:00.000000000 +0200
@@ -1,0 +2,6 @@
+Wed Jul 30 07:27:46 UTC 2014 - [email protected]
+
+- Update to 1.7.0
+ * No upstream changelog
+
+-------------------------------------------------------------------
Old:
----
pytest-cov-1.6.tar.gz
New:
----
pytest-cov-1.7.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-pytest-cov.spec ++++++
--- /var/tmp/diff_new_pack.BNWwDG/_old 2014-07-31 21:51:01.000000000 +0200
+++ /var/tmp/diff_new_pack.BNWwDG/_new 2014-07-31 21:51:01.000000000 +0200
@@ -16,7 +16,7 @@
Name: python3-pytest-cov
-Version: 1.6
+Version: 1.7.0
Release: 0
License: MIT
Summary: Pytest plugin for coverage reporting
@@ -25,9 +25,13 @@
Source:
https://pypi.python.org/packages/source/p/pytest-cov/pytest-cov-%{version}.tar.gz
BuildRequires: python3-devel
BuildRequires: python3-setuptools
+BuildRequires: python3-cov-core >= 1.12
+BuildRequires: python3-pytest >= 2.2.3
# Test requirements:
BuildRequires: python3-py
+BuildRequires: python3-virtualenv
Requires: python3-pytest >= 2.2.3
+Requires: python3-cov-core >= 1.12
BuildArch: noarch
%description
@@ -51,7 +55,7 @@
%files
%defattr(-,root,root,-)
-%doc LICENSE.txt README.txt
+%doc LICENSE.txt README.rst
%{python3_sitelib}/*
%changelog
++++++ pytest-cov-1.6.tar.gz -> pytest-cov-1.7.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-cov-1.6/MANIFEST.in
new/pytest-cov-1.7.0/MANIFEST.in
--- old/pytest-cov-1.6/MANIFEST.in 2010-08-02 15:27:37.000000000 +0200
+++ new/pytest-cov-1.7.0/MANIFEST.in 2014-04-24 21:56:06.000000000 +0200
@@ -1,4 +1,4 @@
-include README.txt
+include README.rst
include LICENSE.txt
include setup.py
include pytest_cov.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-cov-1.6/PKG-INFO new/pytest-cov-1.7.0/PKG-INFO
--- old/pytest-cov-1.6/PKG-INFO 2012-05-12 02:03:20.000000000 +0200
+++ new/pytest-cov-1.7.0/PKG-INFO 2014-06-12 20:24:03.000000000 +0200
@@ -1,14 +1,30 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
Name: pytest-cov
-Version: 1.6
+Version: 1.7.0
Summary: py.test plugin for coverage reporting with support for both
centralised and distributed testing, including subprocesses and multiprocessing
-Home-page: http://bitbucket.org/memedough/pytest-cov/overview
-Author: Meme Dough
-Author-email: [email protected]
+Home-page: https://github.com/schlamar/pytest-cov
+Author: Marc Schlaich
+Author-email: [email protected]
License: MIT License
Description: pytest-cov
==========
+ .. image:: https://travis-ci.org/schlamar/pytest-cov.svg?branch=master
+ :target: https://travis-ci.org/schlamar/pytest-cov
+ :alt: Build status
+
+ .. image:: https://pypip.in/download/pytest-cov/badge.png
+ :target: https://pypi.python.org/pypi//pytest-cov/
+ :alt: Downloads
+
+ .. image:: https://pypip.in/version/pytest-cov/badge.png
+ :target: https://pypi.python.org/pypi/pytest-cov/
+ :alt: Latest Version
+
+ .. image:: https://pypip.in/license/pytest-cov/badge.png
+ :target: https://pypi.python.org/pypi/pytest-cov/
+ :alt: License
+
This plugin produces coverage reports. It supports centralised
testing and distributed testing in
both load and each modes. It also supports coverage of subprocesses.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-cov-1.6/README.rst
new/pytest-cov-1.7.0/README.rst
--- old/pytest-cov-1.6/README.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/pytest-cov-1.7.0/README.rst 2014-06-12 19:58:28.000000000 +0200
@@ -0,0 +1,266 @@
+pytest-cov
+==========
+
+.. image:: https://travis-ci.org/schlamar/pytest-cov.svg?branch=master
+ :target: https://travis-ci.org/schlamar/pytest-cov
+ :alt: Build status
+
+.. image:: https://pypip.in/download/pytest-cov/badge.png
+ :target: https://pypi.python.org/pypi//pytest-cov/
+ :alt: Downloads
+
+.. image:: https://pypip.in/version/pytest-cov/badge.png
+ :target: https://pypi.python.org/pypi/pytest-cov/
+ :alt: Latest Version
+
+.. image:: https://pypip.in/license/pytest-cov/badge.png
+ :target: https://pypi.python.org/pypi/pytest-cov/
+ :alt: License
+
+This plugin produces coverage reports. It supports centralised testing and
distributed testing in
+both load and each modes. It also supports coverage of subprocesses.
+
+All features offered by the coverage package should be available, either
through pytest-cov or
+through coverage's config file.
+
+
+Installation
+------------
+
+Install with pip::
+
+ pip install pytest-cov
+
+For distributed testing support install pytest-xdist::
+
+ pip install pytest-xdist
+
+.. NOTE::
+
+ Ensure you use pip instead of easy_install as the latter does not
correctly install the
+ init_cov_core.pth file needed for subprocess measurement.
+
+
+Uninstallation
+--------------
+
+Uninstall with pip::
+
+ pip uninstall pytest-cov
+ pip uninstall cov-core
+
+.. NOTE::
+
+ Ensure that you manually delete the init_cov_core.pth file in your
site-packages directory.
+
+ This file starts coverage collection of subprocesses if appropriate during
site initialisation
+ at python startup.
+
+
+Usage
+-----
+
+Centralised Testing
+~~~~~~~~~~~~~~~~~~~
+
+Centralised testing will report on the combined coverage of the main process
and all of it's
+subprocesses.
+
+Running centralised testing::
+
+ py.test --cov myproj tests/
+
+Shows a terminal report::
+
+ -------------------- coverage: platform linux2, python 2.6.4-final-0
---------------------
+ Name Stmts Miss Cover
+ ----------------------------------------
+ myproj/__init__ 2 0 100%
+ myproj/myproj 257 13 94%
+ myproj/feature4286 94 7 92%
+ ----------------------------------------
+ TOTAL 353 20 94%
+
+
+Distributed Testing: Load
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Distributed testing with dist mode set to load will report on the combined
coverage of all slaves.
+The slaves may be spread out over any number of hosts and each slave may be
located anywhere on the
+file system. Each slave will have it's subprocesses measured.
+
+Running distributed testing with dist mode set to load::
+
+ py.test --cov myproj -n 2 tests/
+
+Shows a terminal report::
+
+ -------------------- coverage: platform linux2, python 2.6.4-final-0
---------------------
+ Name Stmts Miss Cover
+ ----------------------------------------
+ myproj/__init__ 2 0 100%
+ myproj/myproj 257 13 94%
+ myproj/feature4286 94 7 92%
+ ----------------------------------------
+ TOTAL 353 20 94%
+
+
+Again but spread over different hosts and different directories::
+
+ py.test --cov myproj --dist load
+ --tx ssh=memedough@host1//chdir=testenv1
+ --tx
ssh=memedough@host2//chdir=/tmp/testenv2//python=/tmp/env1/bin/python
+ --rsyncdir myproj --rsyncdir tests --rsync examples
+ tests/
+
+Shows a terminal report::
+
+ -------------------- coverage: platform linux2, python 2.6.4-final-0
---------------------
+ Name Stmts Miss Cover
+ ----------------------------------------
+ myproj/__init__ 2 0 100%
+ myproj/myproj 257 13 94%
+ myproj/feature4286 94 7 92%
+ ----------------------------------------
+ TOTAL 353 20 94%
+
+
+Distributed Testing: Each
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Distributed testing with dist mode set to each will report on the combined
coverage of all slaves.
+Since each slave is running all tests this allows generating a combined
coverage report for multiple
+environments.
+
+Running distributed testing with dist mode set to each::
+
+ py.test --cov myproj --dist each
+ --tx
popen//chdir=/tmp/testenv3//python=/usr/local/python27/bin/python
+ --tx
ssh=memedough@host2//chdir=/tmp/testenv4//python=/tmp/env2/bin/python
+ --rsyncdir myproj --rsyncdir tests --rsync examples
+ tests/
+
+Shows a terminal report::
+
+ ---------------------------------------- coverage
----------------------------------------
+ platform linux2, python 2.6.5-final-0
+ platform linux2, python 2.7.0-final-0
+ Name Stmts Miss Cover
+ ----------------------------------------
+ myproj/__init__ 2 0 100%
+ myproj/myproj 257 13 94%
+ myproj/feature4286 94 7 92%
+ ----------------------------------------
+ TOTAL 353 20 94%
+
+
+Reporting
+---------
+
+It is possible to generate any combination of the reports for a single test
run.
+
+The available reports are terminal (with or without missing line numbers
shown), HTML, XML and
+annotated source code.
+
+The terminal report without line numbers (default)::
+
+ py.test --cov-report term --cov myproj tests/
+
+ -------------------- coverage: platform linux2, python 2.6.4-final-0
---------------------
+ Name Stmts Miss Cover
+ ----------------------------------------
+ myproj/__init__ 2 0 100%
+ myproj/myproj 257 13 94%
+ myproj/feature4286 94 7 92%
+ ----------------------------------------
+ TOTAL 353 20 94%
+
+
+The terminal report with line numbers::
+
+ py.test --cov-report term-missing --cov myproj tests/
+
+ -------------------- coverage: platform linux2, python 2.6.4-final-0
---------------------
+ Name Stmts Miss Cover Missing
+ --------------------------------------------------
+ myproj/__init__ 2 0 100%
+ myproj/myproj 257 13 94% 24-26, 99, 149, 233-236,
297-298, 369-370
+ myproj/feature4286 94 7 92% 183-188, 197
+ --------------------------------------------------
+ TOTAL 353 20 94%
+
+
+The remaining three reports output to files without showing anything on the
terminal (useful for
+when the output is going to a continuous integration server)::
+
+ py.test --cov-report html
+ --cov-report xml
+ --cov-report annotate
+ --cov myproj tests/
+
+
+Coverage Data File
+------------------
+
+The data file is erased at the beginning of testing to ensure clean data for
each test run.
+
+The data file is left at the end of testing so that it is possible to use
normal coverage tools to
+examine it.
+
+
+Coverage Config File
+--------------------
+
+This plugin provides a clean minimal set of command line options that are
added to pytest. For
+further control of coverage use a coverage config file.
+
+For example if tests are contained within the directory tree being measured
the tests may be
+excluded if desired by using a .coveragerc file with the omit option set::
+
+ py.test --cov-config .coveragerc
+ --cov myproj
+ myproj/tests/
+
+Where the .coveragerc file contains file globs::
+
+ [run]
+ omit = tests/*
+
+For full details refer to the `coverage config file`_ documentation.
+
+.. _`coverage config file`: http://nedbatchelder.com/code/coverage/config.html
+
+Note that this plugin controls some options and setting the option in the
config file will have no
+effect. These include specifying source to be measured (source option) and
all data file handling
+(data_file and parallel options).
+
+
+Limitations
+-----------
+
+For distributed testing the slaves must have the pytest-cov package installed.
This is needed since
+the plugin must be registered through setuptools / distribute for pytest to
start the plugin on the
+slave.
+
+For subprocess measurement environment variables must make it from the main
process to the
+subprocess. The python used by the subprocess must have pytest-cov installed.
The subprocess must
+do normal site initialisation so that the environment variables can be
detected and coverage
+started.
+
+
+Acknowledgements
+----------------
+
+Whilst this plugin has been built fresh from the ground up it has been
influenced by the work done
+on pytest-coverage (Ross Lawley, James Mills, Holger Krekel) and nose-cover
(Jason Pellerin) which are
+other coverage plugins.
+
+Ned Batchelder for coverage and its ability to combine the coverage results of
parallel runs.
+
+Holger Krekel for pytest with its distributed testing support.
+
+Jason Pellerin for nose.
+
+Michael Foord for unittest2.
+
+No doubt others have contributed to these tools as well.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-cov-1.6/README.txt
new/pytest-cov-1.7.0/README.txt
--- old/pytest-cov-1.6/README.txt 2012-05-12 01:54:33.000000000 +0200
+++ new/pytest-cov-1.7.0/README.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1,250 +0,0 @@
-pytest-cov
-==========
-
-This plugin produces coverage reports. It supports centralised testing and
distributed testing in
-both load and each modes. It also supports coverage of subprocesses.
-
-All features offered by the coverage package should be available, either
through pytest-cov or
-through coverage's config file.
-
-
-Installation
-------------
-
-Install with pip::
-
- pip install pytest-cov
-
-For distributed testing support install pytest-xdist::
-
- pip install pytest-xdist
-
-.. NOTE::
-
- Ensure you use pip instead of easy_install as the latter does not
correctly install the
- init_cov_core.pth file needed for subprocess measurement.
-
-
-Uninstallation
---------------
-
-Uninstall with pip::
-
- pip uninstall pytest-cov
- pip uninstall cov-core
-
-.. NOTE::
-
- Ensure that you manually delete the init_cov_core.pth file in your
site-packages directory.
-
- This file starts coverage collection of subprocesses if appropriate during
site initialisation
- at python startup.
-
-
-Usage
------
-
-Centralised Testing
-~~~~~~~~~~~~~~~~~~~
-
-Centralised testing will report on the combined coverage of the main process
and all of it's
-subprocesses.
-
-Running centralised testing::
-
- py.test --cov myproj tests/
-
-Shows a terminal report::
-
- -------------------- coverage: platform linux2, python 2.6.4-final-0
---------------------
- Name Stmts Miss Cover
- ----------------------------------------
- myproj/__init__ 2 0 100%
- myproj/myproj 257 13 94%
- myproj/feature4286 94 7 92%
- ----------------------------------------
- TOTAL 353 20 94%
-
-
-Distributed Testing: Load
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Distributed testing with dist mode set to load will report on the combined
coverage of all slaves.
-The slaves may be spread out over any number of hosts and each slave may be
located anywhere on the
-file system. Each slave will have it's subprocesses measured.
-
-Running distributed testing with dist mode set to load::
-
- py.test --cov myproj -n 2 tests/
-
-Shows a terminal report::
-
- -------------------- coverage: platform linux2, python 2.6.4-final-0
---------------------
- Name Stmts Miss Cover
- ----------------------------------------
- myproj/__init__ 2 0 100%
- myproj/myproj 257 13 94%
- myproj/feature4286 94 7 92%
- ----------------------------------------
- TOTAL 353 20 94%
-
-
-Again but spread over different hosts and different directories::
-
- py.test --cov myproj --dist load
- --tx ssh=memedough@host1//chdir=testenv1
- --tx
ssh=memedough@host2//chdir=/tmp/testenv2//python=/tmp/env1/bin/python
- --rsyncdir myproj --rsyncdir tests --rsync examples
- tests/
-
-Shows a terminal report::
-
- -------------------- coverage: platform linux2, python 2.6.4-final-0
---------------------
- Name Stmts Miss Cover
- ----------------------------------------
- myproj/__init__ 2 0 100%
- myproj/myproj 257 13 94%
- myproj/feature4286 94 7 92%
- ----------------------------------------
- TOTAL 353 20 94%
-
-
-Distributed Testing: Each
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Distributed testing with dist mode set to each will report on the combined
coverage of all slaves.
-Since each slave is running all tests this allows generating a combined
coverage report for multiple
-environments.
-
-Running distributed testing with dist mode set to each::
-
- py.test --cov myproj --dist each
- --tx
popen//chdir=/tmp/testenv3//python=/usr/local/python27/bin/python
- --tx
ssh=memedough@host2//chdir=/tmp/testenv4//python=/tmp/env2/bin/python
- --rsyncdir myproj --rsyncdir tests --rsync examples
- tests/
-
-Shows a terminal report::
-
- ---------------------------------------- coverage
----------------------------------------
- platform linux2, python 2.6.5-final-0
- platform linux2, python 2.7.0-final-0
- Name Stmts Miss Cover
- ----------------------------------------
- myproj/__init__ 2 0 100%
- myproj/myproj 257 13 94%
- myproj/feature4286 94 7 92%
- ----------------------------------------
- TOTAL 353 20 94%
-
-
-Reporting
----------
-
-It is possible to generate any combination of the reports for a single test
run.
-
-The available reports are terminal (with or without missing line numbers
shown), HTML, XML and
-annotated source code.
-
-The terminal report without line numbers (default)::
-
- py.test --cov-report term --cov myproj tests/
-
- -------------------- coverage: platform linux2, python 2.6.4-final-0
---------------------
- Name Stmts Miss Cover
- ----------------------------------------
- myproj/__init__ 2 0 100%
- myproj/myproj 257 13 94%
- myproj/feature4286 94 7 92%
- ----------------------------------------
- TOTAL 353 20 94%
-
-
-The terminal report with line numbers::
-
- py.test --cov-report term-missing --cov myproj tests/
-
- -------------------- coverage: platform linux2, python 2.6.4-final-0
---------------------
- Name Stmts Miss Cover Missing
- --------------------------------------------------
- myproj/__init__ 2 0 100%
- myproj/myproj 257 13 94% 24-26, 99, 149, 233-236,
297-298, 369-370
- myproj/feature4286 94 7 92% 183-188, 197
- --------------------------------------------------
- TOTAL 353 20 94%
-
-
-The remaining three reports output to files without showing anything on the
terminal (useful for
-when the output is going to a continuous integration server)::
-
- py.test --cov-report html
- --cov-report xml
- --cov-report annotate
- --cov myproj tests/
-
-
-Coverage Data File
-------------------
-
-The data file is erased at the beginning of testing to ensure clean data for
each test run.
-
-The data file is left at the end of testing so that it is possible to use
normal coverage tools to
-examine it.
-
-
-Coverage Config File
---------------------
-
-This plugin provides a clean minimal set of command line options that are
added to pytest. For
-further control of coverage use a coverage config file.
-
-For example if tests are contained within the directory tree being measured
the tests may be
-excluded if desired by using a .coveragerc file with the omit option set::
-
- py.test --cov-config .coveragerc
- --cov myproj
- myproj/tests/
-
-Where the .coveragerc file contains file globs::
-
- [run]
- omit = tests/*
-
-For full details refer to the `coverage config file`_ documentation.
-
-.. _`coverage config file`: http://nedbatchelder.com/code/coverage/config.html
-
-Note that this plugin controls some options and setting the option in the
config file will have no
-effect. These include specifying source to be measured (source option) and
all data file handling
-(data_file and parallel options).
-
-
-Limitations
------------
-
-For distributed testing the slaves must have the pytest-cov package installed.
This is needed since
-the plugin must be registered through setuptools / distribute for pytest to
start the plugin on the
-slave.
-
-For subprocess measurement environment variables must make it from the main
process to the
-subprocess. The python used by the subprocess must have pytest-cov installed.
The subprocess must
-do normal site initialisation so that the environment variables can be
detected and coverage
-started.
-
-
-Acknowledgements
-----------------
-
-Whilst this plugin has been built fresh from the ground up it has been
influenced by the work done
-on pytest-coverage (Ross Lawley, James Mills, Holger Krekel) and nose-cover
(Jason Pellerin) which are
-other coverage plugins.
-
-Ned Batchelder for coverage and its ability to combine the coverage results of
parallel runs.
-
-Holger Krekel for pytest with its distributed testing support.
-
-Jason Pellerin for nose.
-
-Michael Foord for unittest2.
-
-No doubt others have contributed to these tools as well.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-cov-1.6/pytest_cov.egg-info/PKG-INFO
new/pytest-cov-1.7.0/pytest_cov.egg-info/PKG-INFO
--- old/pytest-cov-1.6/pytest_cov.egg-info/PKG-INFO 2012-05-12
02:03:20.000000000 +0200
+++ new/pytest-cov-1.7.0/pytest_cov.egg-info/PKG-INFO 2014-06-12
20:24:03.000000000 +0200
@@ -1,14 +1,30 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
Name: pytest-cov
-Version: 1.6
+Version: 1.7.0
Summary: py.test plugin for coverage reporting with support for both
centralised and distributed testing, including subprocesses and multiprocessing
-Home-page: http://bitbucket.org/memedough/pytest-cov/overview
-Author: Meme Dough
-Author-email: [email protected]
+Home-page: https://github.com/schlamar/pytest-cov
+Author: Marc Schlaich
+Author-email: [email protected]
License: MIT License
Description: pytest-cov
==========
+ .. image:: https://travis-ci.org/schlamar/pytest-cov.svg?branch=master
+ :target: https://travis-ci.org/schlamar/pytest-cov
+ :alt: Build status
+
+ .. image:: https://pypip.in/download/pytest-cov/badge.png
+ :target: https://pypi.python.org/pypi//pytest-cov/
+ :alt: Downloads
+
+ .. image:: https://pypip.in/version/pytest-cov/badge.png
+ :target: https://pypi.python.org/pypi/pytest-cov/
+ :alt: Latest Version
+
+ .. image:: https://pypip.in/license/pytest-cov/badge.png
+ :target: https://pypi.python.org/pypi/pytest-cov/
+ :alt: License
+
This plugin produces coverage reports. It supports centralised
testing and distributed testing in
both load and each modes. It also supports coverage of subprocesses.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-cov-1.6/pytest_cov.egg-info/SOURCES.txt
new/pytest-cov-1.7.0/pytest_cov.egg-info/SOURCES.txt
--- old/pytest-cov-1.6/pytest_cov.egg-info/SOURCES.txt 2012-05-12
02:03:20.000000000 +0200
+++ new/pytest-cov-1.7.0/pytest_cov.egg-info/SOURCES.txt 2014-06-12
20:24:03.000000000 +0200
@@ -1,6 +1,6 @@
LICENSE.txt
MANIFEST.in
-README.txt
+README.rst
pytest_cov.py
setup.py
test_pytest_cov.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-cov-1.6/pytest_cov.egg-info/requires.txt
new/pytest-cov-1.7.0/pytest_cov.egg-info/requires.txt
--- old/pytest-cov-1.6/pytest_cov.egg-info/requires.txt 2012-05-12
02:03:20.000000000 +0200
+++ new/pytest-cov-1.7.0/pytest_cov.egg-info/requires.txt 2014-06-12
20:24:03.000000000 +0200
@@ -1,2 +1,2 @@
-pytest>=2.2.3
-cov-core>=1.6
\ No newline at end of file
+pytest>=2.5.2
+cov-core>=1.12
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-cov-1.6/pytest_cov.py
new/pytest-cov-1.7.0/pytest_cov.py
--- old/pytest-cov-1.6/pytest_cov.py 2011-07-25 11:12:24.000000000 +0200
+++ new/pytest-cov-1.7.0/pytest_cov.py 2014-04-26 17:27:42.000000000 +0200
@@ -1,26 +1,50 @@
"""Coverage plugin for pytest."""
+
+import pytest
+
+import cov_core
+
+
def pytest_addoption(parser):
"""Add options to control coverage."""
- group = parser.getgroup('coverage reporting with distributed testing
support')
+ group = parser.getgroup('coverage reporting with distributed testing '
+ 'support')
group.addoption('--cov', action='append', default=[], metavar='path',
dest='cov_source',
- help='measure coverage for filesystem path
(multi-allowed)')
- group.addoption('--cov-report', action='append', default=[],
metavar='type',
- choices=['term', 'term-missing', 'annotate', 'html',
'xml'],
- dest='cov_report',
- help='type of report to generate: term, term-missing,
annotate, html, xml (multi-allowed)')
- group.addoption('--cov-config', action='store', default='.coveragerc',
metavar='path',
- dest='cov_config',
+ help='measure coverage for filesystem path '
+ '(multi-allowed)')
+ group.addoption('--cov-report', action='append', default=[],
+ metavar='type', dest='cov_report',
+ choices=['term', 'term-missing', 'annotate', 'html',
+ 'xml'],
+ help='type of report to generate: term, term-missing, '
+ 'annotate, html, xml (multi-allowed)')
+ group.addoption('--cov-config', action='store', default='.coveragerc',
+ metavar='path', dest='cov_config',
help='config file for coverage, default: .coveragerc')
+ group.addoption('--no-cov-on-fail', action='store_true', default=False,
+ dest='no_cov_on_fail',
+ help='do not report coverage if test run fails, '
+ 'default: False')
+
+
[email protected]_last
+def pytest_load_initial_conftests(early_config, parser, args):
+ ns = parser.parse_known_args(args)
+ if ns.cov_source:
+ plugin = CovPlugin(ns, early_config.pluginmanager)
+ early_config.pluginmanager.register(plugin, '_cov')
def pytest_configure(config):
"""Activate coverage plugin if appropriate."""
-
if config.getvalue('cov_source'):
- config.pluginmanager.register(CovPlugin(), '_cov')
+ if not config.pluginmanager.hasplugin('_cov'):
+ plugin = CovPlugin(config.option, config.pluginmanager,
+ start=False)
+ config.pluginmanager.register(plugin, '_cov')
class CovPlugin(object):
@@ -31,7 +55,7 @@
distributed slave.
"""
- def __init__(self):
+ def __init__(self, options, pluginmanager, start=True):
"""Creates a coverage pytest plugin.
We read the rc file that coverage uses to get the data file
@@ -41,45 +65,49 @@
# Our implementation is unknown at this time.
self.cov_controller = None
+ self.failed = False
+ self.options = options
+
+ is_dist = (getattr(options, 'numprocesses', False) or
+ getattr(options, 'distload', False) or
+ getattr(options, 'dist', 'no') != 'no')
+ if is_dist and start:
+ self.start(cov_core.DistMaster)
+ elif start:
+ self.start(cov_core.Central)
+
+ # slave is started in pytest hook
+
+ def start(self, controller_cls, config=None, nodeid=None):
+ if config is None:
+ # fake config option for cov_core
+ class Config(object):
+ option = self.options
+
+ config = Config()
+
+ self.cov_controller = controller_cls(
+ self.options.cov_source,
+ self.options.cov_report or ['term'],
+ self.options.cov_config,
+ config,
+ nodeid
+ )
+ self.cov_controller.start()
def pytest_sessionstart(self, session):
"""At session start determine our implementation and delegate to it."""
-
- import cov_core
-
- cov_source = session.config.getvalue('cov_source')
- cov_report = session.config.getvalue('cov_report') or ['term']
- cov_config = session.config.getvalue('cov_config')
-
- session_name = session.__class__.__name__
- is_master = (session.config.pluginmanager.hasplugin('dsession') or
- session_name == 'DSession')
- is_slave = (hasattr(session.config, 'slaveinput') or
- session_name == 'SlaveSession')
- nodeid = None
-
- if is_master:
- controller_cls = cov_core.DistMaster
- elif is_slave:
- controller_cls = cov_core.DistSlave
- nodeid = session.config.slaveinput.get('slaveid', getattr(session,
'nodeid'))
- else:
- controller_cls = cov_core.Central
-
- self.cov_controller = controller_cls(cov_source,
- cov_report,
- cov_config,
- session.config,
- nodeid)
-
- self.cov_controller.start()
+ is_slave = hasattr(session.config, 'slaveinput')
+ if is_slave:
+ nodeid = session.config.slaveinput.get('slaveid',
+ getattr(session, 'nodeid'))
+ self.start(cov_core.DistSlave, session.config, nodeid)
def pytest_configure_node(self, node):
"""Delegate to our implementation.
Mark this hook as optional in case xdist is not installed.
"""
-
self.cov_controller.configure_node(node)
pytest_configure_node.optionalhook = True
@@ -88,23 +116,24 @@
Mark this hook as optional in case xdist is not installed.
"""
-
self.cov_controller.testnodedown(node, error)
pytest_testnodedown.optionalhook = True
def pytest_sessionfinish(self, session, exitstatus):
"""Delegate to our implementation."""
-
+ self.failed = exitstatus != 0
self.cov_controller.finish()
def pytest_terminal_summary(self, terminalreporter):
"""Delegate to our implementation."""
-
- self.cov_controller.summary(terminalreporter._tw)
+ if not (self.failed and self.options.no_cov_on_fail):
+ self.cov_controller.summary(terminalreporter._tw)
def pytest_funcarg__cov(request):
- """A pytest funcarg that provides access to the underlying coverage
object."""
+ """A pytest funcarg that provides access to the underlying coverage
+ object.
+ """
# Check with hasplugin to avoid getplugin exception in older pytest.
if request.config.pluginmanager.hasplugin('_cov'):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-cov-1.6/setup.py new/pytest-cov-1.7.0/setup.py
--- old/pytest-cov-1.6/setup.py 2012-05-12 01:28:20.000000000 +0200
+++ new/pytest-cov-1.7.0/setup.py 2014-06-12 20:21:48.000000000 +0200
@@ -1,15 +1,17 @@
import setuptools
setuptools.setup(name='pytest-cov',
- version='1.6',
- description='py.test plugin for coverage reporting with
support for both centralised and distributed testing, including subprocesses
and multiprocessing',
- long_description=open('README.txt').read().strip(),
- author='Meme Dough',
- author_email='[email protected]',
- url='http://bitbucket.org/memedough/pytest-cov/overview',
+ version='1.7.0',
+ description='py.test plugin for coverage reporting with '
+ 'support for both centralised and distributed testing, '
+ 'including subprocesses and multiprocessing',
+ long_description=open('README.rst').read().strip(),
+ author='Marc Schlaich',
+ author_email='[email protected]',
+ url='https://github.com/schlamar/pytest-cov',
py_modules=['pytest_cov'],
- install_requires=['pytest>=2.2.3',
- 'cov-core>=1.6'],
+ install_requires=['pytest>=2.5.2',
+ 'cov-core>=1.12'],
entry_points={'pytest11': ['pytest_cov = pytest_cov']},
license='MIT License',
zip_safe=False,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-cov-1.6/test_pytest_cov.py
new/pytest-cov-1.7.0/test_pytest_cov.py
--- old/pytest-cov-1.6/test_pytest_cov.py 2012-03-12 02:44:09.000000000
+0100
+++ new/pytest-cov-1.7.0/test_pytest_cov.py 2014-05-01 23:50:06.000000000
+0200
@@ -14,10 +14,14 @@
is fine with simple assignment statement.
"""
-import py
import os
import sys
+import virtualenv
+
+import py
+
+
pytest_plugins = 'pytester', 'cov'
SCRIPT = '''
@@ -28,21 +32,9 @@
metafunc.addcall()
def test_foo():
- version = sys.version_info[:2]
- if version == (2, 4):
- a = True
- if version == (2, 5):
- a = True
- if version == (2, 6):
- a = True
- if version == (2, 7):
- a = True
- if version == (3, 0):
- a = True
- if version == (3, 1):
- a = True
- if version == (3, 2):
- a = True
+ assert True
+ if sys.version_info[0] > 5:
+ assert False
'''
SCRIPT_CHILD = '''
@@ -65,7 +57,14 @@
metafunc.addcall(funcargs=dict(idx=i))
def test_foo(idx):
- out, err = subprocess.Popen([sys.executable, 'child_script.py', str(idx)],
stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
+ out, err = subprocess.Popen(
+ [sys.executable, 'child_script.py', str(idx)],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE).communicate()
+
+# there is a issue in coverage.py with multiline statements at
+# end of file: https://bitbucket.org/ned/coveragepy/issue/293
+pass
'''
SCRIPT_FUNCARG = '''
@@ -94,6 +93,17 @@
'''
+SCRIPT_FAIL = '''
+def test_fail():
+ assert False
+
+'''
+
+SCRIPT_RESULT = '8 * 88%'
+CHILD_SCRIPT_RESULT = '6 * 100%'
+PARENT_SCRIPT_RESULT = '8 * 100%'
+
+
def test_central(testdir):
script = testdir.makepyfile(SCRIPT)
@@ -103,13 +113,26 @@
script)
result.stdout.fnmatch_lines([
- '*- coverage: platform *, python * -*',
- 'test_central * 20 * 70%*',
- '*10 passed*'
- ])
+ '*- coverage: platform *, python * -*',
+ 'test_central * %s *' % SCRIPT_RESULT,
+ '*10 passed*'
+ ])
assert result.ret == 0
+def test_no_cov_on_fail(testdir):
+ script = testdir.makepyfile(SCRIPT_FAIL)
+
+ result = testdir.runpytest('-v',
+ '--cov=%s' % script.dirpath(),
+ '--cov-report=term-missing',
+ '--no-cov-on-fail',
+ script)
+
+ assert 'coverage: platform' not in result.stdout.str()
+ result.stdout.fnmatch_lines(['*1 failed*'])
+
+
def test_dist_collocated(testdir):
script = testdir.makepyfile(SCRIPT)
@@ -121,10 +144,10 @@
script)
result.stdout.fnmatch_lines([
- '*- coverage: platform *, python * -*',
- 'test_dist_collocated * 20 * 70%*',
- '*10 passed*'
- ])
+ '*- coverage: platform *, python * -*',
+ 'test_dist_collocated * %s *' % SCRIPT_RESULT,
+ '*10 passed*'
+ ])
assert result.ret == 0
@@ -143,15 +166,16 @@
script)
result.stdout.fnmatch_lines([
- '*- coverage: platform *, python * -*',
- 'test_dist_not_collocated * 20 * 70%*',
- '*10 passed*'
- ])
+ '*- coverage: platform *, python * -*',
+ 'test_dist_not_collocated * %s *' % SCRIPT_RESULT,
+ '*10 passed*'
+ ])
assert result.ret == 0
def test_central_subprocess(testdir):
- scripts = testdir.makepyfile(parent_script=SCRIPT_PARENT,
child_script=SCRIPT_CHILD)
+ scripts = testdir.makepyfile(parent_script=SCRIPT_PARENT,
+ child_script=SCRIPT_CHILD)
parent_script = scripts.dirpath().join('parent_script.py')
result = testdir.runpytest('-v',
@@ -160,15 +184,16 @@
parent_script)
result.stdout.fnmatch_lines([
- '*- coverage: platform *, python * -*',
- 'child_script * 6 * 100%*',
- 'parent_script * 7 * 100%*',
- ])
+ '*- coverage: platform *, python * -*',
+ 'child_script * %s *' % CHILD_SCRIPT_RESULT,
+ 'parent_script * %s *' % PARENT_SCRIPT_RESULT,
+ ])
assert result.ret == 0
def test_dist_subprocess_collocated(testdir):
- scripts = testdir.makepyfile(parent_script=SCRIPT_PARENT,
child_script=SCRIPT_CHILD)
+ scripts = testdir.makepyfile(parent_script=SCRIPT_PARENT,
+ child_script=SCRIPT_CHILD)
parent_script = scripts.dirpath().join('parent_script.py')
result = testdir.runpytest('-v',
@@ -179,15 +204,16 @@
parent_script)
result.stdout.fnmatch_lines([
- '*- coverage: platform *, python * -*',
- 'child_script * 6 * 100%*',
- 'parent_script * 7 * 100%*',
- ])
+ '*- coverage: platform *, python * -*',
+ 'child_script * %s *' % CHILD_SCRIPT_RESULT,
+ 'parent_script * %s *' % PARENT_SCRIPT_RESULT,
+ ])
assert result.ret == 0
def test_dist_subprocess_not_collocated(testdir, tmpdir):
- scripts = testdir.makepyfile(parent_script=SCRIPT_PARENT,
child_script=SCRIPT_CHILD)
+ scripts = testdir.makepyfile(parent_script=SCRIPT_PARENT,
+ child_script=SCRIPT_CHILD)
parent_script = scripts.dirpath().join('parent_script.py')
child_script = scripts.dirpath().join('child_script.py')
@@ -205,10 +231,10 @@
parent_script)
result.stdout.fnmatch_lines([
- '*- coverage: platform *, python * -*',
- 'child_script * 6 * 100%*',
- 'parent_script * 7 * 100%*',
- ])
+ '*- coverage: platform *, python * -*',
+ 'child_script * %s *' % CHILD_SCRIPT_RESULT,
+ 'parent_script * %s *' % PARENT_SCRIPT_RESULT,
+ ])
assert result.ret == 0
@@ -221,31 +247,21 @@
script)
result.stdout.fnmatch_lines([
- '*- coverage: platform *, python * -*',
- '*10 passed*'
- ])
+ '*- coverage: platform *, python * -*',
+ '*10 passed*'
+ ])
assert result.ret == 0
matching_lines = [line for line in result.outlines if '%' in line]
assert not matching_lines
def test_dist_missing_data(testdir):
- version = sys.version_info[:2]
- if version == (2, 4):
- exe = '/usr/local/py24/bin/python'
- if version == (2, 5):
- exe = '/usr/local/py25/bin/python'
- if version == (2, 6):
- exe = '/usr/local/py26/bin/python'
- if version == (2, 7):
- exe = '/usr/local/py27/bin/python'
- if version == (3, 0):
- exe = '/usr/local/py30/bin/python3.0'
- if version == (3, 1):
- exe = '/usr/local/py31/bin/python3.1'
- if version == (3, 2):
- exe = '/usr/local/py32/bin/python3.2'
-
+ venv_path = os.path.join(str(testdir.tmpdir), 'venv')
+ virtualenv.create_environment(venv_path)
+ if sys.platform == 'win32':
+ exe = os.path.join(venv_path, 'Scripts', 'python.exe')
+ else:
+ exe = os.path.join(venv_path, 'bin', 'python')
script = testdir.makepyfile(SCRIPT)
result = testdir.runpytest('-v',
@@ -256,8 +272,8 @@
script)
result.stdout.fnmatch_lines([
- '*- coverage: failed slaves -*'
- ])
+ '*- coverage: failed slaves -*'
+ ])
assert result.ret == 0
@@ -270,10 +286,10 @@
script)
result.stdout.fnmatch_lines([
- '*- coverage: platform *, python * -*',
- 'test_funcarg * 3 * 100%*',
- '*1 passed*'
- ])
+ '*- coverage: platform *, python * -*',
+ 'test_funcarg * 3 * 100%*',
+ '*1 passed*'
+ ])
assert result.ret == 0
@@ -284,8 +300,8 @@
script)
result.stdout.fnmatch_lines([
- '*1 passed*'
- ])
+ '*1 passed*'
+ ])
assert result.ret == 0
@@ -300,8 +316,123 @@
script)
result.stdout.fnmatch_lines([
- '*- coverage: platform *, python * -*',
- 'test_multiprocessing_subprocess * 8 * 100%*',
- '*1 passed*'
- ])
+ '*- coverage: platform *, python * -*',
+ 'test_multiprocessing_subprocess * 8 * 100%*',
+ '*1 passed*'
+ ])
+ assert result.ret == 0
+
+
+MODULE = '''
+def func():
+ return 1
+
+'''
+
+CONFTEST = '''
+
+import mod
+mod.func()
+
+'''
+
+BASIC_TEST = '''
+
+def test_basic():
+ assert True
+
+'''
+
+CONF_RESULT = 'mod * 2 * 100% *'
+
+
+def test_cover_conftest(testdir):
+ testdir.makepyfile(mod=MODULE)
+ testdir.makeconftest(CONFTEST)
+ script = testdir.makepyfile(BASIC_TEST)
+ result = testdir.runpytest('-v',
+ '--cov=%s' % script.dirpath(),
+ '--cov-report=term-missing',
+ script)
+ assert result.ret == 0
+ result.stdout.fnmatch_lines([CONF_RESULT])
+
+
+def test_cover_conftest_dist(testdir):
+ testdir.makepyfile(mod=MODULE)
+ testdir.makeconftest(CONFTEST)
+ script = testdir.makepyfile(BASIC_TEST)
+ result = testdir.runpytest('-v',
+ '--cov=%s' % script.dirpath(),
+ '--cov-report=term-missing',
+ '--dist=load',
+ '--tx=2*popen',
+ script)
+ assert result.ret == 0
+ result.stdout.fnmatch_lines([CONF_RESULT])
+
+
+COVERAGERC = '''
+[report]
+# Regexes for lines to exclude from consideration
+exclude_lines =
+ raise NotImplementedError
+
+'''
+
+EXCLUDED_TEST = '''
+
+def func():
+ raise NotImplementedError
+
+def test_basic():
+ assert True
+
+'''
+
+EXCLUDED_RESULT = '3 * 100% *'
+
+
+def test_coveragerc(testdir):
+ testdir.makefile('', coveragerc=COVERAGERC)
+ script = testdir.makepyfile(EXCLUDED_TEST)
+ result = testdir.runpytest('-v',
+ '--cov-config=coveragerc',
+ '--cov=%s' % script.dirpath(),
+ '--cov-report=term-missing',
+ script)
+ assert result.ret == 0
+ result.stdout.fnmatch_lines(['test_coveragerc * %s' % EXCLUDED_RESULT])
+
+
+def test_coveragerc_dist(testdir):
+ testdir.makefile('', coveragerc=COVERAGERC)
+ script = testdir.makepyfile(EXCLUDED_TEST)
+ result = testdir.runpytest('-v',
+ '--cov-config=coveragerc',
+ '--cov=%s' % script.dirpath(),
+ '--cov-report=term-missing',
+ '-n', '2',
+ script)
+ assert result.ret == 0
+ result.stdout.fnmatch_lines(
+ ['test_coveragerc_dist * %s' % EXCLUDED_RESULT])
+
+
+CLEAR_ENVIRON_TEST = '''
+
+import os
+
+def test_basic():
+ os.environ.clear()
+
+'''
+
+
+def test_clear_environ(testdir):
+ script = testdir.makepyfile(CLEAR_ENVIRON_TEST)
+ result = testdir.runpytest('-v',
+ '--cov=%s' % script.dirpath(),
+ '--cov-report=term-missing',
+ script)
assert result.ret == 0
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]