Skip to content

Commit

Permalink
[JENKINS-25501] Added test case verifying that tokens are correctly p…
Browse files Browse the repository at this point in the history
…roduced and consumed.
  • Loading branch information
uhafner committed Nov 14, 2014
1 parent 90f7a89 commit 0fb931e
Show file tree
Hide file tree
Showing 6 changed files with 231 additions and 23 deletions.
61 changes: 58 additions & 3 deletions src/test/java/plugins/AbstractAnalysisTest.java
@@ -1,6 +1,7 @@
package plugins;

import javax.annotation.CheckForNull;
import javax.mail.MessagingException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
Expand All @@ -17,6 +18,8 @@
import org.jenkinsci.test.acceptance.plugins.analysis_core.AnalysisSettings;
import org.jenkinsci.test.acceptance.plugins.dashboard_view.AbstractDashboardViewPortlet;
import org.jenkinsci.test.acceptance.plugins.dashboard_view.DashboardView;
import org.jenkinsci.test.acceptance.plugins.email_ext.EmailExtPublisher;
import org.jenkinsci.test.acceptance.plugins.mailer.MailerGlobalConfig;
import org.jenkinsci.test.acceptance.plugins.maven.MavenBuildStep;
import org.jenkinsci.test.acceptance.plugins.maven.MavenInstallation;
import org.jenkinsci.test.acceptance.plugins.maven.MavenModuleSet;
Expand All @@ -30,6 +33,7 @@
import org.jenkinsci.test.acceptance.po.Slave;
import org.jenkinsci.test.acceptance.po.View;
import org.jenkinsci.test.acceptance.slave.SlaveController;
import org.jenkinsci.test.acceptance.utils.mail.MailService;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;

Expand All @@ -38,13 +42,64 @@
import static java.util.Collections.*;
import static org.junit.Assert.*;

