tools/test-case-generator: add more options
Allow individual test-cases or sub-sets of test-cases to be generated more easily. We allow explicit skipping of image-info generation (and hence the osbuild run), and also individual image types to be specified. Also drop distros and image types that are no longer supported. Signed-off-by: Tom Gundersen <teg@jklm.no>
This commit is contained in:
parent
cbf19d1319
commit
ab276bdb77
5 changed files with 47 additions and 94 deletions
|
|
@ -14,21 +14,34 @@ def get_subprocess_stdout(*args, **kwargs):
|
|||
|
||||
return sp.stdout
|
||||
|
||||
def main(distro, arch, imageType, store, output):
|
||||
def main(distro, arch, image_type, keep_image_info, store, output):
|
||||
with open("tools/test-case-generators/format-request-map.json") as format_request_json:
|
||||
format_request_dict = json.load(format_request_json)
|
||||
with open("tools/test-case-generators/repos.json") as repos_json:
|
||||
repos_dict = json.load(repos_json)
|
||||
for output_format, test_case_request in format_request_dict.items():
|
||||
if imageType:
|
||||
if imageType != test_case_request["compose-request"]["image-type"]:
|
||||
if image_type:
|
||||
if image_type != test_case_request["compose-request"]["image-type"]:
|
||||
continue
|
||||
print(f"generating test case for {output_format}")
|
||||
test_case_request["compose-request"]["distro"] = distro
|
||||
test_case_request["compose-request"]["arch"] = arch
|
||||
test_case_request["compose-request"]["repositories"] = repos_dict[distro][arch]
|
||||
test_case = json.loads(get_subprocess_stdout(["tools/test-case-generators/generate-test-case", store], input=json.dumps(test_case_request), encoding="utf-8"))
|
||||
args = ["tools/test-case-generators/generate-test-case", store]
|
||||
if keep_image_info:
|
||||
args += ["--no-image-info"]
|
||||
test_case = json.loads(get_subprocess_stdout(args, input=json.dumps(test_case_request), encoding="utf-8"))
|
||||
name = distro.replace("-", "_") + "-" + arch + "-" + output_format.replace("-", "_") + "-boot.json"
|
||||
file_name = output + "/" + name
|
||||
if keep_image_info:
|
||||
try:
|
||||
with open(file_name, 'r') as case_file:
|
||||
old_test_case = json.load(case_file)
|
||||
image_info = old_test_case.get("image-info")
|
||||
if image_info:
|
||||
test_case["image-info"] = image_info
|
||||
except:
|
||||
pass
|
||||
with open(file_name, 'w') as case_file:
|
||||
json.dump(test_case, case_file, indent=2)
|
||||
return
|
||||
|
|
@ -37,10 +50,11 @@ if __name__ == '__main__':
|
|||
parser = argparse.ArgumentParser(description="Generate test cases")
|
||||
parser.add_argument("--distro", help="distribution for test cases", required=True)
|
||||
parser.add_argument("--arch", help="architecture for test cases", required=True)
|
||||
parser.add_argument("--type", help="image type for test case, defaults to generate all")
|
||||
parser.add_argument("--image-type", help="image type for test case, defaults to generate all")
|
||||
parser.add_argument("--keep-image-info", action='store_true', help="skip image info (re)generation, but keep the one found in the existing test case")
|
||||
parser.add_argument("--store", metavar="STORE_DIRECTORY", type=os.path.abspath, help="path to the osbuild store", required=True)
|
||||
parser.add_argument("--output", metavar="OUTPUT_DIRECTORY", type=os.path.abspath, help="path to the output directory", required=True)
|
||||
args = parser.parse_args()
|
||||
|
||||
main(args.distro, args.arch, args.type, args.store, args.output)
|
||||
main(args.distro, args.arch, args.image_type, args.keep_image_info, args.store, args.output)
|
||||
sys.exit()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue