Skip to content

Commit fd232a2

Browse files
committed
fix: more relative_files=true fixes. #1280
1 parent f93c620 commit fd232a2

File tree

3 files changed

+42
-2
lines changed

3 files changed

+42
-2
lines changed

coverage/python.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,14 @@ def __init__(self, morf, coverage=None):
151151

152152
filename = source_for_morf(morf)
153153

154-
super().__init__(canonical_filename(filename))
154+
fname = filename
155+
canonicalize = True
156+
if self.coverage is not None:
157+
if self.coverage.config.relative_files:
158+
canonicalize = False
159+
if canonicalize:
160+
fname = canonical_filename(filename)
161+
super().__init__(fname)
155162

156163
if hasattr(morf, '__name__'):
157164
name = morf.__name__.replace(".", os.sep)

coverage/xmlreport.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ def xml_file(self, fr, analysis, has_arcs):
149149
# are populated later. Note that a package == a directory.
150150
filename = fr.filename.replace("\\", "/")
151151
for source_path in self.source_paths:
152-
source_path = files.canonical_filename(source_path)
152+
if not self.config.relative_files:
153+
source_path = files.canonical_filename(source_path)
153154
if filename.startswith(source_path.replace("\\", "/") + "/"):
154155
rel_name = filename[len(source_path)+1:]
155156
break

tests/test_api.py

+32
Original file line numberDiff line numberDiff line change
@@ -1239,6 +1239,38 @@ def test_combine_no_suffix_multiprocessing(self):
12391239
self.assert_file_count(".coverage.*", 0)
12401240
self.assert_exists(".coverage")
12411241

1242+
def test_files_up_one_level(self):
1243+
# https://github.com/nedbat/coveragepy/issues/1280
1244+
self.make_file("src/mycode.py", """\
1245+
def foo():
1246+
return 17
1247+
""")
1248+
self.make_file("test/test_it.py", """\
1249+
from src.mycode import foo
1250+
assert foo() == 17
1251+
""")
1252+
self.make_file("test/.coveragerc", """\
1253+
[run]
1254+
parallel = True
1255+
relative_files = True
1256+
1257+
[paths]
1258+
source =
1259+
../src/
1260+
*/src
1261+
""")
1262+
os.chdir("test")
1263+
sys.path.insert(0, "..")
1264+
cov1 = coverage.Coverage()
1265+
self.start_import_stop(cov1, "test_it")
1266+
cov1.save()
1267+
cov2 = coverage.Coverage()
1268+
cov2.combine()
1269+
cov3 = coverage.Coverage()
1270+
cov3.load()
1271+
report = self.get_report(cov3)
1272+
assert self.last_line_squeezed(report) == "TOTAL 4 0 100%"
1273+
12421274

12431275
class CombiningTest(CoverageTest):
12441276
"""More tests of combining data."""

0 commit comments

Comments
 (0)