package lib.hudson; import static org.junit.Assert.assertTrue; import com.gargoylesoftware.htmlunit.html.DomNodeUtil; import com.gargoylesoftware.htmlunit.html.HtmlOption; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.gargoylesoftware.htmlunit.html.HtmlSelect; import hudson.matrix.MatrixProject; import hudson.maven.MavenModuleSet; import hudson.model.Item; import org.junit.Rule; import org.junit.Test; import org.jvnet.hudson.test.JenkinsRule; import org.xml.sax.SAXException; import java.util.HashSet; import java.util.List; import java.util.Set; import java.io.IOException; /** * @author Kohsuke Kawaguchi */ public class ListScmBrowsersTest { @Rule public JenkinsRule j = new JenkinsRule(); @Test public void selectBoxesUnique_FreeStyleProject() throws Exception { check(j.createFreeStyleProject()); } @Test public void selectBoxesUnique_MavenProject() throws Exception { check(j.jenkins.createProject(MavenModuleSet.class, "p")); } @Test public void selectBoxesUnique_MatrixProject() throws Exception { check(j.jenkins.createProject(MatrixProject.class, "p")); } private void check(Item p) throws IOException, SAXException { HtmlPage page = j.createWebClient().getPage(p, "configure"); List<HtmlSelect> selects = DomNodeUtil.selectNodes(page, "//select"); assertTrue(selects.size()>0); for (HtmlSelect select : selects) { Set<String> title = new HashSet<String>(); for(HtmlOption o : select.getOptions()) { assertTrue("Duplicate entry: "+o.getText(),title.add(o.getText())); } } } }