diff options
-rw-r--r-- | squad_client/commands/submit_tuxbuild.py | 96 | ||||
-rw-r--r-- | tests/test_submit_tuxbuild.py | 8 |
2 files changed, 52 insertions, 52 deletions
diff --git a/squad_client/commands/submit_tuxbuild.py b/squad_client/commands/submit_tuxbuild.py index f562bed..567f451 100644 --- a/squad_client/commands/submit_tuxbuild.py +++ b/squad_client/commands/submit_tuxbuild.py @@ -8,35 +8,39 @@ from squad_client.core.command import SquadClientCommand logger = logging.getLogger() tuxbuild_schema = { - "type": "object", - "properties": { - "build_status": { - "type": "string", - "enum": ["fail", "pass"], + "type": "array", + "minItems": 1, + "items": [{ + "type": "object", + "properties": { + "build_status": { + "type": "string", + "enum": ["fail", "pass"], + }, + "git_describe": { + "type": "string", + }, + "kconfig": { + "type": "array", + "minItems": 1, + "uniqueItems": True, + "items": [{"type": "string"}], + }, + "target_arch": { + "type": "string", + }, + "toolchain": { + "type": "string", + }, }, - "git_describe": { - "type": "string", - }, - "kconfig": { - "type": "array", - "minItems": 1, - "uniqueItems": True, - "items": [{"type": "string"}], - }, - "target_arch": { - "type": "string", - }, - "toolchain": { - "type": "string", - }, - }, - "required": [ - "build_status", - "git_describe", - "kconfig", - "target_arch", - "toolchain", - ], + "required": [ + "build_status", + "git_describe", + "kconfig", + "target_arch", + "toolchain", + ], + }], } @@ -89,27 +93,26 @@ class SubmitTuxbuildCommand(SquadClientCommand): if builds is None: return False + try: + jsonschema.validate(instance=builds, schema=tuxbuild_schema) + except jsonschema.exceptions.ValidationError as ve: + logger.error("Failed to validate tuxbuild data: %s", ve) + return False + data = {} for build in builds: - try: - jsonschema.validate(instance=build, schema=tuxbuild_schema) - - arch = build["target_arch"] - description = build["git_describe"] - kconfig = build["kconfig"] - status = build["build_status"] - toolchain = build["toolchain"] - test = self._get_test_name(kconfig, toolchain) - - multi_key = "%s.%s" % (description, arch) - if multi_key not in data: - data[multi_key] = {} + arch = build["target_arch"] + description = build["git_describe"] + kconfig = build["kconfig"] + status = build["build_status"] + toolchain = build["toolchain"] + test = self._get_test_name(kconfig, toolchain) - data[multi_key].update({test: status}) + multi_key = "%s.%s" % (description, arch) + if multi_key not in data: + data[multi_key] = {} - except jsonschema.exceptions.ValidationError as ve: - logger.error("Failed to validate tuxbuild data: %s", ve) - return False + data[multi_key].update({test: status}) for key, result in data.items(): description, arch = key.split(".", 1) @@ -118,9 +121,6 @@ class SubmitTuxbuildCommand(SquadClientCommand): build_version=description, env_slug=arch, tests=result, - metrics={}, - log={}, - metadata={}, ) return True diff --git a/tests/test_submit_tuxbuild.py b/tests/test_submit_tuxbuild.py index aac74c5..52373ce 100644 --- a/tests/test_submit_tuxbuild.py +++ b/tests/test_submit_tuxbuild.py @@ -133,7 +133,7 @@ class SubmitTuxbuildCommandTest(unittest.TestCase): proc.err, ) self.assertIn( - "Failed validating 'enum' in schema['properties']['build_status']", proc.err + "Failed validating 'enum' in schema['items'][0]['properties']['build_status']", proc.err ) def test_submit_tuxbuild_malformed_build_status(self): @@ -146,7 +146,7 @@ class SubmitTuxbuildCommandTest(unittest.TestCase): proc.err, ) self.assertIn( - "Failed validating 'type' in schema['properties']['build_status']", proc.err + "Failed validating 'type' in schema['items'][0]['properties']['build_status']", proc.err ) def test_submit_tuxbuild_missing_build_status(self): @@ -164,7 +164,7 @@ class SubmitTuxbuildCommandTest(unittest.TestCase): self.assertFalse(proc.ok, msg=proc.err) self.assertIn("Failed to validate tuxbuild data: [] is too short", proc.err) self.assertIn( - "Failed validating 'minItems' in schema['properties']['kconfig']", proc.err + "Failed validating 'minItems' in schema['items'][0]['properties']['kconfig']", proc.err ) def test_submit_tuxbuild_malformed_kconfig(self): @@ -175,7 +175,7 @@ class SubmitTuxbuildCommandTest(unittest.TestCase): proc.err, ) self.assertIn( - "Failed validating 'type' in schema['properties']['kconfig']['items'][0]", + "Failed validating 'type' in schema['items'][0]['properties']['kconfig']['items'][0]", proc.err, ) |