Git plugin and GitHub Branch Source plugin both define branchDiscoveryTrait

This issue is archived. You can view it, but you can't modify it. Learn more

XMLWordPrintable

      Steps to reproduce

      Clone the git plugin's repository, then add the following to pom.xml:

      <dependency>
          <groupId>org.jenkins-ci.plugins</groupId>
          <artifactId>github-branch-source</artifactId>
          <version>2.11.3</version>
          <scope>test</scope>
      </dependency>
      

      Then run GlobalLibraryWithModernJCasCCompatibilityTest.

      Expected results

      The test passes

      Actual results

      The test fails with

      Expected: iterable with items [(an instance of jenkins.plugins.git.traits.BranchDiscoveryTrait), (an instance of jenkins.plugins.git.traits.TagDiscoveryTrait), (an instance of jenkins.plugins.git.traits.LocalBranchTrait), (an instance of jenkins.plugins.git.traits.CleanAfterCheckoutTrait), (an instance of jenkins.plugins.git.traits.CleanBeforeCheckoutTrait), (an instance of jenkins.plugins.git.traits.GitLFSPullTrait), (an instance of jenkins.plugins.git.traits.IgnoreOnPushNotificationTrait), (an instance of jenkins.plugins.git.traits.PruneStaleBranchTrait), (an instance of jenkins.plugins.git.traits.AuthorInChangelogTrait), (an instance of jenkins.plugins.git.traits.WipeWorkspaceTrait), (an instance of jenkins.plugins.git.traits.DiscoverOtherRefsTrait and hasProperty("nameMapping", "mapping") and hasProperty("ref", "other/refs")), (an instance of jenkins.scm.impl.trait.RegexSCMHeadFilterTrait and hasProperty("regex", ".*acme*")), (an instance of jenkins.scm.impl.trait.WildcardSCMHeadFilterTrait and hasProperty("excludes", "excluded") and hasProperty("includes", "master")), (an instance of jenkins.plugins.git.traits.RemoteNameSCMSourceTrait and hasProperty("remoteName", "other_remote")), (an instance of jenkins.plugins.git.traits.CheckoutOptionTrait and hasProperty("extension", an instance of hudson.plugins.git.extensions.impl.CheckoutOption) and hasProperty("extension", hasProperty("timeout", <1>))), (an instance of jenkins.plugins.git.traits.CloneOptionTrait and hasProperty("extension", an instance of hudson.plugins.git.extensions.impl.CloneOption) and hasProperty("extension", hasProperty("depth", <2>)) and hasProperty("extension", hasProperty("honorRefspec", <true>)) and hasProperty("extension", hasProperty("noTags", <false>)) and hasProperty("extension", hasProperty("reference", "/my/path/2")) and hasProperty("extension", hasProperty("shallow", <true>)) and hasProperty("extension", hasProperty("timeout", <2>))), (an instance of jenkins.plugins.git.traits.SubmoduleOptionTrait and hasProperty("extension", an instance of hudson.plugins.git.extensions.impl.SubmoduleOption) and hasProperty("extension", hasProperty("disableSubmodules", <true>)) and hasProperty("extension", hasProperty("parentCredentials", <true>)) and hasProperty("extension", hasProperty("recursiveSubmodules", <true>)) and hasProperty("extension", hasProperty("reference", "/my/path/3")) and hasProperty("extension", hasProperty("timeout", <3>)) and hasProperty("extension", hasProperty("trackingSubmodules", <true>))), (an instance of jenkins.plugins.git.traits.GitBrowserSCMSourceTrait and hasProperty("browser", an instance of hudson.plugins.git.browser.BitbucketWeb) and hasProperty("browser", hasProperty("repoUrl", "bitbucketweb.url"))), (an instance of jenkins.plugins.git.traits.UserIdentityTrait and hasProperty("extension", an instance of hudson.plugins.git.extensions.impl.UserIdentity) and hasProperty("extension", hasProperty("name", "my_user")) and hasProperty("extension", hasProperty("email", "my@email.com"))), (an instance of jenkins.plugins.git.traits.RefSpecsSCMSourceTrait and hasProperty("templates", a collection with size <1>) and hasProperty("templates", iterable with items [(an instance of jenkins.plugins.git.traits.RefSpecsSCMSourceTrait$RefSpecTemplate and hasProperty("value", "+refs/heads/*:refs/remotes/@{remote}/*"))] in any order))] in any order
           but: not matched: <org.jenkinsci.plugins.github_branch_source.BranchDiscoveryTrait@3d89981d>
      	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
      	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:6)
      	at jenkins.plugins.git.GlobalLibraryWithModernJCasCCompatibilityTest.assertConfiguredAsExpected(GlobalLibraryWithModernJCasCCompatibilityTest.java:64)
      	at io.jenkins.plugins.casc.misc.RoundTripAbstractTest.lambda$roundTripTest$0(RoundTripAbstractTest.java:104)
      	at org.jvnet.hudson.test.RestartableJenkinsRule$3.evaluate(RestartableJenkinsRule.java:246)
      	at org.jvnet.hudson.test.RestartableJenkinsRule$6.evaluate(RestartableJenkinsRule.java:294)
      	at org.jvnet.hudson.test.JenkinsRule$1.evaluate(JenkinsRule.java:601)
      	at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:299)
      	at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:293)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.lang.Thread.run(Thread.java:748)
      

      Evaluation

      Both plugins define branchDiscoveryTrait. To disambiguate, a @Symbol annotation should be added to each plugin with a differentiating name.

            Assignee:
            Unassigned
            Reporter:
            Basil Crow
            Archiver:
            Jenkins Service Account

              Created:
              Updated:
              Archived: