-
Notifications
You must be signed in to change notification settings - Fork 80
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[JENKINS-43507] Refactoring MockSCM to traits
- Loading branch information
Showing
11 changed files
with
526 additions
and
163 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,28 @@ | |||
package jenkins.scm.impl.mock; | |||
|
|||
import edu.umd.cs.findbugs.annotations.CheckForNull; | |||
import edu.umd.cs.findbugs.annotations.NonNull; | |||
import jenkins.scm.api.SCMBuilder; | |||
import jenkins.scm.api.SCMHead; | |||
import jenkins.scm.api.SCMRevision; | |||
|
|||
public class MockSCMBuilder extends SCMBuilder<MockSCMBuilder,MockSCM> { | |||
|
|||
private final MockSCMSource source; | |||
|
|||
public MockSCMBuilder(@NonNull MockSCMSource source, @NonNull SCMHead head, | |||
@CheckForNull SCMRevision revision) { | |||
super(MockSCM.class, head, revision); | |||
this.source = source; | |||
} | |||
|
|||
@Override | |||
public MockSCM build() { | |||
SCMRevision revision = getRevision(); | |||
return new MockSCM(source, getHead(), | |||
revision instanceof MockSCMRevision || revision instanceof MockChangeRequestSCMRevision | |||
? revision | |||
: null); | |||
} | |||
|
|||
} |
49 changes: 49 additions & 0 deletions
49
src/test/java/jenkins/scm/impl/mock/MockSCMDiscoverBranches.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,49 @@ | |||
package jenkins.scm.impl.mock; | |||
|
|||
import edu.umd.cs.findbugs.annotations.NonNull; | |||
import hudson.Extension; | |||
import hudson.scm.SCMDescriptor; | |||
import jenkins.scm.api.SCMHeadCategory; | |||
import jenkins.scm.api.trait.SCMSourceRequest; | |||
import jenkins.scm.api.trait.SCMSourceRequestBuilder; | |||
import jenkins.scm.api.trait.SCMSourceTrait; | |||
import jenkins.scm.api.trait.SCMSourceTraitDescriptor; | |||
import org.kohsuke.stapler.DataBoundConstructor; | |||
|
|||
public class MockSCMDiscoverBranches extends SCMSourceTrait { | |||
|
|||
@DataBoundConstructor | |||
public MockSCMDiscoverBranches() { | |||
} | |||
|
|||
@Override | |||
protected <B extends SCMSourceRequestBuilder<B, R>, R extends SCMSourceRequest> void decorateRequest(B builder) { | |||
if (builder instanceof MockSCMSourceRequestBuilder) { | |||
((MockSCMSourceRequestBuilder) builder).withBranches(true); | |||
} | |||
} | |||
|
|||
@Override | |||
public boolean isCategoryEnabled(@NonNull SCMHeadCategory category) { | |||
return category.isUncategorized(); | |||
} | |||
|
|||
@Extension | |||
public static final class DescriptorImpl extends SCMSourceTraitDescriptor { | |||
|
|||
@Override | |||
public String getDisplayName() { | |||
return ""; | |||
} | |||
|
|||
@Override | |||
public boolean isApplicableTo(Class<? extends SCMSourceRequestBuilder> requestBuilderClass) { | |||
return MockSCMSourceRequestBuilder.class.isAssignableFrom(requestBuilderClass); | |||
} | |||
|
|||
@Override | |||
public boolean isApplicableTo(SCMDescriptor<?> scm) { | |||
return scm instanceof MockSCM.DescriptorImpl; | |||
} | |||
} | |||
} |
90 changes: 90 additions & 0 deletions
90
src/test/java/jenkins/scm/impl/mock/MockSCMDiscoverChangeRequests.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,90 @@ | |||
package jenkins.scm.impl.mock; | |||
|
|||
import edu.umd.cs.findbugs.annotations.NonNull; | |||
import hudson.Extension; | |||
import hudson.scm.SCMDescriptor; | |||
import java.util.Arrays; | |||
import java.util.Collection; | |||
import java.util.EnumSet; | |||
import java.util.Set; | |||
import jenkins.scm.api.SCMHeadCategory; | |||
import jenkins.scm.api.mixin.ChangeRequestCheckoutStrategy; | |||
import jenkins.scm.api.trait.SCMSourceRequest; | |||
import jenkins.scm.api.trait.SCMSourceRequestBuilder; | |||
import jenkins.scm.api.trait.SCMSourceTrait; | |||
import jenkins.scm.api.trait.SCMSourceTraitDescriptor; | |||
import jenkins.scm.impl.ChangeRequestSCMHeadCategory; | |||
import org.codehaus.plexus.util.StringUtils; | |||
import org.kohsuke.stapler.DataBoundConstructor; | |||
|
|||
public class MockSCMDiscoverChangeRequests extends SCMSourceTrait { | |||
|
|||
private final Set<ChangeRequestCheckoutStrategy> strategies; | |||
|
|||
public MockSCMDiscoverChangeRequests(Collection<ChangeRequestCheckoutStrategy> strategies) { | |||
this.strategies = | |||
strategies.isEmpty() ? EnumSet.of(ChangeRequestCheckoutStrategy.HEAD) : EnumSet.copyOf(strategies); | |||
} | |||
|
|||
public MockSCMDiscoverChangeRequests(ChangeRequestCheckoutStrategy... strategies) { | |||
this(Arrays.asList(strategies)); | |||
} | |||
|
|||
@DataBoundConstructor | |||
public MockSCMDiscoverChangeRequests(String strategiesStr) { | |||
this(fromString(strategiesStr)); | |||
} | |||
|
|||
private static Set<ChangeRequestCheckoutStrategy> fromString(String strategiesStr) { | |||
Set<ChangeRequestCheckoutStrategy> strategies = EnumSet.noneOf(ChangeRequestCheckoutStrategy.class); | |||
for (String s : StringUtils.split(strategiesStr, ", ")) { | |||
try { | |||
strategies.add(ChangeRequestCheckoutStrategy.valueOf(s.trim())); | |||
} catch (IllegalArgumentException e) { | |||
// ignore | |||
} | |||
} | |||
return strategies; | |||
} | |||
|
|||
public String getStrategiesStr() { | |||
StringBuilder r = new StringBuilder(); | |||
for (ChangeRequestCheckoutStrategy s : strategies) { | |||
r.append(s.name()).append(", "); | |||
} | |||
return r.toString(); | |||
} | |||
|
|||
|
|||
@Override | |||
protected <B extends SCMSourceRequestBuilder<B, R>, R extends SCMSourceRequest> void decorateRequest(B builder) { | |||
if (builder instanceof MockSCMSourceRequestBuilder) { | |||
((MockSCMSourceRequestBuilder) builder).withChangeRequests(true); | |||
((MockSCMSourceRequestBuilder) builder).withCheckoutStrategies(strategies); | |||
} | |||
} | |||
|
|||
@Override | |||
public boolean isCategoryEnabled(@NonNull SCMHeadCategory category) { | |||
return category instanceof ChangeRequestSCMHeadCategory; | |||
} | |||
|
|||
@Extension | |||
public static final class DescriptorImpl extends SCMSourceTraitDescriptor { | |||
|
|||
@Override | |||
public String getDisplayName() { | |||
return ""; | |||
} | |||
|
|||
@Override | |||
public boolean isApplicableTo(Class<? extends SCMSourceRequestBuilder> requestBuilderClass) { | |||
return MockSCMSourceRequestBuilder.class.isAssignableFrom(requestBuilderClass); | |||
} | |||
|
|||
@Override | |||
public boolean isApplicableTo(SCMDescriptor<?> scm) { | |||
return scm instanceof MockSCM.DescriptorImpl; | |||
} | |||
} | |||
} |
50 changes: 50 additions & 0 deletions
50
src/test/java/jenkins/scm/impl/mock/MockSCMDiscoverTags.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,50 @@ | |||
package jenkins.scm.impl.mock; | |||
|
|||
import edu.umd.cs.findbugs.annotations.NonNull; | |||
import hudson.Extension; | |||
import hudson.scm.SCMDescriptor; | |||
import jenkins.scm.api.SCMHeadCategory; | |||
import jenkins.scm.api.trait.SCMSourceRequest; | |||
import jenkins.scm.api.trait.SCMSourceRequestBuilder; | |||
import jenkins.scm.api.trait.SCMSourceTrait; | |||
import jenkins.scm.api.trait.SCMSourceTraitDescriptor; | |||
import jenkins.scm.impl.TagSCMHeadCategory; | |||
import org.kohsuke.stapler.DataBoundConstructor; | |||
|
|||
public class MockSCMDiscoverTags extends SCMSourceTrait { | |||
|
|||
@DataBoundConstructor | |||
public MockSCMDiscoverTags() { | |||
} | |||
|
|||
@Override | |||
protected <B extends SCMSourceRequestBuilder<B, R>, R extends SCMSourceRequest> void decorateRequest(B builder) { | |||
if (builder instanceof MockSCMSourceRequestBuilder) { | |||
((MockSCMSourceRequestBuilder) builder).withTags(true); | |||
} | |||
} | |||
|
|||
@Override | |||
public boolean isCategoryEnabled(@NonNull SCMHeadCategory category) { | |||
return category instanceof TagSCMHeadCategory; | |||
} | |||
|
|||
@Extension | |||
public static final class DescriptorImpl extends SCMSourceTraitDescriptor { | |||
|
|||
@Override | |||
public String getDisplayName() { | |||
return ""; | |||
} | |||
|
|||
@Override | |||
public boolean isApplicableTo(Class<? extends SCMSourceRequestBuilder> requestBuilderClass) { | |||
return MockSCMSourceRequestBuilder.class.isAssignableFrom(requestBuilderClass); | |||
} | |||
|
|||
@Override | |||
public boolean isApplicableTo(SCMDescriptor<?> scm) { | |||
return scm instanceof MockSCM.DescriptorImpl; | |||
} | |||
} | |||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.