mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-10-31 10:18:13 +00:00 
			
		
		
		
	prune-junit-xml: preserve system out + err text during test pruning
When stripping out log messages from the failure text, the original text gets stored as <system-out>. That part then got lost when reducing tests. Instead of dropping it, it needs to be joined from all failed tests. Same for <system-err>, although that isn't used yet.
This commit is contained in:
		| @@ -135,6 +135,8 @@ func pruneTESTS(suites *junitxml.JUnitTestSuites) { | |||||||
| 		updatedTestcase.Classname = match[1] | 		updatedTestcase.Classname = match[1] | ||||||
| 		updatedTestcase.Name = match[2] | 		updatedTestcase.Name = match[2] | ||||||
| 		updatedTestcase.Time = suite.Time | 		updatedTestcase.Time = suite.Time | ||||||
|  | 		updatedSystemOut := "" | ||||||
|  | 		updatedSystemErr := "" | ||||||
| 		for _, testcase := range suite.TestCases { | 		for _, testcase := range suite.TestCases { | ||||||
| 			// The top level testcase element in a JUnit xml file does not have the / character. | 			// The top level testcase element in a JUnit xml file does not have the / character. | ||||||
| 			if testcase.Failure != nil { | 			if testcase.Failure != nil { | ||||||
| @@ -142,10 +144,14 @@ func pruneTESTS(suites *junitxml.JUnitTestSuites) { | |||||||
| 				updatedTestcaseFailure.Message = joinTexts(updatedTestcaseFailure.Message, testcase.Failure.Message) | 				updatedTestcaseFailure.Message = joinTexts(updatedTestcaseFailure.Message, testcase.Failure.Message) | ||||||
| 				updatedTestcaseFailure.Contents = joinTexts(updatedTestcaseFailure.Contents, testcase.Failure.Contents) | 				updatedTestcaseFailure.Contents = joinTexts(updatedTestcaseFailure.Contents, testcase.Failure.Contents) | ||||||
| 				updatedTestcaseFailure.Type = joinTexts(updatedTestcaseFailure.Type, testcase.Failure.Type) | 				updatedTestcaseFailure.Type = joinTexts(updatedTestcaseFailure.Type, testcase.Failure.Type) | ||||||
|  | 				updatedSystemOut = joinTexts(updatedSystemOut, testcase.SystemOut) | ||||||
|  | 				updatedSystemErr = joinTexts(updatedSystemErr, testcase.SystemErr) | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		if failflag { | 		if failflag { | ||||||
| 			updatedTestcase.Failure = &updatedTestcaseFailure | 			updatedTestcase.Failure = &updatedTestcaseFailure | ||||||
|  | 			updatedTestcase.SystemOut = updatedSystemOut | ||||||
|  | 			updatedTestcase.SystemErr = updatedSystemErr | ||||||
| 		} | 		} | ||||||
| 		suite.TestCases = append(updatedTestcases, updatedTestcase) | 		suite.TestCases = append(updatedTestcases, updatedTestcase) | ||||||
| 		updatedTestsuites = append(updatedTestsuites, suite) | 		updatedTestsuites = append(updatedTestsuites, suite) | ||||||
|   | |||||||
| @@ -100,7 +100,10 @@ func TestPruneTESTS(t *testing.T) { | |||||||
| 		<properties> | 		<properties> | ||||||
| 			<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/apimachinery2" name="TestWatchRestartsIfTimeoutNotReached/group/InformerWatcher_survives_closed_watches" time="30.050000"></testcase> | 		<testcase classname="k8s.io/kubernetes/test/integration/apimachinery2" name="TestWatchRestartsIfTimeoutNotReached/group/InformerWatcher_survives_closed_watches" time="30.050000"> | ||||||
|  | 			<system-out>out A</system-out> | ||||||
|  | 			<system-err>err B</system-err> | ||||||
|  |                 </testcase> | ||||||
| 		<testcase classname="k8s.io/kubernetes/test/integration/apimachinery2" name="TestSchedulerInformers" time="-0.000000"> | 		<testcase classname="k8s.io/kubernetes/test/integration/apimachinery2" name="TestSchedulerInformers" time="-0.000000"> | ||||||
| 			<failure message="FailedA" type="">FailureContentA</failure> | 			<failure message="FailedA" type="">FailureContentA</failure> | ||||||
| 		</testcase> | 		</testcase> | ||||||
| @@ -114,9 +117,13 @@ func TestPruneTESTS(t *testing.T) { | |||||||
| 		</properties> | 		</properties> | ||||||
| 		<testcase classname="k8s.io/kubernetes/test/integration/apimachinery3" name="TestWatchRestartsIfTimeoutNotReached/group/InformerWatcher_survives_closed_watches" time="40.050000"> | 		<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> | 			<failure message="Failed" type="">RUNNING TestWatchRestartsIfTimeoutNotReached/group/InformerWatcher_survives_closed_watchesA
expected foo, got bar</failure> | ||||||
|  | 			<system-out>out A</system-out> | ||||||
|  | 			<system-err>err A</system-err> | ||||||
|                 </testcase> |                 </testcase> | ||||||
| 		<testcase classname="k8s.io/kubernetes/test/integration/apimachinery3" name="TestWatchRestartsIfTimeoutNotReached/group" time="40.050000"> | 		<testcase classname="k8s.io/kubernetes/test/integration/apimachinery3" name="TestWatchRestartsIfTimeoutNotReached/group" time="40.050000"> | ||||||
| 			<failure message="Failed" type="">sub-test failed</failure> | 			<failure message="Failed" type="">sub-test failed</failure> | ||||||
|  | 			<system-out>out B</system-out> | ||||||
|  | 			<system-err>err B</system-err> | ||||||
| 		</testcase> | 		</testcase> | ||||||
| 		<testcase classname="k8s.io/kubernetes/test/integration/apimachinery3" name="TestWatchRestartsIfTimeoutNotReached" time="40.050000"> | 		<testcase classname="k8s.io/kubernetes/test/integration/apimachinery3" name="TestWatchRestartsIfTimeoutNotReached" time="40.050000"> | ||||||
| 			<failure message="Failed" type="">sub-test failed</failure> | 			<failure message="Failed" type="">sub-test failed</failure> | ||||||
| @@ -154,6 +161,8 @@ func TestPruneTESTS(t *testing.T) { | |||||||
| 		</properties> | 		</properties> | ||||||
| 		<testcase classname="k8s.io/kubernetes/test/integration" name="apimachinery3" time="40.050000"> | 		<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> | 			<failure message="Failed" type="">RUNNING TestWatchRestartsIfTimeoutNotReached/group/InformerWatcher_survives_closed_watchesA
expected foo, got bar

sub-test failed</failure> | ||||||
|  | 			<system-out>out A

out B</system-out> | ||||||
|  | 			<system-err>err A

err B</system-err> | ||||||
| 		</testcase> | 		</testcase> | ||||||
| 	</testsuite> | 	</testsuite> | ||||||
| </testsuites>` | </testsuites>` | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Patrick Ohly
					Patrick Ohly