package hudson.plugins.mercurial;
import static org.junit.Assert.*;
import org.jvnet.hudson.test.TestExtension;
import hudson.FilePath;
import hudson.Launcher;
import hudson.model.AbstractProject;
import hudson.model.FreeStyleProject;
import hudson.model.Node;
import hudson.model.TaskListener;
import hudson.scm.PollingResult;
import hudson.scm.PollingResult.Change;
import hudson.util.StreamTaskListener;
import jenkins.model.Jenkins;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.nio.charset.Charset;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.jvnet.hudson.test.JenkinsRule;
public class ChangeComparatorTest {
@Rule public JenkinsRule j = new JenkinsRule();
@Rule public MercurialRule m = new MercurialRule(j);
@Rule public TemporaryFolder tmp = new TemporaryFolder();
@TestExtension("triggersNewBuild")
static public class DummyComparator extends ChangeComparator {
public Change compare(MercurialSCM scm, Launcher launcher, TaskListener listener, MercurialTagAction baseline, PrintStream output, Node node, FilePath repository, AbstractProject<?,?> project)
throws IOException, InterruptedException {
return Change.SIGNIFICANT;
}
}
@Test public void triggersNewBuild() throws Exception {
TaskListener listener = new StreamTaskListener(System.out, Charset.defaultCharset());
Launcher launcher = j.jenkins.createLauncher(listener);
FreeStyleProject project = j.createFreeStyleProject();
MercurialSCM scm = new MercurialSCM(null, tmp.getRoot().getPath(), null, null, null, null, false, null);
project.setScm(scm);
File repo = tmp.getRoot();
m.hg(repo, "init");
m.touchAndCommit(repo, "x");
PollingResult pr = scm.compare(
launcher,
listener,
new MercurialTagAction("tip","",null,null),
listener.getLogger(),
j.jenkins,
new FilePath(tmp.getRoot()),
project);
assertEquals(PollingResult.Change.SIGNIFICANT, pr.change);
}
}