/**
* Base class for tests of the static analysis plug-ins.
*/
public abstract class AbstractAnalysisTest extends AbstractJUnitTest {
/** Configuration of the mailing in Jenkins global configuration screen. */
@Inject
private MailerGlobalConfig mailer;

/** Mock that verifies that mails have been sent by Jenkins email-ext plugin. */
@Inject
private MailService mail;

/** Provides slaves for tests that need build slaves. */
@Inject
private SlaveController slaveController;

/**
* For slave test
* Configures the mailer with default values required for the mock.
*/
@Inject
SlaveController slaveController;
protected void setUpMailer() {
jenkins.configure();
mailer.setupDefaults();
jenkins.save();
}

/**
* Configures the mail notification of the email-ext plug-in.
*
* @param job the job to configure
* @param subject subject of the mail
* @param body body of the mail
*/
protected void configureEmailNotification(final FreeStyleJob job, final String subject, final String body) {
job.configure();
EmailExtPublisher pub = job.addPublisher(EmailExtPublisher.class);
pub.subject.set(subject);
pub.setRecipient("dev@example.com");
pub.body.set(body);
job.save();
}

/**
* Verifies that Jenkins sent a mail with the specified content.
*
* @param subject the expected subject of the mail
* @param body the expected body of the mail
*/
protected void verifyReceivedMail(final String subject, final String body) {
try {
mail.assertMail(Pattern.compile(subject), "dev@example.com", Pattern.compile(body));
}
catch (MessagingException e) {
throw new IllegalStateException("Mailer exception", e);
}
catch (IOException e) {
throw new IllegalStateException("Mailer exception", e);
}
}

/**
* Set up a Job of a certain type with a given resource and a publisher which can be configured by providing a
Expand Down
34 changes: 32 additions & 2 deletions src/test/java/plugins/CheckStylePluginTest.java
Expand Up @@ -38,6 +38,36 @@
*/
@WithPlugins("checkstyle")
public class CheckStylePluginTest extends AbstractAnalysisTest {
private static final String PATTERN_WITH_776_WARNINGS = "checkstyle-result.xml";
private static final String FILE_WITH_776_WARNINGS = "/checkstyle_plugin/" + PATTERN_WITH_776_WARNINGS;

/**
* Checks that the plug-in sends a mail after a build has been failed. The content of the mail
* contains several tokens that should be expanded in the mail with the correct vaules.
*/
@Test @WithPlugins("email-ext") @Bug("25501")
public void should_send_mail_with_expanded_tokens() {
setUpMailer();

AnalysisConfigurator<CheckstyleFreestyleBuildSettings> buildConfigurator =
new AnalysisConfigurator<CheckstyleFreestyleBuildSettings>() {
@Override
public void configure(CheckstyleFreestyleBuildSettings settings) {
settings.setBuildFailedTotalAll("0");
settings.pattern.set(PATTERN_WITH_776_WARNINGS);
}
};
FreeStyleJob job = setupJob(FILE_WITH_776_WARNINGS, FreeStyleJob.class,
CheckstyleFreestyleBuildSettings.class, buildConfigurator);

configureEmailNotification(job, "Checkstyle: ${CHECKSTYLE_RESULT}",
"Checkstyle: ${CHECKSTYLE_COUNT}-${CHECKSTYLE_FIXED}-${CHECKSTYLE_NEW}");

job.startBuild().shouldFail();

verifyReceivedMail("Checkstyle: FAILURE", "Checkstyle: 776-0-776");
}

/**
* Builds a job with checkstyle enabled and verifies that checkstyle details are displayed in the build overview.
*/
Expand Down Expand Up @@ -344,10 +374,10 @@ private FreeStyleJob setUpCheckstyleFreestyleJob() {
AnalysisConfigurator<CheckstyleFreestyleBuildSettings> buildConfigurator = new AnalysisConfigurator<CheckstyleFreestyleBuildSettings>() {
@Override
public void configure(CheckstyleFreestyleBuildSettings settings) {
settings.pattern.set("checkstyle-result.xml");
settings.pattern.set(PATTERN_WITH_776_WARNINGS);
}
};
FreeStyleJob job = setupJob("/checkstyle_plugin/checkstyle-result.xml", FreeStyleJob.class,
FreeStyleJob job = setupJob(FILE_WITH_776_WARNINGS, FreeStyleJob.class,
CheckstyleFreestyleBuildSettings.class, buildConfigurator);
return job;
}
Expand Down
57 changes: 45 additions & 12 deletions src/test/java/plugins/FindbugsPluginTest.java
Expand Up @@ -23,12 +23,22 @@
*/
package plugins;

import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.concurrent.ExecutionException;

import org.jenkinsci.test.acceptance.junit.Bug;
import org.jenkinsci.test.acceptance.junit.SmokeTest;
import org.jenkinsci.test.acceptance.junit.WithPlugins;
import org.jenkinsci.test.acceptance.plugins.analysis_core.AnalysisConfigurator;
import org.jenkinsci.test.acceptance.plugins.dashboard_view.DashboardView;
import org.jenkinsci.test.acceptance.plugins.findbugs.*;
import org.jenkinsci.test.acceptance.plugins.findbugs.FindbugsAction;
import org.jenkinsci.test.acceptance.plugins.findbugs.FindbugsColumn;
import org.jenkinsci.test.acceptance.plugins.findbugs.FindbugsFreestyleBuildSettings;
import org.jenkinsci.test.acceptance.plugins.findbugs.FindbugsMavenBuildSettings;
import org.jenkinsci.test.acceptance.plugins.findbugs.FindbugsWarningsPerProjectDashboardViewPortlet;
import org.jenkinsci.test.acceptance.plugins.maven.MavenModuleSet;
import org.jenkinsci.test.acceptance.po.Build;
import org.jenkinsci.test.acceptance.po.FreeStyleJob;
Expand All @@ -41,18 +51,41 @@
import org.openqa.selenium.WebElement;
import org.xml.sax.SAXException;

import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.concurrent.ExecutionException;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.jenkinsci.test.acceptance.Matchers.hasAction;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.*;
import static org.jenkinsci.test.acceptance.Matchers.*;

@WithPlugins("findbugs")
public class FindbugsPluginTest extends AbstractAnalysisTest {
private static final String PATTERN_WITH_6_WARNINGS = "findbugsXml.xml";
private static final String FILE_WITH_6_WARNINGS = "/findbugs_plugin/" + PATTERN_WITH_6_WARNINGS;

/**
* Checks that the plug-in sends a mail after a build has been failed. The content of the mail
* contains several tokens that should be expanded in the mail with the correct vaules.
*/
@Test @WithPlugins("email-ext") @Bug("25501")
public void should_send_mail_with_expanded_tokens() {
setUpMailer();

AnalysisConfigurator<FindbugsFreestyleBuildSettings> buildConfigurator =
new AnalysisConfigurator<FindbugsFreestyleBuildSettings>() {
@Override
public void configure(FindbugsFreestyleBuildSettings settings) {
settings.setBuildFailedTotalAll("0");
settings.pattern.set(PATTERN_WITH_6_WARNINGS);
}
};
FreeStyleJob job = setupJob(FILE_WITH_6_WARNINGS, FreeStyleJob.class,
FindbugsFreestyleBuildSettings.class, buildConfigurator);

configureEmailNotification(job, "FindBugs: ${FINDBUGS_RESULT}",
"FindBugs: ${FINDBUGS_COUNT}-${FINDBUGS_FIXED}-${FINDBUGS_NEW}");

job.startBuild().shouldFail();

verifyReceivedMail("FindBugs: FAILURE", "FindBugs: 6-0-6");
}

/**
* Builds a job and checks if warnings of Findbugs are displayed. Checks as well, if the content of the tabs is
Expand Down Expand Up @@ -310,10 +343,10 @@ private FreeStyleJob setUpFindbugsFreestyleJob() {
AnalysisConfigurator<FindbugsFreestyleBuildSettings> buildConfigurator = new AnalysisConfigurator<FindbugsFreestyleBuildSettings>() {
@Override
public void configure(FindbugsFreestyleBuildSettings settings) {
settings.pattern.set("findbugsXml.xml");
settings.pattern.set(PATTERN_WITH_6_WARNINGS);
}
};
FreeStyleJob job = setupJob("/findbugs_plugin/findbugsXml.xml", FreeStyleJob.class,
FreeStyleJob job = setupJob(FILE_WITH_6_WARNINGS, FreeStyleJob.class,
FindbugsFreestyleBuildSettings.class, buildConfigurator);
return job;
}
Expand Down
39 changes: 34 additions & 5 deletions src/test/java/plugins/PmdPluginTest.java
Expand Up @@ -37,7 +37,36 @@
@WithPlugins("pmd")
public class PmdPluginTest extends AbstractAnalysisTest {
private static final String PMD_FILE_WITHOUT_WARNINGS = "/pmd_plugin/pmd.xml";
private static final String PMD_FILE_WITH_WARNINGS = "/pmd_plugin/pmd-warnings.xml";

private static final String PATTERN_WITH_9_WARNINGS = "pmd-warnings.xml";
private static final String FILE_WITH_9_WARNINGS = "/pmd_plugin/" + PATTERN_WITH_9_WARNINGS;

/**
* Checks that the plug-in sends a mail after a build has been failed. The content of the mail
* contains several tokens that should be expanded in the mail with the correct vaules.
*/
@Test @WithPlugins("email-ext") @Bug("25501")
public void should_send_mail_with_expanded_tokens() {
setUpMailer();

AnalysisConfigurator<PmdFreestyleSettings> buildConfigurator =
new AnalysisConfigurator<PmdFreestyleSettings>() {
@Override
public void configure(PmdFreestyleSettings settings) {
settings.setBuildFailedTotalAll("0");
settings.pattern.set(PATTERN_WITH_9_WARNINGS);
}
};
FreeStyleJob job = setupJob(FILE_WITH_9_WARNINGS, FreeStyleJob.class,
PmdFreestyleSettings.class, buildConfigurator);

configureEmailNotification(job, "PMD: ${PMD_RESULT}",
"PMD: ${PMD_COUNT}-${PMD_FIXED}-${PMD_NEW}");

job.startBuild().shouldFail();

verifyReceivedMail("PMD: FAILURE", "PMD: 9-0-9");
}

/**
* Configures a job with PMD and checks that the parsed PMD file does not contain warnings.
Expand Down Expand Up @@ -104,7 +133,7 @@ public void configure(PmdFreestyleSettings settings) {
}
};

FreeStyleJob job = createFreeStyleJob(PMD_FILE_WITH_WARNINGS, buildConfigurator);
FreeStyleJob job = createFreeStyleJob(FILE_WITH_9_WARNINGS, buildConfigurator);

Build lastBuild = buildJobWithSuccess(job);
assertThat(lastBuild, hasAction("PMD Warnings"));
Expand Down Expand Up @@ -168,7 +197,7 @@ public void configure(PmdFreestyleSettings settings) {
}
};

FreeStyleJob job = createFreeStyleJob(PMD_FILE_WITH_WARNINGS, buildConfigurator);
FreeStyleJob job = createFreeStyleJob(FILE_WITH_9_WARNINGS, buildConfigurator);

Build build = buildJobWithSuccess(job);
String apiUrl = "pmdResult/api/xml?depth=0";
Expand Down Expand Up @@ -231,7 +260,7 @@ public void configure(PmdFreestyleSettings settings) {
settings.setUseDeltaValues(true);
}
};
FreeStyleJob job = createFreeStyleJob(PMD_FILE_WITH_WARNINGS, buildConfigurator);
FreeStyleJob job = createFreeStyleJob(FILE_WITH_9_WARNINGS, buildConfigurator);

Build build = buildJobAndWait(job);
assertThat(build.isUnstable(), is(true));
Expand Down Expand Up @@ -381,7 +410,7 @@ public void configure(PmdFreestyleSettings settings) {
settings.pattern.set("pmd-warnings.xml");
}
};
return createFreeStyleJob(PMD_FILE_WITH_WARNINGS, buildConfigurator);
return createFreeStyleJob(FILE_WITH_9_WARNINGS, buildConfigurator);
}

}
32 changes: 32 additions & 0 deletions src/test/java/plugins/TaskScannerPluginTest.java
Expand Up @@ -36,6 +36,38 @@
*/
@WithPlugins("tasks")
public class TaskScannerPluginTest extends AbstractAnalysisTest {
/**
* Checks that the plug-in sends a mail after a build has been failed. The content of the mail
* contains several tokens that should be expanded in the mail with the correct vaules.
*/
@Test @WithPlugins("email-ext") @Bug("25501")
public void should_send_mail_with_expanded_tokens() {
setUpMailer();

AnalysisConfigurator<TaskScannerFreestyleBuildSettings> buildConfigurator =
new AnalysisConfigurator<TaskScannerFreestyleBuildSettings>() {
@Override
public void configure(TaskScannerFreestyleBuildSettings settings) {
settings.setPattern("**/*.java");
settings.setExcludePattern("**/*Test.java");
settings.setHighPriorityTags("FIXME");
settings.setNormalPriorityTags("TODO");
settings.setLowPriorityTags("@Deprecated");
settings.setIgnoreCase(false);
settings.setBuildFailedTotalAll("0");
}
};

FreeStyleJob job = setupJob("/tasks_plugin/fileset1", FreeStyleJob.class,
TaskScannerFreestyleBuildSettings.class, buildConfigurator);

configureEmailNotification(job, "Tasks: ${TASKS_RESULT}",
"Tasks: ${TASKS_COUNT}-${TASKS_FIXED}-${TASKS_NEW}");

job.startBuild().shouldFail();

verifyReceivedMail("Tasks: FAILURE", "Tasks: 6-0-6");
}

/**
* This tests objective is to verify the basic functionality of the Task
Expand Down

0 comments on commit 0fb931e

Please sign in to comment.