Skip to content

Commit 28e8fa1

Browse files
committed
validate DAYZ SPEC version
1 parent 21fa666 commit 28e8fa1

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

sdv/single_table/dayz.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ def create_parameters(data, metadata, output_filename):
173173
metadata.validate()
174174
datas = data if isinstance(data, dict) else {metadata._get_single_table_name(): data}
175175
metadata.validate_data(datas)
176-
parameters = {'DAYZ_SPEC_VERSION': 'V1', 'tables': {}}
176+
parameters = {'DAYZ_SPEC_VERSION': DAYZ_SPEC_VERSION, 'tables': {}}
177177
for table_name, table_data in datas.items():
178178
parameters['tables'][table_name] = {}
179179
parameters['tables'][table_name].update(_detect_table_parameters(table_data))
@@ -196,6 +196,13 @@ def _validate_parameter_dict_keys(dayz_parameters):
196196
f"DayZ parameters contains unexpected key(s): '{unknown_base_keys}'."
197197
)
198198

199+
dayz_spec_version = dayz_parameters.get('DAYZ_SPEC_VERSION', DAYZ_SPEC_VERSION)
200+
if dayz_spec_version != DAYZ_SPEC_VERSION:
201+
raise SynthesizerProcessingError(
202+
f"Unsupported DayZ parameter spec version: '{dayz_spec_version}'."
203+
f" Supported version is: '{DAYZ_SPEC_VERSION}'."
204+
)
205+
199206

200207
def _validate_table_parameter_dict_keys(table, table_parameters):
201208
unknown_table_keys = table_parameters.keys() - TABLE_PARAMETER_KEYS

tests/unit/single_table/test_dayz.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,23 @@ def test__validate_parameter_structure(dayz_parameters):
183183
bad_tables_parameters = {'tables': None}
184184
bad_tables_parameters_value = {'tables': {'table': None}}
185185
bad_tables_key = {'tables': {'table': {'invalid_key': None}}}
186+
bad_spec_version = {'DAYZ_SPEC_VERSION': 'V2', 'tables': {}}
187+
valid_parameters = {
188+
'DAYZ_SPEC_VERSION': 'V1',
189+
'tables': {
190+
'table': {
191+
'num_rows': 100,
192+
'columns': {
193+
'id': {},
194+
'numerical': {},
195+
},
196+
}
197+
},
198+
'relationships': [],
199+
}
186200

187201
# Run and Assert
202+
_validate_parameter_structure(valid_parameters)
188203
expected_bad_parameters_type_msg = re.escape(
189204
'DayZ parameters must be a dictionary of DayZSynthesizer parameters.'
190205
)
@@ -197,6 +212,12 @@ def test__validate_parameter_structure(dayz_parameters):
197212
with pytest.raises(SynthesizerProcessingError, match=expected_bad_parameters_key_msg):
198213
_validate_parameter_structure(bad_parameters_key)
199214

215+
expected_bad_spec_version_msg = re.escape(
216+
"Unsupported DayZ parameter spec version: 'V2'. Supported version is: 'V1'."
217+
)
218+
with pytest.raises(SynthesizerProcessingError, match=expected_bad_spec_version_msg):
219+
_validate_parameter_structure(bad_spec_version)
220+
200221
expected_bad_tables_parameters_msg = re.escape(
201222
"The 'tables' value in the DayZ parameters must be a dictionary of table parameters."
202223
)

0 commit comments

Comments
 (0)