@@ -1132,6 +1132,54 @@ def test_main_json_reuse_enum(output_file: Path) -> None:
11321132 )
11331133
11341134
1135+ def test_main_reuse_model_collapse_inline_definitions (output_file : Path ) -> None :
1136+ """Test --reuse-model --collapse-reuse-models deduplicates identical inline definitions."""
1137+ run_main_and_assert (
1138+ input_path = JSON_SCHEMA_DATA_PATH / "reuse_model_inline_definitions.json" ,
1139+ output_path = output_file ,
1140+ input_file_type = "jsonschema" ,
1141+ assert_func = assert_file_content ,
1142+ extra_args = [
1143+ "--reuse-model" ,
1144+ "--collapse-reuse-models" ,
1145+ "--output-model-type" ,
1146+ "pydantic_v2.BaseModel" ,
1147+ ],
1148+ )
1149+
1150+
1151+ def test_main_reuse_model_collapse_with_root (output_file : Path ) -> None :
1152+ """Test --reuse-model --collapse-reuse-models skips RootModel deduplication."""
1153+ run_main_and_assert (
1154+ input_path = JSON_SCHEMA_DATA_PATH / "reuse_model_collapse_with_root.json" ,
1155+ output_path = output_file ,
1156+ input_file_type = "jsonschema" ,
1157+ assert_func = assert_file_content ,
1158+ extra_args = [
1159+ "--reuse-model" ,
1160+ "--collapse-reuse-models" ,
1161+ "--output-model-type" ,
1162+ "pydantic_v2.BaseModel" ,
1163+ ],
1164+ )
1165+
1166+
1167+ def test_main_reuse_model_collapse_nested (output_file : Path ) -> None :
1168+ """Test --reuse-model --collapse-reuse-models with deeply nested identical structures."""
1169+ run_main_and_assert (
1170+ input_path = JSON_SCHEMA_DATA_PATH / "reuse_model_collapse_nested.json" ,
1171+ output_path = output_file ,
1172+ input_file_type = "jsonschema" ,
1173+ assert_func = assert_file_content ,
1174+ extra_args = [
1175+ "--reuse-model" ,
1176+ "--collapse-reuse-models" ,
1177+ "--output-model-type" ,
1178+ "pydantic_v2.BaseModel" ,
1179+ ],
1180+ )
1181+
1182+
11351183@pytest .mark .cli_doc (
11361184 options = ["--capitalize-enum-members" ],
11371185 option_description = """Capitalize enum member names to UPPER_CASE format.
0 commit comments