@@ -84,6 +84,7 @@ def test_yaml_loaded_only_via_safe_load():
8484 """Lock in the packaged-YAML trust boundary for synonyms.yaml."""
8585 repo_root = Path (__file__ ).resolve ().parents [1 ]
8686 src_root = repo_root / "src"
87+ scan_roots = (src_root , repo_root / "tests" )
8788 expected_yaml_input = (
8889 "src/mcp_server_python_docs/data/synonyms.yaml"
8990 )
@@ -94,21 +95,19 @@ def test_yaml_loaded_only_via_safe_load():
9495
9596 unsafe_load_call = re .compile (r"\byaml[.]load\s*[(]" )
9697 unsafe_loader_name = re .compile (r"\byaml[.]unsafe_load\b" )
97- loader_override = re .compile (r"\bLoader\s*=" )
9898 safe_load_call = re .compile (r"\byaml[.]safe_load\s*[(]" )
9999
100100 violations : list [str ] = []
101101 safe_load_sites : set [str ] = set ()
102102
103- for source_path in sorted (src_root .rglob ("*.py" )):
104- relative_path = source_path .relative_to (repo_root ).as_posix ()
105- for line_number , line in enumerate (source_path .read_text ().splitlines (), 1 ):
106- if unsafe_load_call .search (line ) or unsafe_loader_name .search (line ):
107- violations .append (f"{ relative_path } :{ line_number } : unsafe YAML load" )
108- if loader_override .search (line ) and "SafeLoader" not in line :
109- violations .append (f"{ relative_path } :{ line_number } : custom YAML Loader" )
110- if safe_load_call .search (line ):
111- safe_load_sites .add (relative_path )
103+ for scan_root in scan_roots :
104+ for source_path in sorted (scan_root .rglob ("*.py" )):
105+ relative_path = source_path .relative_to (repo_root ).as_posix ()
106+ for line_number , line in enumerate (source_path .read_text ().splitlines (), 1 ):
107+ if unsafe_load_call .search (line ) or unsafe_loader_name .search (line ):
108+ violations .append (f"{ relative_path } :{ line_number } : unsafe YAML load" )
109+ if source_path .is_relative_to (src_root ) and safe_load_call .search (line ):
110+ safe_load_sites .add (relative_path )
112111
113112 yaml_inputs = sorted (
114113 path .relative_to (repo_root ).as_posix ()
0 commit comments