26 lines
977 B
Python
26 lines
977 B
Python
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()
|