Skip to content

Instantly share code, notes, and snippets.

@zpencerq
Created September 7, 2021 14:42
Show Gist options
  • Save zpencerq/362eda0f5d547d4ae8252417eaaa8d86 to your computer and use it in GitHub Desktop.
Save zpencerq/362eda0f5d547d4ae8252417eaaa8d86 to your computer and use it in GitHub Desktop.
Convert dbt run_results.json to XML
import json
import sys
import xml.etree.ElementTree as ET
try:
fileobj = open(sys.argv[1], "r")
except IndexError:
fileobj = sys.stdin
with fileobj:
data = json.load(fileobj)
results = data["results"]
testsuite = ET.Element("testsuite")
testsuite.set("tests", str(len(results)))
for result in results:
testcase = ET.SubElement(testsuite, "testcase")
testcase.set("time", str(result["execution_time"]))
unique_id = result["unique_id"].split(".")
classname = ".".join(unique_id[:2])
name = ".".join(unique_id[2:])
testcase.set("classname", classname)
testcase.set("name", name)
if result["status"] == "fail":
failure = ET.SubElement(testcase, "failure")
failure.set("type", "Failure")
failure.set("message", result["message"])
elif result["status"] == "error":
error = ET.SubElement(testcase, "error")
error.set("type", "Database Error")
error.set("message", result["message"])
elif result["message"]:
stdout = ET.SubElement(testcase, "system-out")
stdout.text = result["message"]
ET.dump(testsuite)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment