Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-53115

Failure to parse JUnit after upgrading from 1.104 to 2.2.3

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Not A Defect
    • Component/s: xunit-plugin
    • Labels:
      None
    • Environment:
      Jenkins 2.136
      Master node is on ArchLinux x64, installed from pacman repository
    • Similar Issues:

      Description

      Here is the exception I get:

      org.jenkinsci.plugins.xunit.service.TransformerException: The result file '/opt/fast/jenkins/jenkinsData/Executor3/build/ios-jenkins-Release/junit/CoreUtils.xml' for the metric 'JUnit' is not valid. The result file has been skipped.
          at org.jenkinsci.plugins.xunit.service.XUnitTransformerCallable.invoke(XUnitTransformerCallable.java:112)
          at org.jenkinsci.plugins.xunit.service.XUnitTransformerCallable.invoke(XUnitTransformerCallable.java:39)
          at hudson.FilePath.act(FilePath.java:1076)
          at hudson.FilePath.act(FilePath.java:1059)
          at org.jenkinsci.plugins.xunit.XUnitProcessor.processTestsReport(XUnitProcessor.java:180)
          at org.jenkinsci.plugins.xunit.XUnitProcessor.process(XUnitProcessor.java:150)
          at org.jenkinsci.plugins.xunit.XUnitBuilder.perform(XUnitBuilder.java:114)
          at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:80)
          at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:67)
          at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$1$1.call(SynchronousNonBlockingStepExecution.java:50)
          at hudson.security.ACL.impersonate(ACL.java:290)
          at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$1.run(SynchronousNonBlockingStepExecution.java:47)
          at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
          at java.util.concurrent.FutureTask.run(FutureTask.java:266)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
          at java.lang.Thread.run(Thread.java:748)

       

      Here is the input XML (generated by xcpretty 0.2.8 after running iOS tests):

      <?xml version='1.0' encoding='UTF-8'?>
      <testsuites name='CoreUtilsTest.xctest' tests='6' failures='0'>
        <testsuite name='CoreMathUtilsTest' tests='3' failures='0'>
          <testcase classname='CoreMathUtilsTest' name='lrArrayMultiplyTest_iOS_arm64' time='0.010'/>
          <testcase classname='CoreMathUtilsTest' name='dotProductTest_iOS_arm64' time='0.003'/>
          <testcase classname='CoreMathUtilsTest' name='euclidianDistanceTest_iOS_arm64' time='0.002'/>
        </testsuite>
        <testsuite name='DispatchTest' tests='1' failures='0'>
          <testcase classname='DispatchTest' name='prioritization_iOS_arm64' time='0.002'/>
        </testsuite>
        <testsuite name='RapidJsonTest' tests='1' failures='0'>
          <testcase classname='RapidJsonTest' name='TestLimitDoubleDigits_iOS_arm64' time='0.001'/>
        </testsuite>
        <testsuite name='ZipperTest' tests='1' failures='0'>
          <testcase classname='ZipperTest' name='DecodeAndDecompressBySquare_iOS_arm64' time='0.002'/>
        </testsuite>
      </testsuites>
      

      My current workaround is to downgrade XUnit plugin to 1.104, which parses this XML without troubles.

      For reference, the parsing is done with following pipeline command:

          step([$class: 'XUnitBuilder', testTimeMargin: '3000', thresholdMode: 1, thresholds: [[$class: 'FailedThreshold', failureNewThreshold: '', failureThreshold: '', unstableNewThreshold: '0', unstableThreshold: '0'], [$class: 'SkippedThreshold', failureNewThreshold: '', failureThreshold: '', unstableNewThreshold: '0', unstableThreshold: '0']], tools: [[$class: 'JUnitType', deleteOutputFiles: true, failIfNotNew: true, pattern: path, skipNoTestFiles: true, stopProcessingIfError: true]]])
      

      This step was generated by Jenkins pipeline step generator tool.

        Attachments

          Issue Links

            Activity

            Hide
            nfalco Nikolas Falco added a comment -

            Miss the required errors attribute on testsuite element.
            Refer to the wiki about changes in 2.x

            Show
            nfalco Nikolas Falco added a comment - Miss the required errors attribute on testsuite element. Refer to the wiki about changes in 2.x

              People

              Assignee:
              nfalco Nikolas Falco
              Reporter:
              dodoent Nenad Miksa
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: