Skip to content

Commit c0612e7

Browse files
committed
fix: percent covered decimal coversion
1 parent 50c71a2 commit c0612e7

File tree

3 files changed

+10
-6
lines changed

3 files changed

+10
-6
lines changed

codecov/coverage/pytest.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
from __future__ import annotations
22

33
import datetime
4+
import decimal
45
import pathlib
56

67
from codecov.coverage.base import BaseCoverage, Coverage, CoverageInfo, CoverageMetadata, FileCoverage
78

89

910
class PytestCoverage(BaseCoverage):
11+
def _convert_to_decimal(self, value: float, precision: int = 2) -> decimal.Decimal:
12+
return decimal.Decimal(str(float(value) / 100)).quantize(decimal.Decimal(10) ** -precision)
13+
1014
def extract_info(self, data: dict) -> Coverage:
1115
"""
1216
{
@@ -69,7 +73,7 @@ def extract_info(self, data: dict) -> Coverage:
6973
info=CoverageInfo(
7074
covered_lines=file_data['summary']['covered_lines'],
7175
num_statements=file_data['summary']['num_statements'],
72-
percent_covered=file_data['summary']['percent_covered'],
76+
percent_covered=self._convert_to_decimal(file_data['summary']['percent_covered']),
7377
percent_covered_display=file_data['summary']['percent_covered_display'],
7478
missing_lines=file_data['summary']['missing_lines'],
7579
excluded_lines=file_data['summary']['excluded_lines'],
@@ -84,7 +88,7 @@ def extract_info(self, data: dict) -> Coverage:
8488
info=CoverageInfo(
8589
covered_lines=data['totals']['covered_lines'],
8690
num_statements=data['totals']['num_statements'],
87-
percent_covered=data['totals']['percent_covered'],
91+
percent_covered=self._convert_to_decimal(data['totals']['percent_covered']),
8892
percent_covered_display=data['totals']['percent_covered_display'],
8993
missing_lines=data['totals']['missing_lines'],
9094
excluded_lines=data['totals']['excluded_lines'],

tests/coverage/test_pytest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def test_extract_info(self, coverage_json):
2424
info=CoverageInfo(
2525
covered_lines=6,
2626
num_statements=10,
27-
percent_covered=60.0,
27+
percent_covered=PytestCoverage()._convert_to_decimal(60.0),
2828
percent_covered_display='60%',
2929
missing_lines=4,
3030
excluded_lines=0,
@@ -40,7 +40,7 @@ def test_extract_info(self, coverage_json):
4040
info=CoverageInfo(
4141
covered_lines=6,
4242
num_statements=10,
43-
percent_covered=60.0,
43+
percent_covered=PytestCoverage()._convert_to_decimal(60.0),
4444
percent_covered_display='60%',
4545
missing_lines=4,
4646
excluded_lines=0,

tests/test_template.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -538,12 +538,12 @@ def test_select_files(
538538
assert total == covered_skipped_expected_total
539539

540540

541-
def test_select_files_no_statements(make_coverage_and_diff):
541+
def test_select_files_no_statements(make_coverage):
542542
code = """
543543
# file: a.py
544544
1 line covered
545545
"""
546-
cov, _ = make_coverage_and_diff(code)
546+
cov = make_coverage(code)
547547
cov.files[pathlib.Path('a.py')].info.num_statements = 0
548548
files, total = template.select_files(coverage=cov, max_files=2, skip_covered_files_in_report=False)
549549
assert [str(e.path) for e in files] == []

0 commit comments

Comments
 (0)