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

Jacoco: spaces don't work when listing multiple class/source folders

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Critical Critical
    • jacoco-plugin
    • None

      When configuring a comma-separated list of class/source directories, they do not get picked up if there's a space after the comma.

      This is counterintuitive and the example shown right above the field also has a space – so one would expect it to work.

      This issue was noted/confirmed by others as well:

      https://groups.google.com/forum/#!searchin/jenkins-jacoco-plugin-mailing-list/space/jenkins-jacoco-plugin-mailing-list/J1fhtFeUxpY/1Bv-Wi3TMFoJ

          [JENKINS-22776] Jacoco: spaces don't work when listing multiple class/source folders

          Adam Cath added a comment -

          Not only does it not work, but you can end up with an RTE because no files are found:

          [JaCoCo plugin] Collecting JaCoCo coverage data...
          [JaCoCo plugin] project1/build/jacoco/**.exec, project2/build/jacoco/**.exec;project1/build/classes, project2/build/classes;project1/src, project2/src; locations are configured
          [JaCoCo plugin] Number of found exec files: 1
          [JaCoCo plugin] Saving matched execfiles:  /build/jenkins/workspace/acath-test-job/project2/build/jacoco/test.exec
          [JaCoCo plugin] Saving matched class directories: 
          [JaCoCo plugin] Saving matched source directories: 
          [JaCoCo plugin] Loading inclusions files..
          [JaCoCo plugin] inclusions: []
          [JaCoCo plugin] exclusions: []
          ERROR: Publisher hudson.plugins.jacoco.JacocoPublisher aborted due to exception
          java.lang.IllegalStateException: basedir /var/lib/jenkins/jobs/acath-test-job/builds/2014-06-05_10-58-35/jacoco/classes does not exist
          	at org.codehaus.plexus.util.DirectoryScanner.scan(DirectoryScanner.java:550)
          	at org.codehaus.plexus.util.FileUtils.getFileAndDirectoryNames(FileUtils.java:1717)
          	at org.codehaus.plexus.util.FileUtils.getFileNames(FileUtils.java:1645)
          	at org.codehaus.plexus.util.FileUtils.getFileNames(FileUtils.java:1627)
          	at org.codehaus.plexus.util.FileUtils.getFiles(FileUtils.java:1601)
          	at org.codehaus.plexus.util.FileUtils.getFiles(FileUtils.java:1584)
          	at hudson.plugins.jacoco.ExecutionFileLoader.analyzeStructure(ExecutionFileLoader.java:129)
          	at hudson.plugins.jacoco.ExecutionFileLoader.loadBundleCoverage(ExecutionFileLoader.java:138)
          	at hudson.plugins.jacoco.JacocoReportDir.parse(JacocoReportDir.java:102)
          	at hudson.plugins.jacoco.JacocoBuildAction.loadRatios(JacocoBuildAction.java:278)
          	at hudson.plugins.jacoco.JacocoBuildAction.load(JacocoBuildAction.java:260)
          	at hudson.plugins.jacoco.JacocoPublisher.perform(JacocoPublisher.java:380)
          	at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
          	at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
          	at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:714)
          	at hudson.model.Build$BuildExecution.post2(Build.java:182)
          	at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:663)
          	at hudson.model.Run.execute(Run.java:1714)
          	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
          	at hudson.model.ResourceController.execute(ResourceController.java:88)
          	at hudson.model.Executor.run(Executor.java:231)
          Finished: FAILURE
          

          Adam Cath added a comment - Not only does it not work, but you can end up with an RTE because no files are found: [JaCoCo plugin] Collecting JaCoCo coverage data... [JaCoCo plugin] project1/build/jacoco/**.exec, project2/build/jacoco/**.exec;project1/build/classes, project2/build/classes;project1/src, project2/src; locations are configured [JaCoCo plugin] Number of found exec files: 1 [JaCoCo plugin] Saving matched execfiles: /build/jenkins/workspace/acath-test-job/project2/build/jacoco/test.exec [JaCoCo plugin] Saving matched class directories: [JaCoCo plugin] Saving matched source directories: [JaCoCo plugin] Loading inclusions files.. [JaCoCo plugin] inclusions: [] [JaCoCo plugin] exclusions: [] ERROR: Publisher hudson.plugins.jacoco.JacocoPublisher aborted due to exception java.lang.IllegalStateException: basedir / var /lib/jenkins/jobs/acath-test-job/builds/2014-06-05_10-58-35/jacoco/classes does not exist at org.codehaus.plexus.util.DirectoryScanner.scan(DirectoryScanner.java:550) at org.codehaus.plexus.util.FileUtils.getFileAndDirectoryNames(FileUtils.java:1717) at org.codehaus.plexus.util.FileUtils.getFileNames(FileUtils.java:1645) at org.codehaus.plexus.util.FileUtils.getFileNames(FileUtils.java:1627) at org.codehaus.plexus.util.FileUtils.getFiles(FileUtils.java:1601) at org.codehaus.plexus.util.FileUtils.getFiles(FileUtils.java:1584) at hudson.plugins.jacoco.ExecutionFileLoader.analyzeStructure(ExecutionFileLoader.java:129) at hudson.plugins.jacoco.ExecutionFileLoader.loadBundleCoverage(ExecutionFileLoader.java:138) at hudson.plugins.jacoco.JacocoReportDir.parse(JacocoReportDir.java:102) at hudson.plugins.jacoco.JacocoBuildAction.loadRatios(JacocoBuildAction.java:278) at hudson.plugins.jacoco.JacocoBuildAction.load(JacocoBuildAction.java:260) at hudson.plugins.jacoco.JacocoPublisher.perform(JacocoPublisher.java:380) at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744) at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:714) at hudson.model.Build$BuildExecution.post2(Build.java:182) at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:663) at hudson.model.Run.execute(Run.java:1714) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:231) Finished: FAILURE

          Adam Cath added a comment - - edited

          Detailed repro steps in JENKINS-23337, which is a dupe of this.

          Adam Cath added a comment - - edited Detailed repro steps in JENKINS-23337 , which is a dupe of this.

          Adam Cath added a comment -

          I'm pretty sure the root cause is jacoco-plugin-jacoco.git/JacocoPublisher#resolveDirPaths:

          String[] includes = input.split(","); // this will leaving leading spaces in the paths, which DirectoryScanner apparently can't handle!
          DirectoryScanner ds = new DirectoryScanner();
          ...
          ds.scan();
          

          Adam Cath added a comment - I'm pretty sure the root cause is jacoco-plugin-jacoco.git/JacocoPublisher#resolveDirPaths: String [] includes = input.split( "," ); // this will leaving leading spaces in the paths, which DirectoryScanner apparently can't handle! DirectoryScanner ds = new DirectoryScanner(); ... ds.scan();

          Ori Danus added a comment -

          I'm getting this error with configuration of only one "Path to class directory" and one "Path to source", but 6 exec files, configured like this - results/jacoco_worker*.output

          is this related?

          Ori Danus added a comment - I'm getting this error with configuration of only one "Path to class directory" and one "Path to source", but 6 exec files, configured like this - results/jacoco_worker*.output is this related?

            ognjenb Ognjen Bubalo
            phraktle Viktor Szathmary
            Votes:
            3 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated: