44 lines
1.7 KiB
Plaintext
44 lines
1.7 KiB
Plaintext
|
#!/bin/python3
|
||
|
|
||
|
"""This is a sanity check for the Fedora Intermediate Format (fif) converter and loader. It reads
|
||
|
in templates.old.json and templates-updates.old.json - which are expected to be our original-format
|
||
|
templates in JSON format - runs them through the converter to the intermediate format, then runs
|
||
|
them through the loader *from* the intermediate format, and (via DeepDiff, thanks jskladan!) checks
|
||
|
that the results are equivalent to the input, pace a couple of expected differences.
|
||
|
"""
|
||
|
|
||
|
from deepdiff import DeepDiff
|
||
|
import json
|
||
|
import subprocess
|
||
|
|
||
|
with open('templates.old.json', 'r') as tempfh:
|
||
|
origtemp = json.load(tempfh)
|
||
|
with open('templates-updates.old.json', 'r') as updfh:
|
||
|
origupd = json.load(updfh)
|
||
|
|
||
|
# run the converter
|
||
|
subprocess.run(['./fifconverter.py'])
|
||
|
# run the loader on the converted files
|
||
|
subprocess.run(['./fifloader.py', '--write', 'templates.fif.json', 'templates-updates.fif.json'])
|
||
|
with open('generated.json', 'r') as generatedfh:
|
||
|
generated = json.load(generatedfh)
|
||
|
|
||
|
# merge origs
|
||
|
origtemp['Products'].extend(origupd['Products'])
|
||
|
origtemp['TestSuites'].extend(origupd['TestSuites'])
|
||
|
origtemp['JobTemplates'].extend(origupd['JobTemplates'])
|
||
|
|
||
|
for item in generated['Products']:
|
||
|
# we generate the product names in the converter, our original
|
||
|
# templates don't have them
|
||
|
item['name'] = ""
|
||
|
for item in generated['JobTemplates']:
|
||
|
if item['group_name'] == 'fedora':
|
||
|
# we don't explicitly specify this in our original templates,
|
||
|
# but the converter adds it (rather than relying on openQA
|
||
|
# to guess when loading)
|
||
|
del item['group_name']
|
||
|
ddiff = DeepDiff(origtemp, generated, ignore_order=True, report_repetition=True)
|
||
|
# if this is just {}, we're good
|
||
|
print(ddiff)
|