Hello community,

here is the log from the commit of package python-pytest-cov for 
openSUSE:Factory checked in at 2014-07-31 10:04:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pytest-cov (Old)
 and      /work/SRC/openSUSE:Factory/.python-pytest-cov.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pytest-cov"

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pytest-cov/python-pytest-cov.changes      
2013-08-18 22:35:21.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-pytest-cov.new/python-pytest-cov.changes 
2014-07-31 10:04:32.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:
------------------
++++++ python-pytest-cov.spec ++++++
--- /var/tmp/diff_new_pack.aH0TCU/_old  2014-07-31 10:04:34.000000000 +0200
+++ /var/tmp/diff_new_pack.aH0TCU/_new  2014-07-31 10:04:34.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-pytest-cov
 #
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,7 +16,7 @@
 
 
 Name:           python-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:  python-devel
 BuildRequires:  python-setuptools
+BuildRequires:  python-cov-core >= 1.12
+BuildRequires:  python-pytest >= 2.2.3
 # Test requirements:
 BuildRequires:  python-py
+BuildRequires:  python-virtualenv
 Requires:       python-pytest >= 2.2.3
+Requires:       python-cov-core >= 1.12
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 %if 0%{?suse_version} && 0%{?suse_version} <= 1110
 %{!?python_sitelib: %global python_sitelib %(python -c "from 
distutils.sysconfig import get_python_lib; print get_python_lib()")}
@@ -56,7 +60,7 @@
 
 %files
 %defattr(-,root,root,-)
-%doc LICENSE.txt README.txt
+%doc LICENSE.txt README.rst
 %{python_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]

Reply via email to