package com.ribose.jenkins.plugin.awscodecommittrigger.it.mock; import com.ribose.jenkins.plugin.awscodecommittrigger.utils.StringUtils; import hudson.Extension; import hudson.FilePath; import hudson.Launcher; import hudson.model.*; import hudson.plugins.git.BranchSpec; import hudson.plugins.git.GitSCM; import hudson.plugins.git.SubmoduleConfig; import hudson.plugins.git.UserRemoteConfig; import hudson.plugins.git.browser.GitRepositoryBrowser; import hudson.plugins.git.extensions.GitSCMExtension; import hudson.scm.*; import hudson.triggers.TriggerDescriptor; import org.apache.commons.io.FileUtils; import org.kohsuke.stapler.DataBoundConstructor; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; public class MockGitSCM extends GitSCM { private String url; public MockGitSCM(String repositoryUrl) { super(repositoryUrl); this.url = repositoryUrl; } @DataBoundConstructor public MockGitSCM( List<UserRemoteConfig> userRemoteConfigs, List<BranchSpec> branches, Boolean doGenerateSubmoduleConfigurations, Collection<SubmoduleConfig> submoduleCfg, GitRepositoryBrowser browser, String gitTool, List<GitSCMExtension> extensions ) { super(userRemoteConfigs, branches, doGenerateSubmoduleConfigurations, submoduleCfg, browser, gitTool, extensions); this.url = userRemoteConfigs.get(0).getUrl(); } @Override public void checkout(Run<?, ?> build, Launcher launcher, FilePath workspace, TaskListener listener, File changelogFile, SCMRevisionState baseline) throws IOException, InterruptedException { System.out.println("Mock GitSCM checkout code"); } public String getUrl() { return url; } @Override public void buildEnvironment(Run<?, ?> build, java.util.Map<String, String> env) { System.out.println("mock git scm function"); } @Override public PollingResult compareRemoteRevisionWith(@Nonnull Job<?, ?> project, @Nullable Launcher launcher, @Nullable FilePath workspace, @Nonnull TaskListener listener, @Nonnull SCMRevisionState baseline) throws IOException, InterruptedException { return PollingResult.BUILD_NOW; } public static MockGitSCM fromSqsMessage(String sqsMessage) { String url = StringUtils.findByUniqueJsonKey(sqsMessage, "__gitUrl__"); String branches = StringUtils.findByUniqueJsonKey(sqsMessage, "__gitBranches__"); if (org.apache.commons.lang3.StringUtils.isBlank(branches)) { return new MockGitSCM(url); } return fromSqsMessage(url, branches); } public static MockGitSCM fromUrlAndBranchSpecs(String url, List<BranchSpec> branchSpecs) { return new MockGitSCM( GitSCM.createRepoList(url, null), branchSpecs, false, Collections.<SubmoduleConfig>emptyList(), null, null, Collections.<GitSCMExtension>emptyList() ); } public static MockGitSCM fromSqsMessage(String sqsMessage, String branches) { String url = StringUtils.findByUniqueJsonKey(sqsMessage, "__gitUrl__"); List<BranchSpec> branchSpecs = new ArrayList<>(); for (String branch : branches.split(",")) { branchSpecs.add(new BranchSpec(branch)); } return fromUrlAndBranchSpecs(url, branchSpecs); } }