Skip to content

Commit

Permalink
Merge f4bc8bf into ff2bec3
Browse files Browse the repository at this point in the history
  • Loading branch information
asherf committed Aug 22, 2020
2 parents ff2bec3 + f4bc8bf commit 6b8862d
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 3 deletions.
9 changes: 8 additions & 1 deletion src/python/pants/backend/python/rules/coverage.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,11 @@ async def generate_coverage_reports(
)
continue
report_types.append(report_type)
output_file = (
f"coverage.{report_type.value}"
if report_type in {CoverageReportType.XML, CoverageReportType.JSON}
else None
)
pex_processes.append(
PexProcess(
coverage_setup.pex,
Expand All @@ -284,7 +289,7 @@ async def generate_coverage_reports(
argv=(report_type.report_name, "--ignore-errors"),
input_digest=input_digest,
output_directories=("htmlcov",) if report_type == CoverageReportType.HTML else None,
output_files=("coverage.xml",) if report_type == CoverageReportType.XML else None,
output_files=(output_file,) if output_file else None,
description=f"Generate Pytest {report_type.report_name} coverage report.",
level=LogLevel.DEBUG,
)
Expand Down Expand Up @@ -312,6 +317,8 @@ def _get_coverage_reports(
report_file = output_dir / "htmlcov" / "index.html"
elif report_type == CoverageReportType.XML:
report_file = output_dir / "coverage.xml"
elif report_type == CoverageReportType.JSON:
report_file = output_dir / "coverage.json"
else:
raise ValueError(f"Invalid coverage report type: {report_type}")
coverage_reports.append(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -218,11 +218,13 @@ def test_coverage_raw(self) -> None:
result = self._run_tests(tmpdir_relative, "--coverage-py-report=raw")
self._assert_raw_coverage(result, build_root)

def test_coverage_html_and_xml(self) -> None:
def test_coverage_html_xml_json(self) -> None:
build_root = get_buildroot()
with temporary_dir(root_dir=build_root) as tmpdir:
tmpdir_relative = self._prepare_sources(tmpdir, build_root)
result = self._run_tests(tmpdir_relative, "--coverage-py-report=['xml', 'html']")
result = self._run_tests(
tmpdir_relative, "--coverage-py-report=['xml', 'html', 'json']"
)
coverage_path = Path(build_root, "dist", "coverage", "python")
assert coverage_path.exists() is True

Expand All @@ -234,3 +236,7 @@ def test_coverage_html_and_xml(self) -> None:
html_cov_dir = coverage_path / "htmlcov"
assert html_cov_dir.exists() is True
assert (html_cov_dir / "index.html").exists() is True

assert "Wrote json coverage report to `dist/coverage/python`" in result.stderr_data
json_coverage = coverage_path / "coverage.json"
assert json_coverage.exists() is True
1 change: 1 addition & 0 deletions src/python/pants/core/goals/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ class CoverageReportType(Enum):
XML = ("xml", None)
HTML = ("html", None)
RAW = ("raw", None)
JSON = ("json", None)

_report_name: str

Expand Down

0 comments on commit 6b8862d

Please sign in to comment.