Skip to content

feat: Add the Tuleap Pull Request configuration trait #252

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 20, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.jenkinsci.Symbol;
import org.jenkinsci.plugins.tuleap_git_branch_source.config.TuleapSCMFileSystem;
import org.jenkinsci.plugins.tuleap_git_branch_source.trait.TuleapBranchDiscoveryTrait;
import org.jenkinsci.plugins.tuleap_git_branch_source.trait.TuleapPullRequestDiscoveryTrait;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.kohsuke.accmod.Restricted;
Expand Down Expand Up @@ -163,6 +164,9 @@ public SCMSourceCriteria.Probe create(@NotNull TuleapBranchSCMHead head, @Nullab
}

}
if(request.isRetrievePullRequests()){
request.listener().getLogger().format("Retrieving pull request for repository at %s %n", repositoryPath);
}
}
}

Expand Down Expand Up @@ -341,7 +345,7 @@ public String getDisplayName() {
}

public List<SCMSourceTrait> getTraitsDefaults() {
return Arrays.asList(new TuleapBranchDiscoveryTrait(), new RefSpecsSCMSourceTrait());
return Arrays.asList(new TuleapBranchDiscoveryTrait(), new TuleapPullRequestDiscoveryTrait(), new RefSpecsSCMSourceTrait());
}

@RequirePOST
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ public class TuleapSCMSourceContext extends SCMSourceContext<TuleapSCMSourceCont

private boolean notifyPullRequest = false;

private boolean wantPullRequests = false;

public TuleapSCMSourceContext(@CheckForNull SCMSourceCriteria criteria, @NonNull SCMHeadObserver observer) {
super(criteria, observer);
}
Expand All @@ -38,6 +40,8 @@ public final boolean isNotifyPullRequest() {
return this.notifyPullRequest;
}

public final boolean wantPullRequests() {return this.wantPullRequests; }

/**
* Adds a requirement for branch details to any {@link TuleapSCMSourceContext} for this context.
*
Expand All @@ -58,4 +62,10 @@ public TuleapSCMSourceContext notifyPullRequest(boolean notify) {
return this;
}

@NonNull
public TuleapSCMSourceContext wantPullRequests(boolean include) {
this.wantPullRequests = this.wantPullRequests || include;
return this;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,14 @@ public class TuleapSCMSourceRequest extends SCMSourceRequest {

private final boolean notifyPullRequest;

private final boolean retrievePullRequests;

protected TuleapSCMSourceRequest(@NonNull SCMSource source, @NonNull TuleapSCMSourceContext context,
@CheckForNull TaskListener listener) {
super(source, context, listener);

this.fetchBranches = context.wantBranches();
this.retrievePullRequests = context.wantPullRequests();
this.notifyPullRequest = context.isNotifyPullRequest();
}
public boolean isFetchBranches() {
Expand All @@ -29,4 +32,8 @@ public boolean isFetchBranches() {
public boolean isNotifyPullRequest() {
return this.notifyPullRequest;
}

public boolean isRetrievePullRequests() {
return retrievePullRequests;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
import org.jenkinsci.plugins.tuleap_git_branch_source.TuleapSCMSourceContext;
import org.kohsuke.stapler.DataBoundConstructor;

public class TuleapBranchDiscoveryTrait extends SCMSourceTrait {
public class
TuleapBranchDiscoveryTrait extends SCMSourceTrait {

@DataBoundConstructor
public TuleapBranchDiscoveryTrait() {}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package org.jenkinsci.plugins.tuleap_git_branch_source.trait;

import edu.umd.cs.findbugs.annotations.NonNull;
import hudson.Extension;
import jenkins.scm.api.SCMHeadCategory;
import jenkins.scm.api.SCMSource;
import jenkins.scm.api.trait.SCMSourceContext;
import jenkins.scm.api.trait.SCMSourceTrait;
import jenkins.scm.api.trait.SCMSourceTraitDescriptor;
import jenkins.scm.impl.trait.Discovery;
import org.jenkinsci.Symbol;
import org.jenkinsci.plugins.tuleap_git_branch_source.Messages;
import org.jenkinsci.plugins.tuleap_git_branch_source.TuleapSCMSource;
import org.jenkinsci.plugins.tuleap_git_branch_source.TuleapSCMSourceContext;
import org.kohsuke.stapler.DataBoundConstructor;

public class TuleapPullRequestDiscoveryTrait extends SCMSourceTrait {

@DataBoundConstructor
public TuleapPullRequestDiscoveryTrait() {
}


/**
* {@inheritDoc}
*/
@Override
protected void decorateContext(SCMSourceContext<?, ?> context) {
TuleapSCMSourceContext tuleapSourceContext = (TuleapSCMSourceContext) context;
tuleapSourceContext.wantPullRequests(true);
}

/**
* {@inheritDoc}
*/
@Override
public boolean includeCategory(@NonNull SCMHeadCategory category) {
return category.isUncategorized();
}

@Symbol("tuleapPullRequestDiscovery")
@Extension
@Discovery
public static class DescriptorImpl extends SCMSourceTraitDescriptor {

/**
* {@inheritDoc}
*/
@Override
public String getDisplayName() {
return Messages.TuleapPullRequestDiscoveryTrait_displayName();
}

/**
* {@inheritDoc}
*/
@Override
public Class<? extends SCMSourceContext> getContextClass() {
return TuleapSCMSourceContext.class;
}

/**
* {@inheritDoc}
*/
@Override
public Class<? extends SCMSource> getSourceClass() {
return TuleapSCMSource.class;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ SCMNavigator.aTuleapProjectIsRequiredWarning=A Tuleap Project is required!
BranchSCMHead.pronoun=Branch

TuleapBranchDiscoveryTrait.displayName=Tuleap branches autodiscovery
TuleapPullRequestDiscoveryTrait.displayName=Tuleap Pull Requests autodiscovery

TuleapCommitNotificationTrait.displayName=Notify build status to Tuleap

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import jenkins.scm.impl.trait.WildcardSCMSourceFilterTrait;
import org.hamcrest.Matchers;
import org.jenkinsci.plugins.tuleap_git_branch_source.trait.TuleapBranchDiscoveryTrait;
import org.jenkinsci.plugins.tuleap_git_branch_source.trait.TuleapPullRequestDiscoveryTrait;
import org.junit.ClassRule;
import org.junit.Test;
import org.jvnet.hudson.test.JenkinsRule;
Expand Down Expand Up @@ -38,7 +39,8 @@ public void testItLoadsTheDefaultConfigurationTraitsAtTuleapProjectCreation() th
hasProperty("includes", is("*")),
hasProperty("excludes", is(""))),
Matchers.instanceOf(RefSpecsSCMSourceTrait.class),
Matchers.instanceOf(TuleapBranchDiscoveryTrait.class)
Matchers.instanceOf(TuleapBranchDiscoveryTrait.class),
Matchers.instanceOf(TuleapPullRequestDiscoveryTrait.class)
)
);
}
Expand Down