def check_get_files(cache_dir, mock_min_cov_request, request_count): CoverageSummary( cache_dir=cache_dir, previous_coverage_report_url=TestCoverageSummary. TestGetFilesSummary.default_url).get_files_summary() assert len(mock_min_cov_request.request_history) == request_count assert read_file(JSON_MIN_DATA_FILE) == read_file( cache_dir / 'coverage-min.json')
def test_without_cached_data(self, tmpdir, requests_mock): mock_min_cov_request = requests_mock.get( self.default_url, json=read_file(JSON_MIN_DATA_FILE)) files_data = CoverageSummary( cache_dir=tmpdir, previous_coverage_report_url=TestCoverageSummary. TestGetFilesSummary.default_url).get_files_summary() assert len(mock_min_cov_request.request_history) == 1 assert read_file(JSON_MIN_DATA_FILE) == read_file( tmpdir.join('coverage-min.json')) assert files_data == read_file(JSON_MIN_DATA_FILE)['files']
def coverage_report(self): if not os.path.exists(self.cov.config.data_file): logger.debug(f'skipping coverage report {self.cov.config.data_file} file not found.') return logger.info(f'\n{self.report_str}') if 'text' in self.report_types: txt_file_path = os.path.join(self.report_dir, 'coverage.txt') logger.info(f'exporting txt coverage report to {txt_file_path}') with open(txt_file_path, 'w') as txt_file: txt_file.write(self.report_str) if 'html' in self.report_types: export_report(self.cov.html_report, 'html', os.path.join(self.cov.config.html_dir, 'index.html')) if 'xml' in self.report_types: export_report(self.cov.xml_report, 'xml', self.cov.config.xml_output) if 'json' in self.report_types: export_report(self.cov.json_report, 'json', self.cov.config.json_output) if 'json-min' in self.report_types: json_min_dir = os.path.join(self.report_dir, 'coverage-min.json') logger.info(f'exporting json-min coverage report to {json_min_dir}') CoverageSummary.create(self.cov.config.json_output, json_min_dir)
def test_with_no_cache(self, mocker, requests_mock): import builtins mock_min_cov_request = requests_mock.get( self.default_url, json=read_file(JSON_MIN_DATA_FILE)) not_mocked_open = builtins.open open_file_mocker = mocker.patch('builtins.open') files_data = CoverageSummary( previous_coverage_report_url=TestCoverageSummary. TestGetFilesSummary.default_url, no_cache=True).get_files_summary() assert open_file_mocker.call_count == 0 builtins.open = not_mocked_open assert len(mock_min_cov_request.request_history) == 1 assert files_data == read_file(JSON_MIN_DATA_FILE)['files']
def __init__(self, default_min_coverage: float = 70.0, allowed_coverage_degradation_percentage: float = 1.0, coverage_file: Optional[str] = os.path.join('coverage_report', '.coverage'), no_cache: Optional[bool] = False, report_dir: str = 'coverage_report', report_type: Optional[str] = None, no_degradation_check: Optional[bool] = False, previous_coverage_report_url: Optional[str] = 'https://storage.googleapis.com/marketplace-dist-dev/code-coverage-reports/coverage-min.json'): self.report_dir = report_dir self._cov: Optional[coverage.Coverage] = None self._report_str: Optional[str] = None self.degradation_check = not no_degradation_check self.coverage_file = coverage_file self.report_types = parse_report_type(report_type) if not self.degradation_check: return self.default = default_min_coverage self.epsilon = allowed_coverage_degradation_percentage cache_dir = str(os.path.join(self.report_dir, 'cache')) if not no_cache else None self._original_summary: Union[CoverageSummary, Dict[str, float]] = CoverageSummary( cache_dir=cache_dir, previous_coverage_report_url=previous_coverage_report_url, no_cache=no_cache )
def test_creation(self, tmpdir): min_cov_path = tmpdir.join('coverage-min.json') CoverageSummary.create( os.path.join(TEST_DATA_DIR, 'coverage.json'), min_cov_path) assert read_file(JSON_MIN_DATA_FILE) == read_file(min_cov_path)