import importlib.util from pathlib import Path import unittest from unittest.mock import patch ROOT=Path(__file__).resolve().parents[1] spec=importlib.util.spec_from_file_location('coverage_report',ROOT/'tools/coverage_report.py') coverage=importlib.util.module_from_spec(spec) spec.loader.exec_module(coverage) class CoverageCompatibilityTest(unittest.TestCase): def test_non_source_line_markers_do_not_enter_coverage_counts(self): # Python 3.14 trace may expose None for artificial bytecode positions. with patch.object(coverage.trace,'_find_executable_linenos',return_value={None:1,0:1,1:1,7:1}): actual=coverage.executable_lines('example.py') self.assertEqual(actual,{1,7}) def test_real_source_lines_remain_available(self): lines=coverage.executable_lines(__file__) self.assertTrue(lines) self.assertTrue(all(type(line) is int and line>0 for line in lines)) if __name__=='__main__':unittest.main()