summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2017-05-03 22:09:27 -0400
committerNed Batchelder <ned@nedbatchelder.com>2017-05-03 22:09:27 -0400
commitb48ec04376ae5c9103bb73e1146473d70c1e5c8e (patch)
tree3c2ee5a25c254d3b735a64b915440b079c541360
parent1b6d50b5cfa1a1319b2ab726111cd6e961a3926c (diff)
downloadpython-coveragepy-git-b48ec04376ae5c9103bb73e1146473d70c1e5c8e.tar.gz
Use correct name for package source files. #526
-rw-r--r--CHANGES.rst5
-rw-r--r--CONTRIBUTORS.txt1
-rw-r--r--coverage/python.py9
-rw-r--r--tests/test_filereporter.py6
4 files changed, 13 insertions, 8 deletions
diff --git a/CHANGES.rst b/CHANGES.rst
index 2f572790..4aac4a4f 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -10,6 +10,10 @@ Change history for Coverage.py
Unreleased
----------
+- Reports could produce the wrong file names for packages, reporting ``pkg.py``
+ instead of the correct ``pkg/__init__.py``. This is now fixed, closing
+ `issue 526`_. Thanks, Dirk Thomas.
+
- Code that uses ``sys.settrace(sys.gettrace())`` in a file that wasn't being
coverage-measured would prevent correct coverage measurement in following
code. An example of this was running doctests programmatically, as described
@@ -21,6 +25,7 @@ Unreleased
- Running ``coverage xml`` in a directory named with non-ASCII characters would
fail under Python 2, as reported in `issue 573`_. This is now fixed.
+.. _issue 526: https://bitbucket.org/ned/coveragepy/issues/526/generated-xml-invalid-paths-for-cobertura
.. _issue 573: https://bitbucket.org/ned/coveragepy/issues/573/cant-generate-xml-report-if-some-source
.. _issue 575: https://bitbucket.org/ned/coveragepy/issues/575/running-doctest-prevents-complete-coverage
diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt
index 177bf972..877f6b84 100644
--- a/CONTRIBUTORS.txt
+++ b/CONTRIBUTORS.txt
@@ -37,6 +37,7 @@ David Christian
David Stanek
Detlev Offenbach
Devin Jeanpierre
+Dirk Thomas
Dmitry Shishov
Dmitry Trofimov
Eduardo Schettino
diff --git a/coverage/python.py b/coverage/python.py
index dacdf619..10d22e08 100644
--- a/coverage/python.py
+++ b/coverage/python.py
@@ -150,11 +150,10 @@ class PythonFileReporter(FileReporter):
super(PythonFileReporter, self).__init__(files.canonical_filename(filename))
if hasattr(morf, '__name__'):
- name = morf.__name__
- name = name.replace(".", os.sep)
- if filename.endswith('__init__.py'):
- name += os.sep + '__init__'
- name += '.py'
+ name = morf.__name__.replace(".", os.sep)
+ if os.path.basename(filename).startswith('__init__.'):
+ name += os.sep + "__init__"
+ name += ".py"
name = files.unicode_filename(name)
else:
name = files.relative_filename(filename)
diff --git a/tests/test_filereporter.py b/tests/test_filereporter.py
index a348a844..59eafa11 100644
--- a/tests/test_filereporter.py
+++ b/tests/test_filereporter.py
@@ -61,9 +61,9 @@ class FileReporterTest(CoverageTest):
acu = PythonFileReporter(aa)
bcu = PythonFileReporter(aa.bb)
ccu = PythonFileReporter(aa.bb.cc)
- self.assertEqual(acu.relative_filename(), native("aa.py"))
- self.assertEqual(bcu.relative_filename(), native("aa/bb.py"))
- self.assertEqual(ccu.relative_filename(), native("aa/bb/cc.py"))
+ self.assertEqual(acu.relative_filename(), native("aa/__init__.py"))
+ self.assertEqual(bcu.relative_filename(), native("aa/bb/__init__.py"))
+ self.assertEqual(ccu.relative_filename(), native("aa/bb/cc/__init__.py"))
self.assertEqual(acu.source(), "# aa\n")
self.assertEqual(bcu.source(), "# bb\n")
self.assertEqual(ccu.source(), "") # yes, empty