diff env/lib/python3.7/site-packages/planemo/test/results.py @ 5:9b1c78e6ba9c draft default tip

"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author shellac
date Mon, 01 Jun 2020 08:59:25 -0400
parents 79f47841a781
children
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/planemo/test/results.py	Thu May 14 16:47:39 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-"""Describes results.
-
-Is a JSON.
-"""
-import json
-import os
-
-from planemo.io import error
-
-
-class StructuredData(object):
-    """Abstraction around a simple data structure describing test results."""
-
-    def __init__(self, json_path=None, data=None):
-        """Create a :class:`StructuredData` from a JSON file."""
-        def data_error():
-            error("An invalid JSON for structured test result data - "
-                  "summary information and planemo reports will be "
-                  "incorrect.")
-
-        self.json_path = json_path
-        structured_data = {}
-        structured_data_tests = {}
-        if json_path and os.path.exists(json_path) and data is None:
-            try:
-                with open(json_path, "r") as output_json_f:
-                    data = json.load(output_json_f)
-            except Exception:
-                data_error()
-        try:
-            structured_data = data
-            structured_data_tests = structured_data["tests"]
-        except Exception:
-            data_error()
-
-        self.structured_data = structured_data
-        self.structured_data_tests = structured_data_tests
-        structured_data_by_id = {}
-        for test in self.structured_data_tests:
-            structured_data_by_id[test["id"]] = test["data"]
-        self.structured_data_by_id = structured_data_by_id
-        self.has_details = "summary" in structured_data
-        if self.has_details:
-            self.read_summary()
-
-    def update(self):
-        """Write out an updated version of this data structure to supplied json path."""
-        with open(self.json_path, "w") as out_f:
-            json.dump(self.structured_data, out_f)
-
-    def set_exit_code(self, exit_code):
-        """Set the exit_code for the this test."""
-        self.structured_data["exit_code"] = exit_code
-
-    def calculate_summary_data_if_needed(self):
-        if "summary" not in self.structured_data:
-            self.calculate_summary_data()
-
-    def calculate_summary_data(self):
-        """Use full details on individual test data to update structured data with summary info."""
-        num_tests = 0
-        num_failures = 0
-        num_skips = 0
-        num_errors = 0
-
-        for test in self.structured_data_tests:
-            test_data = get_dict_value("data", test)
-            status = get_dict_value("status", test_data)
-            num_tests += 1
-            if status == "skip":
-                num_skips += 1
-            elif status == "failure":
-                num_failures += 1
-            elif status == "error":
-                num_errors += 1
-            elif status != "success":
-                raise Exception("Unknown test status encountered [%s]" % status)
-
-        summary = {}
-        summary["num_tests"] = num_tests
-        summary["num_failures"] = num_failures
-        summary["num_skips"] = num_skips
-        summary["num_errors"] = num_errors
-        self.structured_data["summary"] = summary
-        self.read_summary()
-
-    def read_summary(self):
-        """Read summary data into properties on this class."""
-        summary = self.structured_data["summary"]
-        num_tests = summary["num_tests"]
-        num_failures = summary["num_failures"]
-        num_skips = summary["num_skips"]
-        num_errors = summary["num_errors"]
-
-        self.num_tests = num_tests
-        self.num_problems = num_skips + num_errors + num_failures
-
-        self.exit_code = self.structured_data.get("exit_code", None)
-
-    @property
-    def failed_ids(self):
-        """Find set of IDs for failed tests."""
-        ids = set([])
-        for test_data in self.structured_data_tests:
-            if test_data["data"]["status"] == "success":
-                continue
-            test_case = test_data["id"].replace(".test_toolbox.", ".test_toolbox:")
-            ids.add(test_case)
-        return ids
-
-
-def get_dict_value(key, data):
-    """Return data[key] with improved KeyError."""
-    try:
-        return data[key]
-    except (KeyError, TypeError):
-        raise KeyError("No key [%s] in [%s]" % (key, data))
-
-
-__all__ = (
-    "StructuredData",
-    "get_dict_value",
-)