From 79ed78355dea757353b1b8726e376038dbc99970 Mon Sep 17 00:00:00 2001 From: eleanorjboyd Date: Wed, 13 Nov 2024 15:36:09 -0800 Subject: [PATCH 1/2] handle NoSource exception for coverage --- python_files/vscode_pytest/__init__.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/python_files/vscode_pytest/__init__.py b/python_files/vscode_pytest/__init__.py index d162f8234177..1abaa2ab7959 100644 --- a/python_files/vscode_pytest/__init__.py +++ b/python_files/vscode_pytest/__init__.py @@ -442,13 +442,29 @@ def pytest_sessionfinish(session, exitstatus): if is_coverage_run == "True": # load the report and build the json result to return import coverage + from coverage.exceptions import NoSource cov = coverage.Coverage() cov.load() + + # omit file playground + config = cov.config + # omit_patterns = config.omit + exclude_patterns = config.exclude_list + cov_ex_list = cov.get_exclude_list() + + # print("Omitted files patterns:", omit_patterns) + print("Excluded code patterns:", exclude_patterns) + print("Excluded code patterns:", cov_ex_list) + file_set: set[str] = cov.get_data().measured_files() file_coverage_map: dict[str, FileCoverageInfo] = {} for file in file_set: - analysis = cov.analysis2(file) + try: + analysis = cov.analysis2(file) + except NoSource: + # as per issue 24308 this best way to handle this edge case + continue lines_executable = {int(line_no) for line_no in analysis[1]} lines_missed = {int(line_no) for line_no in analysis[3]} lines_covered = lines_executable - lines_missed From e9a494cba4cab01942f32949d2df84e440301ff6 Mon Sep 17 00:00:00 2001 From: eleanorjboyd Date: Thu, 14 Nov 2024 09:30:09 -0800 Subject: [PATCH 2/2] remove other edits --- python_files/vscode_pytest/__init__.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/python_files/vscode_pytest/__init__.py b/python_files/vscode_pytest/__init__.py index 1abaa2ab7959..9f02481b344a 100644 --- a/python_files/vscode_pytest/__init__.py +++ b/python_files/vscode_pytest/__init__.py @@ -447,16 +447,6 @@ def pytest_sessionfinish(session, exitstatus): cov = coverage.Coverage() cov.load() - # omit file playground - config = cov.config - # omit_patterns = config.omit - exclude_patterns = config.exclude_list - cov_ex_list = cov.get_exclude_list() - - # print("Omitted files patterns:", omit_patterns) - print("Excluded code patterns:", exclude_patterns) - print("Excluded code patterns:", cov_ex_list) - file_set: set[str] = cov.get_data().measured_files() file_coverage_map: dict[str, FileCoverageInfo] = {} for file in file_set: