package hudson.plugins.seleniumhq;
import hudson.model.AbstractProject;
import hudson.model.Descriptor;
import hudson.model.FreeStyleBuild;
import hudson.model.FreeStyleProject;
import hudson.model.Result;
import hudson.tasks.Publisher;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.jvnet.hudson.test.HudsonTestCase;
import org.jvnet.hudson.test.SingleFileSCM;
public class SeleniumhqPublisherTest extends HudsonTestCase
{
/**
* Test du constructeur
*/
public void testSeleniumhqPublisher()
{
SeleniumhqPublisher publisher = new SeleniumhqPublisher("*.html", false);
assertTrue(publisher instanceof Publisher);
}
/**
* Test de la m�thode getTestResults
*/
public void testGetTestResults()
{
SeleniumhqPublisher publisher = new SeleniumhqPublisher("*.html", false);
assertEquals("*.html", publisher.getTestResults());
}
/**
* Test de la m�thode getDescriptor
*/
public void testGetDescriptor()
{
SeleniumhqPublisher publisher = new SeleniumhqPublisher("*.html", false);
Descriptor<Publisher> descriptor = publisher.getDescriptor();
assertTrue(descriptor instanceof SeleniumhqPublisher.DescriptorImpl);
assertEquals("/plugin/seleniumhq/help-publisher.html", descriptor.getHelpFile());
assertEquals("Publish Selenium Report", descriptor.getDisplayName());
}
/**
* Test de la m�thode getProjectAction
*/
public void testGetProjectAction() throws IOException
{
SeleniumhqPublisher publisher = new SeleniumhqPublisher("*.html", false);
assertTrue(publisher.getProjectAction((AbstractProject)createFreeStyleProject()) instanceof SeleniumhqProjectAction);
}
/**
* Test du Publisher avec aucun fichier source
* @throws Exception
*/
public void test1() throws Exception
{
FreeStyleProject project = createFreeStyleProject();
project.getPublishersList().add(new SeleniumhqPublisher("*.html", false));
FreeStyleBuild build = project.scheduleBuild2(0).get();
assertEquals(Result.FAILURE, build.getResult());
String s = FileUtils.readFileToString(build.getLogFile());
assertTrue(s.contains("Publishing Selenium report..."));
assertTrue(s.contains("No Test Report Found"));
}
/**
* Test du Publisher avec 1 fichier source invalide
* @throws Exception
*/
public void test2() throws Exception
{
FreeStyleProject project = createFreeStyleProject();
project.getPublishersList().add(new SeleniumhqPublisher("*.html", false));
project.setScm(new SingleFileSCM("badResult.html", getClass().getResource("badResult.html")));
FreeStyleBuild build = project.scheduleBuild2(0).get();
assertEquals(Result.FAILURE, build.getResult());
String s = FileUtils.readFileToString(build.getLogFile());
assertTrue(s.contains("Staging badResult.html"));
assertTrue(s.contains("Publishing Selenium report..."));
assertTrue(s.contains("ERROR: Failed to archive Selenium reports"));
}
/**
* Test du Publisher avec 1 fichier source invalide vide
* @throws Exception
*/
public void test3() throws Exception
{
FreeStyleProject project = createFreeStyleProject();
project.getPublishersList().add(new SeleniumhqPublisher("*.html", false));
project.setScm(new SingleFileSCM("emptyResult.html", getClass().getResource("emptyResult.html")));
FreeStyleBuild build = project.scheduleBuild2(0).get();
assertEquals(Result.FAILURE, build.getResult());
String s = FileUtils.readFileToString(build.getLogFile());
assertTrue(s.contains("Staging emptyResult.html"));
assertTrue(s.contains("Publishing Selenium report..."));
assertTrue(s.contains("ERROR: Failed to archive Selenium reports"));
}
/**
* Test du Publisher avec 1 fichier valide
* @throws Exception
*/
public void test4() throws Exception
{
FreeStyleProject project = createFreeStyleProject();
project.getPublishersList().add(new SeleniumhqPublisher("*.html", false));
project.setScm(new SingleFileSCM("testResult.html", getClass().getResource("testResult.html")));
FreeStyleBuild build = project.scheduleBuild2(0).get();
assertEquals(Result.SUCCESS, build.getResult());
String s = FileUtils.readFileToString(build.getLogFile());
assertTrue(s.contains("Test failures: 0"));
assertTrue(s.contains("Test totals : 7"));
}
/**
* Test du Publisher avec 1 fichier valide avec failures et numCommandErrors > 0
* @throws Exception
*/
public void test5() throws Exception
{
FreeStyleProject project = createFreeStyleProject();
project.getPublishersList().add(new SeleniumhqPublisher("*.html", false));
project.setScm(new SingleFileSCM("testResultWithFailure.html", getClass().getResource("testResultWithFailure.html")));
FreeStyleBuild build = project.scheduleBuild2(0).get();
assertEquals(Result.UNSTABLE, build.getResult());
String s = FileUtils.readFileToString(build.getLogFile());
assertTrue(s.contains("Test failures: 1"));
assertTrue(s.contains("Test totals : 3"));
assertTrue(s.contains("Command Passes : 37"));
assertTrue(s.contains("Command Failures : 5"));
assertTrue(s.contains("Command Errors : 1"));
}
/**
* Test du Publisher avec 1 fichier valide avec failures et numCommandErrors > 0
* @throws Exception
*/
public void test5_2() throws Exception
{
FreeStyleProject project = createFreeStyleProject();
project.getPublishersList().add(new SeleniumhqPublisher("*.html", true));
project.setScm(new SingleFileSCM("testResultWithFailure.html", getClass().getResource("testResultWithFailure.html")));
FreeStyleBuild build = project.scheduleBuild2(0).get();
assertEquals(Result.FAILURE, build.getResult());
String s = FileUtils.readFileToString(build.getLogFile());
assertTrue(s.contains("Test failures: 1"));
assertTrue(s.contains("Test totals : 3"));
assertTrue(s.contains("Command Passes : 37"));
assertTrue(s.contains("Command Failures : 5"));
assertTrue(s.contains("Command Errors : 1"));
}
/**
* Test du Publisher avec 2 fichier valide
* @throws Exception
*/
public void test6() throws Exception
{
FreeStyleProject project = createFreeStyleProject();
project.getPublishersList().add(new SeleniumhqPublisher("*.html", false));
List<SingleFileSCM> files = new ArrayList<SingleFileSCM>(2);
files.add(new SingleFileSCM("testResult1.html", getClass().getResource("testResult.html")));
files.add(new SingleFileSCM("testResult2.html", getClass().getResource("testResult.html")));
project.setScm(new MultiFileSCM(files));
FreeStyleBuild build = project.scheduleBuild2(0).get();
assertEquals(Result.SUCCESS, build.getResult());
String s = FileUtils.readFileToString(build.getLogFile());
assertTrue(s.contains("Test failures: 0"));
assertTrue(s.contains("Test totals : 14"));
}
/**
* Test du Publisher avec 3 fichier 2 valide et 1 avec failure
* @throws Exception
*/
public void test7() throws Exception
{
FreeStyleProject project = createFreeStyleProject();
project.getPublishersList().add(new SeleniumhqPublisher("*.html", false));
List<SingleFileSCM> files = new ArrayList<SingleFileSCM>(2);
files.add(new SingleFileSCM("testResult1.html", getClass().getResource("testResult.html")));
files.add(new SingleFileSCM("testResult2.html", getClass().getResource("testResult.html")));
files.add(new SingleFileSCM("testResult3.html", getClass().getResource("testResultWithFailure.html")));
project.setScm(new MultiFileSCM(files));
FreeStyleBuild build = project.scheduleBuild2(0).get();
assertEquals(Result.UNSTABLE, build.getResult());
String s = FileUtils.readFileToString(build.getLogFile());
assertTrue(s.contains("Test failures: 1"));
assertTrue(s.contains("Test totals : 17"));
}
/**
* Test du Publisher avec 3 fichier 2 valide et 1 avec failure
* @throws Exception
*/
public void test7_2() throws Exception
{
FreeStyleProject project = createFreeStyleProject();
project.getPublishersList().add(new SeleniumhqPublisher("*.html", true));
List<SingleFileSCM> files = new ArrayList<SingleFileSCM>(2);
files.add(new SingleFileSCM("testResult1.html", getClass().getResource("testResult.html")));
files.add(new SingleFileSCM("testResult2.html", getClass().getResource("testResult.html")));
files.add(new SingleFileSCM("testResult3.html", getClass().getResource("testResultWithFailure.html")));
project.setScm(new MultiFileSCM(files));
FreeStyleBuild build = project.scheduleBuild2(0).get();
assertEquals(Result.FAILURE, build.getResult());
String s = FileUtils.readFileToString(build.getLogFile());
assertTrue(s.contains("Test failures: 1"));
assertTrue(s.contains("Test totals : 17"));
}
/**
* Test du Publisher avec 1 fichier valide avec 0 test
* @throws Exception
*/
public void test8() throws Exception
{
FreeStyleProject project = createFreeStyleProject();
project.getPublishersList().add(new SeleniumhqPublisher("*.html", false));
project.setScm(new SingleFileSCM("testResultNoTest.html", getClass().getResource("testResultNoTest.html")));
FreeStyleBuild build = project.scheduleBuild2(0).get();
assertEquals(Result.FAILURE, build.getResult());
String s = FileUtils.readFileToString(build.getLogFile());
assertTrue(s.contains("Staging testResultNoTest.html"));
assertTrue(s.contains("Publishing Selenium report..."));
assertTrue(s.contains("ERROR: Result does not have test"));
}
/**
* Test du Publisher avec 1 fichier valide avec failures et numCommandErrors = 0
* @throws Exception
*/
public void test9() throws Exception
{
FreeStyleProject project = createFreeStyleProject();
project.getPublishersList().add(new SeleniumhqPublisher("*.html", false));
project.setScm(new SingleFileSCM("testResultWithFailureNoError.html", getClass().getResource("testResultWithFailureNoError.html")));
FreeStyleBuild build = project.scheduleBuild2(0).get();
assertEquals(Result.UNSTABLE, build.getResult());
String s = FileUtils.readFileToString(build.getLogFile());
assertTrue(s.contains("Test failures: 1"));
assertTrue(s.contains("Test totals : 3"));
assertTrue(s.contains("Command Passes : 37"));
assertTrue(s.contains("Command Failures : 5"));
assertTrue(s.contains("Command Errors : 0"));
}
}