from attr import attrs, attrib from attr import Factory TEST_GROUP_PATTERN = "{prefix}-container.json" TEST_CASE_PATTERN = "{prefix}-result.json" ATTACHMENT_PATTERN = "{prefix}-attachment.{ext}" GLOBALS_PATTERN = "{prefix}-globals.json" INDENT = 4 @attrs class TestResultContainer: file_pattern = TEST_GROUP_PATTERN uuid = attrib(default=None) name = attrib(default=None) children = attrib(default=Factory(list)) description = attrib(default=None) descriptionHtml = attrib(default=None) befores = attrib(default=Factory(list)) afters = attrib(default=Factory(list)) links = attrib(default=Factory(list)) start = attrib(default=None) stop = attrib(default=None) @attrs class ExecutableItem: name = attrib(default=None) status = attrib(default=None) statusDetails = attrib(default=None) stage = attrib(default=None) description = attrib(default=None) descriptionHtml = attrib(default=None) steps = attrib(default=Factory(list)) attachments = attrib(default=Factory(list)) parameters = attrib(default=Factory(list)) start = attrib(default=None) stop = attrib(default=None) @attrs class TestResult(ExecutableItem): file_pattern = TEST_CASE_PATTERN uuid = attrib(default=None) historyId = attrib(default=None) testCaseId = attrib(default=None) fullName = attrib(default=None) labels = attrib(default=Factory(list)) links = attrib(default=Factory(list)) titlePath = attrib(default=Factory(list)) @attrs class TestStepResult(ExecutableItem): id = attrib(default=None) @attrs class TestBeforeResult(ExecutableItem): pass @attrs class TestAfterResult(ExecutableItem): pass @attrs class Parameter: name = attrib(default=None) value = attrib(default=None) excluded = attrib(default=None) mode = attrib(default=None) @attrs class Label: name = attrib(default=None) value = attrib(default=None) @attrs class Link: type = attrib(default=None) url = attrib(default=None) name = attrib(default=None) @attrs class StatusDetails: known = attrib(default=None) flaky = attrib(default=None) message = attrib(default=None) trace = attrib(default=None) @attrs class Attachment: name = attrib(default=None) source = attrib(default=None) type = attrib(default=None) @attrs class GlobalAttachment(Attachment): timestamp = attrib(default=None) @attrs class GlobalError(StatusDetails): timestamp = attrib(default=None) @attrs class Globals: file_pattern = GLOBALS_PATTERN attachments = attrib(default=Factory(list)) errors = attrib(default=Factory(list)) class Status: FAILED = "failed" BROKEN = "broken" PASSED = "passed" SKIPPED = "skipped" UNKNOWN = "unknown"