Skip to content

Commit f2db473

Browse files
committed
Added both merged and unmerged loading tests
1 parent 29bb542 commit f2db473

1 file changed

Lines changed: 40 additions & 19 deletions

File tree

hed/scripts/schema_script_util.py

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,25 +30,10 @@ def validate_schema_object(base_schema, schema_name):
3030
validation_issues.append(error_message)
3131
return validation_issues
3232

33-
mediawiki_string = base_schema.get_as_mediawiki_string(save_merged=True)
34-
reloaded_schema = from_string(mediawiki_string, schema_format=".mediawiki")
35-
36-
validation_issues += _get_schema_comparison(base_schema, reloaded_schema, schema_name, "mediawiki")
37-
38-
xml_string = base_schema.get_as_xml_string(save_merged=True)
39-
reloaded_schema = from_string(xml_string, schema_format=".xml")
40-
41-
validation_issues += _get_schema_comparison(base_schema, reloaded_schema, schema_name, "xml")
42-
43-
json_string = base_schema.get_as_json_string(save_merged=True)
44-
reloaded_schema = from_string(json_string, schema_format=".json")
45-
46-
validation_issues += _get_schema_comparison(base_schema, reloaded_schema, schema_name, "json")
47-
48-
tsv_dataframes = base_schema.get_as_dataframes(save_merged=True)
49-
reloaded_schema = from_dataframes(tsv_dataframes)
50-
51-
validation_issues += _get_schema_comparison(base_schema, reloaded_schema, schema_name, "tsv")
33+
for save_merged in (True, False):
34+
label = "merged" if save_merged else "unmerged"
35+
tagged_name = f"{schema_name} ({label})"
36+
validation_issues += _roundtrip_all_formats(base_schema, tagged_name, save_merged=save_merged)
5237
except HedFileError as e:
5338
print(f"Saving/loading error: {schema_name} {e.message}")
5439
error_text = e.message
@@ -306,6 +291,42 @@ def get_prerelease_path(repo_path, schema_name, schema_version):
306291
return os.path.join(base_path, "hedtsv", schema_filename)
307292

308293

294+
def _roundtrip_all_formats(base_schema, schema_name, save_merged=True):
295+
"""Roundtrip a schema through all four formats and compare to the original.
296+
297+
Serializes the schema to mediawiki, XML, JSON, and TSV, reloads each, and
298+
verifies the reloaded schema matches the original.
299+
300+
Parameters:
301+
base_schema (HedSchema): The schema object to roundtrip.
302+
schema_name (str): Label for error reporting (should include merge context).
303+
save_merged (bool): If True, save the merged (with-standard) form.
304+
If False, save only the library-specific content.
305+
306+
Returns:
307+
list: A list of validation issue strings. Empty if no issues found.
308+
"""
309+
issues = []
310+
311+
mediawiki_string = base_schema.get_as_mediawiki_string(save_merged=save_merged)
312+
reloaded_schema = from_string(mediawiki_string, schema_format=".mediawiki")
313+
issues += _get_schema_comparison(base_schema, reloaded_schema, schema_name, "mediawiki")
314+
315+
xml_string = base_schema.get_as_xml_string(save_merged=save_merged)
316+
reloaded_schema = from_string(xml_string, schema_format=".xml")
317+
issues += _get_schema_comparison(base_schema, reloaded_schema, schema_name, "xml")
318+
319+
json_string = base_schema.get_as_json_string(save_merged=save_merged)
320+
reloaded_schema = from_string(json_string, schema_format=".json")
321+
issues += _get_schema_comparison(base_schema, reloaded_schema, schema_name, "json")
322+
323+
tsv_dataframes = base_schema.get_as_dataframes(save_merged=save_merged)
324+
reloaded_schema = from_dataframes(tsv_dataframes)
325+
issues += _get_schema_comparison(base_schema, reloaded_schema, schema_name, "tsv")
326+
327+
return issues
328+
329+
309330
def _get_schema_comparison(schema, schema_reload, file_path, file_format):
310331
"""Compare two schema objects and generate error message if they differ.
311332

0 commit comments

Comments
 (0)