1313from mako import exceptions as mako_exceptions , template as mako_template
1414from ogc .na .util import is_url
1515
16+ from ogc .bblocks import mimetypes
1617from ogc .bblocks .models import BuildingBlock , BuildingBlockRegister
1718from ogc .bblocks .util import sanitize_filename
1819from ogc .bblocks .validation import Validator , ValidationItemSourceType , ValidationReportSection , ValidationItemSource , \
@@ -151,7 +152,8 @@ def _validate_resource(bblock: BuildingBlock,
151152 require_fail : bool | None = None ,
152153 resource_url : str | None = None ,
153154 example_index : tuple [int , int ] | None = None ,
154- prefixes : dict [str , str ] | None = None ) -> ValidationReportItem | None :
155+ prefixes : dict [str , str ] | None = None ,
156+ file_format : str | None = None ) -> ValidationReportItem | None :
155157 if require_fail is None :
156158 require_fail = filename .stem .endswith ('-fail' ) and not example_index
157159
@@ -165,7 +167,7 @@ def _validate_resource(bblock: BuildingBlock,
165167 filename = output_filename ,
166168 example_index = int (example_idx ),
167169 snippet_index = int (snippet_idx ),
168- language = filename . suffix [ 1 :] ,
170+ language = file_format ,
169171 source_url = resource_url ,
170172 )
171173 else :
@@ -186,7 +188,8 @@ def _validate_resource(bblock: BuildingBlock,
186188 base_uri = base_uri ,
187189 additional_shacl_closures = additional_shacl_closures ,
188190 schema_ref = schema_ref ,
189- prefixes = prefixes )
191+ prefixes = prefixes ,
192+ file_format = file_format )
190193 any_validator_run = any_validator_run or (result is not False )
191194
192195 except Exception as unknown_exc :
@@ -279,6 +282,7 @@ def validate_test_resources(bblock: BuildingBlock,
279282 resource_contents = extra_test_resource ['contents' ],
280283 require_fail = extra_test_resource .get ('require-fail' , False ),
281284 resource_url = extra_test_resource ['ref' ] if isinstance (extra_test_resource ['ref' ], str ) else None ,
285+ file_format = mimetypes .from_extension (fn .suffix [1 :]),
282286 )
283287 if test_result :
284288 all_results .append (test_result )
@@ -301,8 +305,9 @@ def validate_test_resources(bblock: BuildingBlock,
301305 elif not add_snippets_formats :
302306 add_snippets_formats = []
303307
308+ extension = FORMAT_ALIASES .get (snippet ['language' ], snippet ['language' ]).replace ('/' , '.' )
304309 fn = bblock .files_path / (f"example_{ example_id + 1 } _{ snippet_id + 1 } "
305- f".{ FORMAT_ALIASES . get ( snippet [ 'language' ], snippet [ 'language' ]) } " )
310+ f".{ extension } " )
306311
307312 output_fn = output_dir / sanitize_filename (example .get ('base-output-filename' , fn .name ))
308313 i = 0
@@ -314,6 +319,9 @@ def validate_test_resources(bblock: BuildingBlock,
314319 f .write (code )
315320
316321 snippet ['path' ] = output_fn
322+ snippet_language = snippet .get ('language' )
323+ if snippet_language :
324+ snippet_language = mimetypes .normalize (snippet_language )
317325
318326 example_result = _validate_resource (
319327 bblock = bblock ,
@@ -327,6 +335,7 @@ def validate_test_resources(bblock: BuildingBlock,
327335 resource_url = snippet .get ('ref' ),
328336 require_fail = False ,
329337 prefixes = example .get ('prefixes' ),
338+ file_format = snippet_language ,
330339 )
331340 if example_result :
332341 all_results .append (example_result )
0 commit comments