simplification and elapsed time now available everywhere.

This commit is contained in:
Erik Brakkee 2024-11-22 22:42:02 +01:00
parent 7cf5827f22
commit fe733f96d6
2 changed files with 22 additions and 43 deletions

View File

@ -12,11 +12,11 @@ import (
)
func (t *Test) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
if len(t.Tests) == 0 {
if len(t.Tests) == 100000 {
start.Name = xml.Name{Local: "testcase"}
classname := ""
if t.Parent != nil {
classname = t.Parent.Name
if t.parent != nil {
classname = t.parent.Name
}
var skipped *Result
if t.Skipped > 0 {
@ -138,7 +138,7 @@ func main() {
pkg := prefix + item.Package
switch item.Action {
case "start":
testsuites.Suite(item.Time, pkg)
testsuites.Start(item.Time, pkg)
case "run":
fmt.Println()
testsuites.Test(item.Time, pkg, item.Test)
@ -150,11 +150,11 @@ func main() {
case "cont":
testsuites.Output(item.Time, pkg, item.Test, "CONTINUED")
case "pass":
testsuites.Pass(item.Time, pkg, item.Test, item.Elapsed)
testsuites.Pass(item.Time, pkg, item.Test)
case "bench":
testsuites.Bench(item.Time, pkg, item.Test, item.Output, item.Elapsed)
testsuites.Bench(item.Time, pkg, item.Test, item.Output)
case "fail":
testsuites.Fail(item.Time, pkg, item.Test, item.Elapsed)
testsuites.Fail(item.Time, pkg, item.Test)
case "skip":
testsuites.Skip(item.Time, pkg, item.Test)
}

View File

@ -39,7 +39,8 @@ type Test struct {
Tests []*Test `xml:"testsuite,omitempty"`
SystemOut string `xml:"system-out,omitempty"`
Parent *Test `xml:"-"`
parent *Test
t0 time.Time
}
type Result struct {
@ -74,6 +75,7 @@ func (testsuites *Testsuites) getRootSuite(t time.Time, pkg string, create bool)
Name: pkg,
Skipped: 0,
Timestamp: t,
t0: t,
}
testsuites.Suites = append(testsuites.Suites, &suite)
return &suite
@ -88,12 +90,16 @@ func (suite *Test) getSuite(t time.Time, name string) *Test {
s := Test{
Name: suite.Name + "/" + name,
Timestamp: t,
t0: t,
}
suite.Tests = append(suite.Tests, &s)
return &s
}
func (suite *Test) getTest(t time.Time, testname string) *Test {
if testname == "" {
return suite
}
suitename := suite.Name
path := strings.Split(testname, "/")
for i := 0; i < len(path); i++ {
@ -109,7 +115,7 @@ func (testsuites *Testsuites) getTest(t time.Time, pkg string, testname string)
return test
}
func (testsuites *Testsuites) Suite(t time.Time, pkg string) {
func (testsuites *Testsuites) Start(t time.Time, pkg string) {
testsuites.getRootSuite(t, pkg, true)
}
@ -119,56 +125,29 @@ func (testsuites *Testsuites) Test(t time.Time, pkg string, test string) {
}
func (testsuites *Testsuites) Output(t time.Time, pkg string, test string, output string) {
if test == "" {
ts := testsuites.getRootSuite(t, pkg, true)
ts.SystemOut = ts.SystemOut + output
return
}
ts := testsuites.getRootSuite(t, pkg+"/"+test, false)
if ts != nil {
ts.SystemOut = ts.SystemOut + output
return
}
tc := testsuites.getTest(t, pkg, test)
tc.SystemOut = tc.SystemOut + output
}
func (testsuites *Testsuites) Pass(t time.Time, pkg string, test string, elapsed float64) {
if test == "" {
return
}
if testsuites.getRootSuite(t, pkg+"/"+test, false) != nil {
return
}
func (testsuites *Testsuites) Pass(t time.Time, pkg string, test string) {
tc := testsuites.getTest(t, pkg, test)
tc.Time = elapsed
tc.Time = float64(t.Sub(tc.t0).Nanoseconds()) / 1000_000_000.0
}
func (testsuites *Testsuites) Bench(t time.Time, pkg string, test string, output string, elapsed float64) {
func (testsuites *Testsuites) Bench(t time.Time, pkg string, test string, output string) {
tc := testsuites.getTest(t, pkg, test)
tc.SystemOut = tc.SystemOut + output + "\n"
}
func (testsuites *Testsuites) Fail(t time.Time, pkg string, test string, elapsed float64) {
if test == "" {
return
}
if testsuites.getRootSuite(t, pkg+"/"+test, false) != nil {
return
}
func (testsuites *Testsuites) Fail(t time.Time, pkg string, test string) {
tc := testsuites.getTest(t, pkg, test)
tc.Time = elapsed
tc.Time = float64(t.Sub(tc.t0).Nanoseconds()) / 1000_000_000.0
tc.Failures = 1
}
func (testsuites *Testsuites) Skip(t time.Time, pkg string, test string) {
if test == "" {
return
}
if testsuites.getRootSuite(t, pkg+"/"+test, false) != nil {
return
}
tc := testsuites.getTest(t, pkg, test)
tc.Time = float64(t.Sub(tc.t0).Nanoseconds()) / 1000_000_000.0
tc.Skipped = 1
}
@ -190,7 +169,7 @@ func (suite *Test) Complete() {
suite.Errors += ts.Errors
suite.Disabled += ts.Disabled
suite.Skipped += ts.Skipped
ts.Parent = suite
ts.parent = suite
}
}