--- a/eric7/DebugClients/Python/coverage/html.py Sun Jan 16 20:28:42 2022 +0100 +++ b/eric7/DebugClients/Python/coverage/html.py Sat Jan 22 14:44:56 2022 +0100 @@ -12,10 +12,10 @@ import coverage from coverage.data import add_data_to_hash -from coverage.exceptions import CoverageException +from coverage.exceptions import NoDataError from coverage.files import flat_rootname from coverage.misc import ensure_dir, file_be_gone, Hasher, isolate_module, format_local_datetime -from coverage.misc import human_sorted +from coverage.misc import human_sorted, plural from coverage.report import get_analysis_to_report from coverage.results import Numbers from coverage.templite import Templite @@ -208,7 +208,7 @@ self.html_file(fr, analysis) if not self.all_files_nums: - raise CoverageException("No data to report.") + raise NoDataError("No data to report.") self.totals = sum(self.all_files_nums) @@ -226,8 +226,10 @@ # .gitignore can't be copied from the source tree because it would # prevent the static files from being checked in. - with open(os.path.join(self.directory, ".gitignore"), "w") as fgi: - fgi.write("# Created by coverage.py\n*\n") + gitigore_path = os.path.join(self.directory, ".gitignore") + if not os.path.exists(gitigore_path): + with open(gitigore_path, "w") as fgi: + fgi.write("# Created by coverage.py\n*\n") # The user may have extra CSS they want copied. if self.extra_css: @@ -329,17 +331,11 @@ skipped_covered_msg = skipped_empty_msg = "" if self.skipped_covered_count: - msg = "{} {} skipped due to complete coverage." - skipped_covered_msg = msg.format( - self.skipped_covered_count, - "file" if self.skipped_covered_count == 1 else "files", - ) + n = self.skipped_covered_count + skipped_covered_msg = f"{n} file{plural(n)} skipped due to complete coverage." if self.skipped_empty_count: - msg = "{} empty {} skipped." - skipped_empty_msg = msg.format( - self.skipped_empty_count, - "file" if self.skipped_empty_count == 1 else "files", - ) + n = self.skipped_empty_count + skipped_empty_msg = f"{n} empty file{plural(n)} skipped." html = index_tmpl.render({ 'files': self.file_summaries,