JUnit XML creation, editing, merging and comparison in MoonBit
moon add tc-adventureking/junit_delta@0.4.0import { "tc-adventureking/junit_delta/junit", }
pkgtype(kind: "executable")fn main raise {
let suite = @junit.TestSuite::new(name=Some("service"))
suite.add_case(@junit.TestCase::new(name=Some("login"), time=Some(0.12)))
suite.add_property("build", "12")
let report = @junit.JUnitXml::new()
report.add_suite(suite)
report.update_statistics()
println(report.element().write_xml(pretty=true))
}pub(all) suberror InputError {
InvalidInput(String)
Rejected(String, String)
UnknownField(String)
} derive(Eq)impl Show for InputErrorpub struct DiffConfig {
slowdown_pct : Int
slowdown_floor_us : Int64
fail_on : ReadOnlyArray[String]
}pub struct DiffResult {
entries : ReadOnlyArray[DiffEntry]
diagnostics : ReadOnlyArray[Diagnostic]
violations : ReadOnlyArray[String]
baseline_count : Int
candidate_count : Int
history_count : Int
// private fields
}fn DiffResult::to_markdown(self : DiffResult, limit? : Int, max_units? : Int64) -> String raise InputErrorpub struct JUnitDocument {
root : JUnitElement
before : ReadOnlyArray[JUnitNode]
after : ReadOnlyArray[JUnitNode]
declaration : (String, String?, String?)?
}fn JUnitDocument::map_cases(self : JUnitDocument, transform : (JUnitElement) -> JUnitElement? raise) -> JUnitDocument raisefn JUnitDocument::map_suites(self : JUnitDocument, transform : (JUnitElement) -> JUnitElement? raise) -> JUnitDocument raisefn JUnitDocument::with_statistics(self : JUnitDocument, overwrite_time? : Bool) -> JUnitDocument raise InputErrorfn JUnitDocument::write_to(self : JUnitDocument, write : (String) -> Unit raise, max_units? : Int64) -> Unit raisepub struct JUnitElement {
name : String
attributes : ReadOnlyArray[(String, String)]
content : ReadOnlyArray[JUnitNode]
}fn JUnitElement::new(name : String, attributes? : Array[(String, String)], content? : Array[JUnitNode]) -> JUnitElementfn JUnitElement::result(kind : String, message? : String, type_? : String, body? : String) -> JUnitElement raise InputErrorfn JUnitElement::testcase(name : String, classname? : String?, time_us? : Int64?) -> JUnitElement raise InputErrorfn JUnitElement::with_output(self : JUnitElement, kind : String, text : String) -> JUnitElement raise InputErrorfn JUnitElement::with_results(self : JUnitElement, results : Array[JUnitElement]) -> JUnitElement raise InputErrorpub(all) enum JUnitNode {
Element(JUnitElement)
Text(String)
CData(String)
Comment(String)
Instruction(String, String)
}pub struct Report {
cases : ReadOnlyArray[TestCase]
diagnostics : ReadOnlyArray[Diagnostic]
// private fields
}fn compare(history : Array[Report], candidate : Report, config? : DiffConfig) -> DiffResult raise InputErrorfn diff_config(slowdown_pct? : Int, slowdown_floor_us? : Int64, fail_on? : Array[String]) -> DiffConfig raise InputErrorfn parse_report(text : String, source? : String, duplicates? : DuplicatePolicy) -> Report raise InputErrorInstall
Download zipJUnit XML creation, editing, merging and comparison in MoonBit