diff options
author | Kevin Brown-Silva <kevin-brown@users.noreply.github.com> | 2023-04-27 05:27:33 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-27 04:27:33 -0700 |
commit | df1bf082f242cccdcb342000525bede537b95935 (patch) | |
tree | 64c6f78a49bd0c124ff5c0ba3cb65df22f1ada08 /tests | |
parent | 74b1758bb138355d5036631d8c92e7b0871339b2 (diff) | |
download | python-coveragepy-git-df1bf082f242cccdcb342000525bede537b95935.tar.gz |
fix: source paths with trailing slashes causing inconsistent sources in XML report with relative_paths (#1608)
* Added failing test for source with trailing slash
This test is nearly identical to the one above it, with the only
change being the source that is used. This may end up turning into
a fixture instead if the tests end up being identical after the
fix is made.
* Strip trailing slash for relative source paths
This fixes an issue introduced in 45cf7936ee605cfe06f7f5967a72a73198960120
where using `relative_files=True` and `src` with a trailing slash,
the source inserted as `<sources>` in the XML report would also have
a trailing slash. This also fixes an issue introduced in the same
commit where an empty `<source>` would be inserted as well for cases
where the `src` has a trailing slash.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_xml.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/tests/test_xml.py b/tests/test_xml.py index 94b310e3..0f2cff41 100644 --- a/tests/test_xml.py +++ b/tests/test_xml.py @@ -320,7 +320,7 @@ class XmlReportTest(XmlTestHelpers, CoverageTest): def test_no_duplicate_packages(self) -> None: self.make_file( - "namespace/package/__init__.py", + "namespace/package/__init__.py", "from . import sample; from . import test; from .subpackage import test" ) self.make_file("namespace/package/sample.py", "print('package.sample')") @@ -489,6 +489,19 @@ class XmlPackageStructureTest(XmlTestHelpers, CoverageTest): elts = dom.findall(".//sources/source") assert [elt.text for elt in elts] == ["src"] + def test_relative_source_trailing_slash(self) -> None: + self.make_file("src/mod.py", "print(17)") + cov = coverage.Coverage(source=["src/"]) + cov.set_option("run:relative_files", True) + self.start_import_stop(cov, "mod", modfile="src/mod.py") + cov.xml_report() + + with open("coverage.xml") as x: + print(x.read()) + dom = ElementTree.parse("coverage.xml") + elts = dom.findall(".//sources/source") + assert [elt.text for elt in elts] == ["src"] + def compare_xml(expected: str, actual: str, actual_extra: bool = False) -> None: """Specialized compare function for our XML files.""" |