mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-07 11:13:48 +00:00
prune-junit-xml: smarter concatenation when pruning tests
Repeating the same "Failed" message text doesn't add any information. Separating with a blank line is more readable. Before: <failure message="Failed; Failed; Failed" type=""> ... --- FAIL: TestFrontProxyConfig/WithoutUID (64.89s) ; === RUN TestFrontProxyConfig/WithUID After: <failure message="Failed" type=""> ... --- FAIL: TestFrontProxyConfig/WithoutUID (64.89s) === RUN TestFrontProxyConfig/WithUID
This commit is contained in:
parent
95d71c464a
commit
e0e4af8a58
@ -153,8 +153,15 @@ func pruneTESTS(suites *junitxml.JUnitTestSuites) {
|
|||||||
suites.Suites = updatedTestsuites
|
suites.Suites = updatedTestsuites
|
||||||
}
|
}
|
||||||
|
|
||||||
// joinTexts returns "<a>; <b>" if both are non-empty,
|
// joinTexts returns "<a><empty line><b>" if both are non-empty,
|
||||||
// otherwise just the non-empty string, if there is one.
|
// otherwise just the non-empty string, if there is one.
|
||||||
|
//
|
||||||
|
// If <b> is contained completely in <a>, <a> gets returned because repeating
|
||||||
|
// exactly the same string again doesn't add any information. Typically
|
||||||
|
// this occurs when joining the failure message because that is the fixed
|
||||||
|
// string "Failed" for all tests, regardless of what the test logged.
|
||||||
|
// The test log output is typically different because it cointains "=== RUN
|
||||||
|
// <test name>" and thus doesn't get dropped.
|
||||||
func joinTexts(a, b string) string {
|
func joinTexts(a, b string) string {
|
||||||
if a == "" {
|
if a == "" {
|
||||||
return b
|
return b
|
||||||
@ -162,7 +169,14 @@ func joinTexts(a, b string) string {
|
|||||||
if b == "" {
|
if b == "" {
|
||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
return a + "; " + b
|
if strings.Contains(a, b) {
|
||||||
|
return a
|
||||||
|
}
|
||||||
|
sep := "\n"
|
||||||
|
if !strings.HasSuffix(a, "\n") {
|
||||||
|
sep = "\n\n"
|
||||||
|
}
|
||||||
|
return a + sep + b
|
||||||
}
|
}
|
||||||
|
|
||||||
func fetchXML(xmlReader io.Reader) (*junitxml.JUnitTestSuites, error) {
|
func fetchXML(xmlReader io.Reader) (*junitxml.JUnitTestSuites, error) {
|
||||||
|
@ -108,6 +108,20 @@ func TestPruneTESTS(t *testing.T) {
|
|||||||
<failure message="FailedB" type="">FailureContentB</failure>
|
<failure message="FailedB" type="">FailureContentB</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
|
<testsuite tests="3" failures="3" time="40.050000" name="k8s.io/kubernetes/test/integration/apimachinery3" timestamp="">
|
||||||
|
<properties>
|
||||||
|
<property name="go.version" value="go1.18 linux/amd64"></property>
|
||||||
|
</properties>
|
||||||
|
<testcase classname="k8s.io/kubernetes/test/integration/apimachinery3" name="TestWatchRestartsIfTimeoutNotReached/group/InformerWatcher_survives_closed_watches" time="40.050000">
|
||||||
|
<failure message="Failed" type="">RUNNING TestWatchRestartsIfTimeoutNotReached/group/InformerWatcher_survives_closed_watchesA
expected foo, got bar</failure>
|
||||||
|
</testcase>
|
||||||
|
<testcase classname="k8s.io/kubernetes/test/integration/apimachinery3" name="TestWatchRestartsIfTimeoutNotReached/group" time="40.050000">
|
||||||
|
<failure message="Failed" type="">sub-test failed</failure>
|
||||||
|
</testcase>
|
||||||
|
<testcase classname="k8s.io/kubernetes/test/integration/apimachinery3" name="TestWatchRestartsIfTimeoutNotReached" time="40.050000">
|
||||||
|
<failure message="Failed" type="">sub-test failed</failure>
|
||||||
|
</testcase>
|
||||||
|
</testsuite>
|
||||||
</testsuites>`
|
</testsuites>`
|
||||||
|
|
||||||
outputXML := `<?xml version="1.0" encoding="UTF-8"?>
|
outputXML := `<?xml version="1.0" encoding="UTF-8"?>
|
||||||
@ -131,7 +145,15 @@ func TestPruneTESTS(t *testing.T) {
|
|||||||
<property name="go.version" value="go1.18 linux/amd64"></property>
|
<property name="go.version" value="go1.18 linux/amd64"></property>
|
||||||
</properties>
|
</properties>
|
||||||
<testcase classname="k8s.io/kubernetes/test/integration" name="apimachinery2" time="30.050000">
|
<testcase classname="k8s.io/kubernetes/test/integration" name="apimachinery2" time="30.050000">
|
||||||
<failure message="FailedA; FailedB" type="">FailureContentA; FailureContentB</failure>
|
<failure message="FailedA

FailedB" type="">FailureContentA

FailureContentB</failure>
|
||||||
|
</testcase>
|
||||||
|
</testsuite>
|
||||||
|
<testsuite tests="3" failures="3" time="40.050000" name="k8s.io/kubernetes/test/integration/apimachinery3" timestamp="">
|
||||||
|
<properties>
|
||||||
|
<property name="go.version" value="go1.18 linux/amd64"></property>
|
||||||
|
</properties>
|
||||||
|
<testcase classname="k8s.io/kubernetes/test/integration" name="apimachinery3" time="40.050000">
|
||||||
|
<failure message="Failed" type="">RUNNING TestWatchRestartsIfTimeoutNotReached/group/InformerWatcher_survives_closed_watchesA
expected foo, got bar

sub-test failed</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
</testsuites>`
|
</testsuites>`
|
||||||
|
Loading…
Reference in New Issue
Block a user