"""freeze.py resolves an advisory's file-only site to the function the fix changes (population v3, decision 2). The resolver reads PHP text only; it must not be fooled by braces in strings, comments or inline HTML, and a line outside every function is ``.""" from __future__ import annotations import importlib.util from pathlib import Path SPEC = importlib.util.spec_from_file_location("freeze", Path(__file__).resolve().parents[1] / "benchmarks" / "independent" / "freeze.py") freeze = importlib.util.module_from_spec(SPEC) SPEC.loader.exec_module(freeze) PHP = """{ not code }
{
None: spans = {name: (first, last) for name, first, last in freeze.php_functions(PHP)} assert spans == {"open": (6, 10), "close": (14, 19), "helper": (24, 24)} def test_a_line_resolves_to_its_innermost_named_function_or_global() -> None: spans = freeze.php_functions(PHP) assert freeze.enclosing(spans, 9) == "open" # inside the closure: the named function owns it assert freeze.enclosing(spans, 17) == "close" assert freeze.enclosing(spans, 21) == "" assert freeze.enclosing(spans, 1) == "" def test_an_insertion_after_a_closing_brace_is_outside_the_function() -> None: spans = freeze.php_functions(PHP) assert freeze.enclosing(spans, 10) == "open" # a changed line on the closing brace assert freeze.enclosing(spans, 10, inserted=True) == "" # new code that follows it assert freeze.enclosing(spans, 8, inserted=True) == "open"