Skip to content

Commit 59ba791

Browse files
authored
Merge pull request #679 from Dohbedoh/feature/JENKINS-56189
[JENKINS-56189] Add Sparse Checkout SCM trait
2 parents 9f8c251 + 39c522d commit 59ba791

File tree

3 files changed

+91
-1
lines changed

3 files changed

+91
-1
lines changed

src/main/java/hudson/plugins/git/extensions/impl/SparseCheckoutPaths.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.io.IOException;
1717
import java.util.Collections;
1818
import java.util.List;
19+
import java.util.Objects;
1920

2021
public class SparseCheckoutPaths extends GitSCMExtension {
2122
private List<SparseCheckoutPath> sparseCheckoutPaths = Collections.emptyList();
@@ -49,4 +50,39 @@ public String getDisplayName() {
4950
return "Sparse Checkout paths";
5051
}
5152
}
53+
54+
/**
55+
* {@inheritDoc}
56+
*/
57+
@Override
58+
public boolean equals(Object o) {
59+
if (this == o) {
60+
return true;
61+
}
62+
63+
if (o == null || getClass() != o.getClass()) {
64+
return false;
65+
}
66+
67+
SparseCheckoutPaths that = (SparseCheckoutPaths) o;
68+
return Objects.equals(getSparseCheckoutPaths(), that.getSparseCheckoutPaths());
69+
}
70+
71+
/**
72+
* {@inheritDoc}
73+
*/
74+
@Override
75+
public int hashCode() {
76+
return Objects.hash(getSparseCheckoutPaths());
77+
}
78+
79+
/**
80+
* {@inheritDoc}
81+
*/
82+
@Override
83+
public String toString() {
84+
return "SparseCheckoutPaths{" +
85+
"sparseCheckoutPaths=" + sparseCheckoutPaths +
86+
'}';
87+
}
5288
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package jenkins.plugins.git.traits;
2+
3+
import hudson.Extension;
4+
import hudson.plugins.git.extensions.impl.SparseCheckoutPaths;
5+
import jenkins.scm.api.trait.SCMSourceTrait;
6+
import org.kohsuke.stapler.DataBoundConstructor;
7+
8+
/**
9+
* Exposes {@link SparseCheckoutPaths} as a {@link SCMSourceTrait}.
10+
*
11+
* @since 4.0.1
12+
*/
13+
public class SparseCheckoutPathsTrait extends GitSCMExtensionTrait<SparseCheckoutPaths> {
14+
/**
15+
* Stapler constructor.
16+
*
17+
* @param extension the {@link SparseCheckoutPaths}
18+
*/
19+
@DataBoundConstructor
20+
public SparseCheckoutPathsTrait(SparseCheckoutPaths extension) {
21+
super(extension);
22+
}
23+
24+
/**
25+
* Our {@link hudson.model.Descriptor}
26+
*/
27+
@Extension
28+
public static class DescriptorImpl extends GitSCMExtensionTraitDescriptor {
29+
/**
30+
* {@inheritDoc}
31+
*/
32+
@Override
33+
public String getDisplayName() {
34+
return "Sparse Checkout paths";
35+
}
36+
}
37+
}

src/test/java/jenkins/plugins/git/GitSCMSourceTraitsTest.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,14 @@
1010
import hudson.plugins.git.extensions.impl.GitLFSPull;
1111
import hudson.plugins.git.extensions.impl.LocalBranch;
1212
import hudson.plugins.git.extensions.impl.PruneStaleBranch;
13+
import hudson.plugins.git.extensions.impl.SparseCheckoutPaths;
1314
import hudson.plugins.git.extensions.impl.SubmoduleOption;
1415
import hudson.plugins.git.extensions.impl.UserIdentity;
1516
import hudson.plugins.git.extensions.impl.WipeWorkspace;
17+
1618
import java.util.Collections;
1719
import jenkins.model.Jenkins;
20+
1821
import jenkins.plugins.git.traits.AuthorInChangelogTrait;
1922
import jenkins.plugins.git.traits.BranchDiscoveryTrait;
2023
import jenkins.plugins.git.traits.CheckoutOptionTrait;
@@ -28,6 +31,7 @@
2831
import jenkins.plugins.git.traits.PruneStaleBranchTrait;
2932
import jenkins.plugins.git.traits.RefSpecsSCMSourceTrait;
3033
import jenkins.plugins.git.traits.RemoteNameSCMSourceTrait;
34+
import jenkins.plugins.git.traits.SparseCheckoutPathsTrait;
3135
import jenkins.plugins.git.traits.SubmoduleOptionTrait;
3236
import jenkins.plugins.git.traits.UserIdentityTrait;
3337
import jenkins.plugins.git.traits.WipeWorkspaceTrait;
@@ -45,6 +49,7 @@
4549
import static org.hamcrest.Matchers.containsInAnyOrder;
4650
import static org.hamcrest.Matchers.empty;
4751
import static org.hamcrest.Matchers.hasProperty;
52+
import static org.hamcrest.Matchers.hasSize;
4853
import static org.hamcrest.Matchers.instanceOf;
4954
import static org.hamcrest.Matchers.is;
5055
import static org.hamcrest.Matchers.nullValue;
@@ -156,6 +161,14 @@ public void pimpped_out() throws Exception {
156161
hasProperty("repoUrl", is("foo"))
157162
)
158163
)
164+
),
165+
Matchers.<SCMSourceTrait>allOf(
166+
instanceOf(SparseCheckoutPathsTrait.class),
167+
hasProperty("extension",
168+
allOf(
169+
hasProperty("sparseCheckoutPaths", hasSize(2))
170+
)
171+
)
159172
)
160173
)
161174
);
@@ -201,7 +214,11 @@ public void pimpped_out() throws Exception {
201214
Matchers.<GitSCMExtension>instanceOf(GitLFSPull.class),
202215
Matchers.<GitSCMExtension>instanceOf(PruneStaleBranch.class),
203216
Matchers.<GitSCMExtension>instanceOf(AuthorInChangelog.class),
204-
Matchers.<GitSCMExtension>instanceOf(WipeWorkspace.class)
217+
Matchers.<GitSCMExtension>instanceOf(WipeWorkspace.class),
218+
Matchers.<GitSCMExtension>allOf(
219+
instanceOf(SparseCheckoutPaths.class),
220+
hasProperty("sparseCheckoutPaths", hasSize(2))
221+
)
205222
)
206223
);
207224
assertThat(instance.getBrowser(), allOf(

0 commit comments

Comments
 (0)