summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Cook <justin.cook@linaro.org>2020-12-04 09:29:23 -0600
committerJustin Cook <justin.cook@linaro.org>2020-12-04 09:29:23 -0600
commite0367fc3edcc68c19133173eacf847db4f31d31e (patch)
tree5ddc60eb91171e2378a745560679f476ec2f4e8b
parent1d707106568f44988e1a9bc139f9bf675cd40c0a (diff)
Validate a full tuxbuild file instead of just individual builds
Signed-off-by: Justin Cook <justin.cook@linaro.org>
-rw-r--r--squad_client/commands/submit_tuxbuild.py96
-rw-r--r--tests/test_submit_tuxbuild.py8
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,
)