scripts: refactor validate_configs.py
Config validation for a single config is extracted to a separate
function.
Tested:
An invalid config still results in exit code 1 and error output.
When all configs are valid, exit code is still 0.
Change-Id: I98367dd5aebe0c4249f55d5056252761571528a6
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
diff --git a/scripts/validate_configs.py b/scripts/validate_configs.py
index ae5fb19..393d9a8 100755
--- a/scripts/validate_configs.py
+++ b/scripts/validate_configs.py
@@ -147,21 +147,9 @@
"unexpected_pass": [],
}
for config_file, config in zip(config_files, configs):
- name = os.path.split(config_file)[1]
- expect_fail = name in expected_fails
- try:
- validator.validate(config)
- if expect_fail:
- results["unexpected_pass"].append(name)
- if not getattr(args, "continue"):
- break
- except jsonschema.exceptions.ValidationError as e:
- if not expect_fail:
- results["invalid"].append(name)
- if args.verbose:
- print(e)
- if expect_fail or getattr(args, "continue"):
- continue
+ if not validate_single_config(
+ args, config_file, config, expected_fails, validator, results
+ ):
break
exit_status = 0
@@ -183,5 +171,27 @@
sys.exit(exit_status)
+def validate_single_config(
+ args, config_file, config, expected_fails, validator, results
+):
+ name = os.path.split(config_file)[1]
+ expect_fail = name in expected_fails
+ try:
+ validator.validate(config)
+ if expect_fail:
+ results["unexpected_pass"].append(name)
+ if not getattr(args, "continue"):
+ return False
+ except jsonschema.exceptions.ValidationError as e:
+ if not expect_fail:
+ results["invalid"].append(name)
+ if args.verbose:
+ print(e)
+ if expect_fail or getattr(args, "continue"):
+ return True
+ return False
+ return True
+
+
if __name__ == "__main__":
main()