From 410a6dbad0da088f489816f20b57a84c0f420751 Mon Sep 17 00:00:00 2001 From: Alberto Fanjul Date: Thu, 3 Oct 2024 16:10:02 +0200 Subject: [PATCH] [QE] Change junit xml format to fill test reports on failure --- images/build-e2e/Containerfile | 1 + images/build-e2e/common/filter.xsl | 19 +++++++++++++++++++ images/build-e2e/lib/darwin/run.sh | 4 ++-- images/build-e2e/lib/linux/run.sh | 4 ++-- images/build-e2e/lib/windows/run.ps1 | 16 ++++++++++++---- images/build-integration/Containerfile | 1 + images/build-integration/common/filter.xsl | 19 +++++++++++++++++++ images/build-integration/lib/darwin/run.sh | 2 +- images/build-integration/lib/linux/run.sh | 2 +- images/build-integration/lib/windows/run.ps1 | 17 +++++++++++++---- 10 files changed, 71 insertions(+), 14 deletions(-) create mode 100644 images/build-e2e/common/filter.xsl create mode 100644 images/build-integration/common/filter.xsl diff --git a/images/build-e2e/Containerfile b/images/build-e2e/Containerfile index 12ca3cdc49..68be8a812b 100644 --- a/images/build-e2e/Containerfile +++ b/images/build-e2e/Containerfile @@ -24,5 +24,6 @@ COPY --from=builder /workspace/out/${OS}-${ARCH} ${ASSETS_FOLDER}/bin COPY --from=builder /workspace/test/e2e/features ${ASSETS_FOLDER}/bin/features COPY --from=builder /workspace/test/testdata ${ASSETS_FOLDER}/testdata +COPY images/build-e2e/common/* ${ASSETS_FOLDER}/ COPY images/build-e2e/lib/${OS}/* ${ASSETS_FOLDER}/ diff --git a/images/build-e2e/common/filter.xsl b/images/build-e2e/common/filter.xsl new file mode 100644 index 0000000000..ee12b88b40 --- /dev/null +++ b/images/build-e2e/common/filter.xsl @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + diff --git a/images/build-e2e/lib/darwin/run.sh b/images/build-e2e/lib/darwin/run.sh index 0b417f56bc..854e534790 100755 --- a/images/build-e2e/lib/darwin/run.sh +++ b/images/build-e2e/lib/darwin/run.sh @@ -55,6 +55,6 @@ cd $targetFolder/bin # Transform results to junit cd .. init_line=$(grep -n '' results/e2e.results | awk '{split($0,n,":"); print n[1]}') -tail -n +$init_line results/e2e.results > results/$junitFilename +tail -n +$init_line results/e2e.results | xsltproc filter.xsl - > results/$junitFilename # Copy logs and diagnose -cp -r bin/out/test-results/* results \ No newline at end of file +cp -r bin/out/test-results/* results diff --git a/images/build-e2e/lib/linux/run.sh b/images/build-e2e/lib/linux/run.sh index 94fe5737da..8c2aa79f68 100755 --- a/images/build-e2e/lib/linux/run.sh +++ b/images/build-e2e/lib/linux/run.sh @@ -55,6 +55,6 @@ cd $targetFolder/bin # Transform results to junit cd .. init_line=$(grep -n '' results/e2e.results | awk '{split($0,n,":"); print n[1]}') -tail -n +$init_line results/e2e.results > results/$junitFilename +tail -n +$init_line results/e2e.results | xsltproc filter.xsl - > results/$junitFilename # Copy logs and diagnose -cp -r bin/out/test-results/* results \ No newline at end of file +cp -r bin/out/test-results/* results diff --git a/images/build-e2e/lib/windows/run.ps1 b/images/build-e2e/lib/windows/run.ps1 index 9fd2488538..622bddc01e 100755 --- a/images/build-e2e/lib/windows/run.ps1 +++ b/images/build-e2e/lib/windows/run.ps1 @@ -17,19 +17,27 @@ mv $targetFolder/bin/e2e.test $targetFolder/bin/e2e.test.exe # Run e2e $env:PATH="$env:PATH;$env:HOME\$targetFolder\bin;" $env:SHELL="powershell" -New-Item -ItemType directory -Path "$env:HOME\$targetFolder\results" -Force +$targetFolderDir = "$env:HOME\$targetFolder" +$resultsDir = "$targetFolderDir\results" +New-Item -ItemType directory -Path "$resultsDir" -Force # Run tests $tags="windows" if ($e2eTagExpression) { $tags="$tags && $e2eTagExpression" } +$dir = "$PWD" cd $targetFolder\bin -e2e.test.exe --bundle-location=$bundleLocation --pull-secret-file=$env:HOME\$targetFolder\pull-secret --crc-memory=$crcMemory --cleanup-home=false --godog.tags="$tags" --godog.format=junit > $env:HOME\$targetFolder\results\e2e.results +e2e.test.exe --bundle-location=$bundleLocation --pull-secret-file=$targetFolderdir\pull-secret --crc-memory=$crcMemory --cleanup-home=false --godog.tags="$tags" --godog.format=junit > $resultsDir\e2e.results # Transform results to junit cd .. $r = Select-String -Pattern '' -Path results\e2e.results -list -SimpleMatch | select-object -First 1 -Get-Content results\e2e.results | Select -skip ($r.LineNumber -1) > results\$junitFilename +$prejunit = "$resultsDir\$junitFilename.pre" +Get-Content "$resultsDir\e2e.results" | Select -skip ($r.LineNumber -1) > "$prejunit" +$xslt = New-Object System.Xml.Xsl.XslCompiledTransform; +$xslt.load("$targetFolderDir\filter.xsl") +$xslt.transform( "$prejunit", "$resultsDir\$junitFilename" ) +rm "$prejunit" # Copy logs and diagnose -cp -r bin\out\test-results\* results \ No newline at end of file +cp -r bin\out\test-results\* results diff --git a/images/build-integration/Containerfile b/images/build-integration/Containerfile index b8f1e8282c..56870327c5 100644 --- a/images/build-integration/Containerfile +++ b/images/build-integration/Containerfile @@ -21,5 +21,6 @@ ENV ASSETS_FOLDER=/opt/crc \ ARCH=${ARCH} COPY --from=builder /workspace/out/${OS}-${ARCH} ${ASSETS_FOLDER}/bin +COPY images/build-integration/common/* ${ASSETS_FOLDER}/ COPY images/build-integration/lib/${OS}/* ${ASSETS_FOLDER}/ diff --git a/images/build-integration/common/filter.xsl b/images/build-integration/common/filter.xsl new file mode 100644 index 0000000000..ee12b88b40 --- /dev/null +++ b/images/build-integration/common/filter.xsl @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + diff --git a/images/build-integration/lib/darwin/run.sh b/images/build-integration/lib/darwin/run.sh index bbd9bd7f8f..c254c3edb2 100755 --- a/images/build-integration/lib/darwin/run.sh +++ b/images/build-integration/lib/darwin/run.sh @@ -56,4 +56,4 @@ fi # Copy results cd .. cp bin/integration.results results/integration.results -cp bin/out/integration.xml results/$junitFilename +cat bin/out/integration.xml | xsltproc filter.xsl - > results/$junitFilename diff --git a/images/build-integration/lib/linux/run.sh b/images/build-integration/lib/linux/run.sh index 456cd6dbd8..1162a1e923 100755 --- a/images/build-integration/lib/linux/run.sh +++ b/images/build-integration/lib/linux/run.sh @@ -57,4 +57,4 @@ fi # Copy results cd .. cp bin/integration.results results/integration.results -cp bin/out/integration.xml results/$junitFilename +cat bin/out/integration.xml | xsltproc filter.xsl - > results/$junitFilename diff --git a/images/build-integration/lib/windows/run.ps1 b/images/build-integration/lib/windows/run.ps1 index 4ee75c1453..cb1c8ca23f 100755 --- a/images/build-integration/lib/windows/run.ps1 +++ b/images/build-integration/lib/windows/run.ps1 @@ -17,19 +17,28 @@ mv $targetFolder/bin/integration.test $targetFolder/bin/integration.test.exe # Run e2e $env:PATH="$env:PATH;$env:HOME\$targetFolder\bin;" $env:SHELL="powershell" -New-Item -ItemType directory -Path "$env:HOME\$targetFolder\results" -Force +$targetFolderDir = "$env:HOME\$targetFolder" +$resultsDir = "$targetFolderDir\results" + +New-Item -ItemType directory -Path "$resultsDir" -Force # Run tests cd $targetFolder\bin if ($labelFilter) { - integration.test.exe --pull-secret-path="$env:HOME\$targetFolder\pull-secret" --bundle-path=$bundleLocation --ginkgo.timeout $suiteTimeout --ginkgo.label-filter "$labelFilter" > integration.results + integration.test.exe --pull-secret-path="$targetFolderDir\pull-secret" --bundle-path=$bundleLocation --ginkgo.timeout $suiteTimeout --ginkgo.label-filter "$labelFilter" > integration.results } else { - integration.test.exe --pull-secret-path="$env:HOME\$targetFolder\pull-secret" --bundle-path=$bundleLocation --ginkgo.timeout $suiteTimeout > integration.results + integration.test.exe --pull-secret-path="$targetFolderDir\pull-secret" --bundle-path=$bundleLocation --ginkgo.timeout $suiteTimeout > integration.results } # Copy results cd .. cp bin\integration.results results\integration.results -cp bin\out\integration.xml results\$junitFilename +$prejunit = "$resultsDir\$junitFilename.pre" +cp bin\out\integration.xml $prejunit + +$xslt = New-Object System.Xml.Xsl.XslCompiledTransform; +$xslt.load("$targetFolderDir\filter.xsl") +$xslt.transform( "$prejunit", "$resultsDir\$junitFilename" ) +rm "$prejunit"