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

Cannot release plugin due to injected tests failure

    • Icon: Bug Bug
    • Resolution: Not A Defect
    • Icon: Blocker Blocker
    • core
    • Apache Maven 3.3.9
      Java versions: 1.7.0_79 or 1.8.0_73 (tested with both)
      Jenkins: 1.609.1
      OS El Capitan: 10.11.2

      We cannot perform a plugin release, because two injected tests fail in the Jenkins job[0].
      The code can be found on github here[1].

      Steps to reproduce:
      You can reproduce the problem, by cloning the repository and after running mvn clean install.

      For the first test ( org.jvnet.hudson.test.junit.FailedTest.org.jvnet.hudson.test.JellyTestSuiteBuilder$JellyTestSuite):
      We understand that there is a problem with Guava, but we have no idea how to fix it. Our plugin is indirectly dependent on it.

      For the second test (org.jvnet.hudson.test.PluginAutomaticTestBuilder$CliSanityTest.testCliSanity):
      We understand that there was a compatibility problem with Java 7 vs. 8. and it was resolved (see [2]), but even though we are using Jenkins 1.609.1, we are still seeing the problem, both locally with Java 7 and 8 and on the oficial Jenkins job.

      Can we get some guidance for these problems?

      Thank you,
      Andrei Tuicu

      [0] https://jenkins.ci.cloudbees.com/job/plugins/job/JiraTestResultReporter-plugin/
      [1] https://github.com/jenkinsci/JiraTestResultReporter-plugin
      [2] https://issues.jenkins-ci.org/browse/JENKINS-23239

      Full stack trace:
      Running InjectedTest
      Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 5.139 sec <<< FAILURE! - in InjectedTest
      org.jvnet.hudson.test.JellyTestSuiteBuilder$JellyTestSuite(org.jvnet.hudson.test.junit.FailedTest) Time elapsed: 0.007 sec <<< ERROR!
      java.lang.NoSuchMethodError: com.google.common.cache.CacheBuilder.build()Lcom/google/common/cache/Cache;
      at hudson.model.Queue.<init>(Queue.java:216)
      at jenkins.model.Jenkins.<init>(Jenkins.java:772)
      at hudson.model.Hudson.<init>(Hudson.java:83)
      at org.jvnet.hudson.test.HudsonTestCase.newHudson(HudsonTestCase.java:500)
      at org.jvnet.hudson.test.HudsonTestCase.setUp(HudsonTestCase.java:330)
      at org.jvnet.hudson.test.JellyTestSuiteBuilder$JellyTestSuite.setUp(JellyTestSuiteBuilder.java:133)
      at org.jvnet.hudson.test.junit.GroupedTest.run(GroupedTest.java:49)
      at junit.framework.TestSuite.runTest(TestSuite.java:255)
      at junit.framework.TestSuite.run(TestSuite.java:250)
      at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:84)
      at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
      at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
      at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
      at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
      at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
      at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)

      testCliSanity(org.jvnet.hudson.test.PluginAutomaticTestBuilder$CliSanityTest) Time elapsed: 0.238 sec <<< ERROR!
      java.lang.IllegalStateException: second instance
      at jenkins.model.Jenkins.<init>(Jenkins.java:760)
      at hudson.model.Hudson.<init>(Hudson.java:83)
      at org.jvnet.hudson.test.HudsonTestCase.newHudson(HudsonTestCase.java:500)
      at org.jvnet.hudson.test.HudsonTestCase.setUp(HudsonTestCase.java:330)
      at junit.framework.TestCase.runBare(TestCase.java:139)
      at org.jvnet.hudson.test.HudsonTestCase.runBare(HudsonTestCase.java:296)
      at junit.framework.TestResult$1.protect(TestResult.java:122)
      at junit.framework.TestResult.runProtected(TestResult.java:142)
      at junit.framework.TestResult.run(TestResult.java:125)
      at junit.framework.TestCase.run(TestCase.java:129)
      at junit.framework.TestSuite.runTest(TestSuite.java:255)
      at junit.framework.TestSuite.run(TestSuite.java:250)
      at junit.framework.TestSuite.runTest(TestSuite.java:255)
      at junit.framework.TestSuite.run(TestSuite.java:250)
      at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:84)
      at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
      at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
      at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
      at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
      at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
      at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)

          [JENKINS-34129] Cannot release plugin due to injected tests failure

          Andrei Tuicu created issue -
          Andrei Tuicu made changes -
          Priority Original: Critical [ 2 ] New: Blocker [ 1 ]
          Catalin Luta made changes -
          Labels Original: release-plugin New: plugins
          Catalin Luta made changes -
          Labels Original: plugins New: core guava plugins
          Catalin Luta made changes -
          Component/s New: core [ 15593 ]
          Component/s Original: plugin-compat-tester [ 15841 ]
          Catalin Luta made changes -
          Labels Original: core guava plugins New: build core guava jdk maven plugins
          Catalin Luta made changes -
          Assignee Original: Frédéric Camblor [ fcamblor ]

          Oleg Nenashev added a comment -

          Did you consider upgrading to the new plugin parent POM? It should align the library versions and test suites

          Oleg Nenashev added a comment - Did you consider upgrading to the new plugin parent POM? It should align the library versions and test suites

          Andrei Tuicu added a comment -

          Hello, oleg_nenashev,

          I did upgrade to the new plugin POM, but that wasn't enough. I did manage to find a workaround, by excluding Guava as a indirect dependency and by adding some other dependencies manually.

          The resulting POM can be found here: https://github.com/jenkinsci/JiraTestResultReporter-plugin/blob/master/pom.xml

          Thank you,
          Andrei

          Andrei Tuicu added a comment - Hello, oleg_nenashev , I did upgrade to the new plugin POM, but that wasn't enough. I did manage to find a workaround, by excluding Guava as a indirect dependency and by adding some other dependencies manually. The resulting POM can be found here: https://github.com/jenkinsci/JiraTestResultReporter-plugin/blob/master/pom.xml Thank you, Andrei

          Jesse Glick added a comment -

          Maven’s dependency resolution algorithm gives preference to the “closest” version of a dependency, which is not always the newest, so you have to override with an <exclude>.

          Jesse Glick added a comment - Maven’s dependency resolution algorithm gives preference to the “closest” version of a dependency, which is not always the newest, so you have to override with an <exclude> .
          Jesse Glick made changes -
          Resolution New: Not A Defect [ 7 ]
          Status Original: Open [ 1 ] New: Resolved [ 5 ]

            Unassigned Unassigned
            andreituicu Andrei Tuicu
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: