Search in sources :

Example 11 with FreeStyleJob

use of org.jenkinsci.test.acceptance.po.FreeStyleJob in project acceptance-test-harness by jenkinsci.

the class AnalysisCollectorPluginTest method addAndConfigureWarningsPublisher.

private void addAndConfigureWarningsPublisher(final FreeStyleJob job) {
    WarningsBuildSettings warningsSettings = job.addPublisher(WarningsBuildSettings.class);
    AnalysisConfigurator<WarningsBuildSettings> warningsConfigurator = settings -> {
        settings.addWorkspaceScanner("Java Compiler (javac)", "**/*");
        settings.addWorkspaceScanner("JavaDoc Tool", "**/*");
        settings.addWorkspaceScanner("MSBuild", "**/*");
    };
    warningsConfigurator.accept(warningsSettings);
}
Also used : DashboardView(org.jenkinsci.test.acceptance.plugins.dashboard_view.DashboardView) WorkflowMultiBranchJob(org.jenkinsci.test.acceptance.po.WorkflowMultiBranchJob) CoreMatchers(org.hamcrest.CoreMatchers) Arrays(java.util.Arrays) Since(org.jenkinsci.test.acceptance.junit.Since) Issue(org.jvnet.hudson.test.Issue) FindBugsFreestyleSettings(org.jenkinsci.test.acceptance.plugins.findbugs.FindBugsFreestyleSettings) AnalysisAction(org.jenkinsci.test.acceptance.plugins.analysis_core.AnalysisAction) WebElement(org.openqa.selenium.WebElement) WorkflowJob(org.jenkinsci.test.acceptance.po.WorkflowJob) DockerContainerHolder(org.jenkinsci.test.acceptance.docker.DockerContainerHolder) AnalysisGraphConfigurationView(org.jenkinsci.test.acceptance.plugins.analysis_collector.AnalysisGraphConfigurationView) NestedView(org.jenkinsci.test.acceptance.plugins.nested_view.NestedView) Inject(javax.inject.Inject) GitRepo(org.jenkinsci.test.acceptance.plugins.git.GitRepo) Folder(org.jenkinsci.test.acceptance.po.Folder) WarningsPerProjectPortlet(org.jenkinsci.test.acceptance.plugins.analysis_collector.WarningsPerProjectPortlet) Build(org.jenkinsci.test.acceptance.po.Build) AnalysisConfigurator(org.jenkinsci.test.acceptance.plugins.analysis_core.AnalysisConfigurator) Map(java.util.Map) AnalysisPlugin(org.jenkinsci.test.acceptance.plugins.analysis_collector.AnalysisPlugin) ListView(org.jenkinsci.test.acceptance.po.ListView) WithDocker(org.jenkinsci.test.acceptance.junit.WithDocker) AnalysisCollectorColumn(org.jenkinsci.test.acceptance.plugins.analysis_collector.AnalysisCollectorColumn) Description(org.hamcrest.Description) Job(org.jenkinsci.test.acceptance.po.Job) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) WarningsBuildSettings(org.jenkinsci.test.acceptance.plugins.warnings.WarningsBuildSettings) GitBranchSource(org.jenkinsci.test.acceptance.plugins.workflow_multibranch.GitBranchSource) By(org.openqa.selenium.By) Test(org.junit.Test) AnalysisCollectorSettings(org.jenkinsci.test.acceptance.plugins.analysis_collector.AnalysisCollectorSettings) TasksFreestyleSettings(org.jenkinsci.test.acceptance.plugins.tasks.TasksFreestyleSettings) WithCredentials(org.jenkinsci.test.acceptance.junit.WithCredentials) CheckStyleFreestyleSettings(org.jenkinsci.test.acceptance.plugins.checkstyle.CheckStyleFreestyleSettings) FreeStyleJob(org.jenkinsci.test.acceptance.po.FreeStyleJob) AnalysisCollectorAction(org.jenkinsci.test.acceptance.plugins.analysis_collector.AnalysisCollectorAction) NoSuchElementException(org.openqa.selenium.NoSuchElementException) List(java.util.List) MatcherAssert(org.hamcrest.MatcherAssert) Matcher(org.jenkinsci.test.acceptance.Matcher) GitContainer(org.jenkinsci.test.acceptance.docker.fixtures.GitContainer) Matchers(org.jenkinsci.test.acceptance.Matchers) Container(org.jenkinsci.test.acceptance.po.Container) Collections(java.util.Collections) PmdFreestyleSettings(org.jenkinsci.test.acceptance.plugins.pmd.PmdFreestyleSettings) WithPlugins(org.jenkinsci.test.acceptance.junit.WithPlugins) WarningsBuildSettings(org.jenkinsci.test.acceptance.plugins.warnings.WarningsBuildSettings)

Example 12 with FreeStyleJob

use of org.jenkinsci.test.acceptance.po.FreeStyleJob in project acceptance-test-harness by jenkinsci.

the class CheckStylePluginTest method should_show_warnings_per_user.

/**
 * Verifies that blaming of warnings works on agents: creates a new project in a Git repository in a docker
 * container. Registers the same docker container as slave agent to build the project. Uses the recorded build
 * results in checkstyle-result.xml (no actual maven goal is invoked). Verifies that the blame information is
 * correctly assigned for each of the warnings. Also checks, that the age is increased for yet another build.
 */
@Test
@WithPlugins({ "git", "dashboard-view", "analysis-core@1.88-SNAPSHOT", "ssh-slaves" })
@WithDocker
@Issue("JENKINS-6748")
@WithCredentials(credentialType = WithCredentials.SSH_USERNAME_PRIVATE_KEY, values = { CREDENTIALS_ID, CREDENTIALS_KEY })
public void should_show_warnings_per_user() {
    // avoid JENKINS-49026
    jenkins.restart();
    DumbSlave agent = createDockerAgent();
    String gitRepositoryUrl = createGitRepositoryInDockerContainer();
    FreeStyleJob job = createFreeStyleJob(jenkins, null, settings -> settings.pattern.set("**/checkstyle-result.xml"));
    job.configure(() -> {
        job.useScm(GitScm.class).url(gitRepositoryUrl).credentials(CREDENTIALS_ID);
        job.setLabelExpression(agent.getName());
    });
    buildSuccessfulJob(job);
    CheckStyleAction action = new CheckStyleAction(job);
    action.open();
    SortedMap<String, Integer> expectedPeople = new TreeMap<>();
    expectedPeople.put("Unknown authors", 1);
    expectedPeople.put("Jenkins-ATH <jenkins-ath@example.org>", 11);
    assertThat(action.getPeopleTabContents(), is(expectedPeople));
    action.find(By.partialLinkText("Jenkins-ATH")).click();
    assertThat(driver, hasContent("Checkstyle Warnings - Jenkins-ATH"));
    action.open();
    SortedMap<String, String> expectedOrigin = new TreeMap<>();
    expectedOrigin.put("Main.java:0", "-");
    expectedOrigin.put("Main.java:2", "Jenkins-ATH");
    expectedOrigin.put("Main.java:4", "Jenkins-ATH");
    expectedOrigin.put("Main.java:6", "Jenkins-ATH");
    expectedOrigin.put("Main.java:9", "Jenkins-ATH");
    expectedOrigin.put("Main.java:13", "Jenkins-ATH");
    expectedOrigin.put("Main.java:18", "Jenkins-ATH");
    expectedOrigin.put("Main.java:23", "Jenkins-ATH");
    expectedOrigin.put("Main.java:24", "Jenkins-ATH");
    expectedOrigin.put("Main.java:27", "Jenkins-ATH");
    assertThat(action.getOriginTabContentsAsStrings(AUTHOR), is(expectedOrigin));
    assertThatAgeIsAt(action, expectedOrigin, 1);
    buildSuccessfulJob(job);
    assertThatAgeIsAt(action, expectedOrigin, 2);
    GraphConfigurationView view = action.configureTrendGraphForUser();
    view.open();
    view.setUserGraph();
    view.save();
    WebElement graph = find(getUsersTrendGraphXpath());
    assertThat(graph.isDisplayed(), is(true));
    verifyNoAuthors(action, true);
    WebElement nothing = getElement(getUsersTrendGraphXpath());
    assertThat(nothing, nullValue());
    verifyNoAuthors(action, false);
}
Also used : CheckStyleAction(org.jenkinsci.test.acceptance.plugins.checkstyle.CheckStyleAction) GraphConfigurationView(org.jenkinsci.test.acceptance.plugins.analysis_core.GraphConfigurationView) FreeStyleJob(org.jenkinsci.test.acceptance.po.FreeStyleJob) DumbSlave(org.jenkinsci.test.acceptance.po.DumbSlave) TreeMap(java.util.TreeMap) WebElement(org.openqa.selenium.WebElement) Issue(org.jvnet.hudson.test.Issue) WithCredentials(org.jenkinsci.test.acceptance.junit.WithCredentials) Test(org.junit.Test) WithPlugins(org.jenkinsci.test.acceptance.junit.WithPlugins) WithDocker(org.jenkinsci.test.acceptance.junit.WithDocker)

Example 13 with FreeStyleJob

use of org.jenkinsci.test.acceptance.po.FreeStyleJob in project acceptance-test-harness by jenkinsci.

the class CheckStylePluginTest method should_report_new_and_fixed_warnings_in_consecutive_builds.

/**
 * Runs job two times to check if new and fixed warnings are displayed. Afterwards, the first build
 * is deleted and Jenkins is restarted. Then the results of the second build are validated again: the detail
 * pages should then show the same results (see JENKINS-24940).
 */
@Test
@Issue("24940")
public void should_report_new_and_fixed_warnings_in_consecutive_builds() {
    assumeTrue("This test requires a restartable Jenkins", jenkins.canRestart());
    FreeStyleJob job = createFreeStyleJob();
    Build firstBuild = buildJobAndWait(job);
    replaceResource(FILE_FOR_2ND_RUN, job);
    Build lastBuild = buildSuccessfulJob(job);
    assertThatCheckStyleResultExists(job, lastBuild);
    lastBuild.open();
    verifyWarningCounts(lastBuild);
    firstBuild.delete();
    jenkins.restart();
    lastBuild.open();
    verifyWarningCounts(lastBuild);
}
Also used : Build(org.jenkinsci.test.acceptance.po.Build) FreeStyleJob(org.jenkinsci.test.acceptance.po.FreeStyleJob) Issue(org.jvnet.hudson.test.Issue) Test(org.junit.Test)

Example 14 with FreeStyleJob

use of org.jenkinsci.test.acceptance.po.FreeStyleJob in project acceptance-test-harness by jenkinsci.

the class CheckStylePluginTest method should_link_to_source_code_in_real_project.

/**
 * Builds an existing freestyle project using actual maven commands and checks if new warning are displayed. Also
 * verifies that the warnings have links to the actual source code and the source code view shows the affected
 * line.
 */
@Test
public void should_link_to_source_code_in_real_project() {
    FreeStyleJob job = createJob(jenkins, CHECKSTYLE_PLUGIN_ROOT + SAMPLE_CHECKSTYLE_PROJECT, FreeStyleJob.class, CheckStyleFreestyleSettings.class, settings -> settings.pattern.set("target/checkstyle-result.xml"));
    setMavenGoal(job, "clean package checkstyle:checkstyle");
    Build build = buildSuccessfulJob(job);
    assertThatCheckStyleResultExists(job, build);
    build.open();
    CheckStyleAction checkstyle = new CheckStyleAction(build);
    checkstyle.open();
    assertThat(checkstyle.getNumberOfNewWarnings(), is(12));
    SortedMap<String, String> expectedContent = new TreeMap<>();
    expectedContent.put("Main.java:0", "JavadocPackageCheck");
    expectedContent.put("Main.java:2", "HideUtilityClassConstructorCheck");
    expectedContent.put("Main.java:4", "JavadocVariableCheck");
    expectedContent.put("Main.java:6", "FinalParametersCheck");
    expectedContent.put("Main.java:9", "WhitespaceAroundCheck");
    expectedContent.put("Main.java:13", "WhitespaceAroundCheck");
    expectedContent.put("Main.java:18", "WhitespaceAroundCheck");
    expectedContent.put("Main.java:23", "JavadocMethodCheck");
    expectedContent.put("Main.java:24", "MagicNumberCheck");
    expectedContent.put("Main.java:27", "JavadocMethodCheck");
    assertThat(checkstyle.getWarningsTabContents(), is(expectedContent));
    verifySourceLine(checkstyle, "Main.java", 27, "27     public static int return8() {", "Checks the Javadoc of a method or constructor.");
}
Also used : CheckStyleAction(org.jenkinsci.test.acceptance.plugins.checkstyle.CheckStyleAction) Build(org.jenkinsci.test.acceptance.po.Build) FreeStyleJob(org.jenkinsci.test.acceptance.po.FreeStyleJob) TreeMap(java.util.TreeMap) Test(org.junit.Test)

Example 15 with FreeStyleJob

use of org.jenkinsci.test.acceptance.po.FreeStyleJob in project acceptance-test-harness by jenkinsci.

the class CheckStylePluginTest method should_resolve_environment_variables.

/**
 * Verifies that environment variables are expanded in the file name pattern.
 */
@Test
@Issue("JENKINS-30735")
@WithPlugins({ "envinject", "analysis-core@1.77", "checkstyle@3.46" })
public void should_resolve_environment_variables() {
    FreeStyleJob job = createFreeStyleJob(settings -> settings.pattern.set("checkstyle${ENV_DASH}result.xml"));
    job.configure(() -> new EnvInjectConfig.Environment(job).properties.sendKeys("ENV_DASH=-"));
    Build build = buildSuccessfulJob(job);
    assertThatCheckStyleResultExists(job, build);
    CheckStyleAction action = new CheckStyleAction(job);
    assertThatWarningsCountInSummaryIs(action, TOTAL_NUMBER_OF_WARNINGS);
    assertThatNewWarningsCountInSummaryIs(action, TOTAL_NUMBER_OF_WARNINGS);
    assertThat(build.getConsole(), containsRegexp("\\[CHECKSTYLE\\] Searching for all files in .* that match the pattern checkstyle-result.xml\n"));
}
Also used : CheckStyleAction(org.jenkinsci.test.acceptance.plugins.checkstyle.CheckStyleAction) EnvInjectConfig(org.jenkinsci.test.acceptance.plugins.envinject.EnvInjectConfig) Build(org.jenkinsci.test.acceptance.po.Build) FreeStyleJob(org.jenkinsci.test.acceptance.po.FreeStyleJob) Issue(org.jvnet.hudson.test.Issue) Test(org.junit.Test) WithPlugins(org.jenkinsci.test.acceptance.junit.WithPlugins)

Aggregations

FreeStyleJob (org.jenkinsci.test.acceptance.po.FreeStyleJob)263 Test (org.junit.Test)242 AbstractJUnitTest (org.jenkinsci.test.acceptance.junit.AbstractJUnitTest)170 Build (org.jenkinsci.test.acceptance.po.Build)105 DockerTest (org.jenkinsci.test.acceptance.junit.DockerTest)51 WithPlugins (org.jenkinsci.test.acceptance.junit.WithPlugins)37 Issue (org.jvnet.hudson.test.Issue)32 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)23 JobDslBuildStep (org.jenkinsci.test.acceptance.plugins.job_dsl.JobDslBuildStep)23 SmokeTest (org.jenkinsci.test.acceptance.junit.SmokeTest)21 Resource (org.jenkinsci.test.acceptance.junit.Resource)19 DashboardView (org.jenkinsci.test.acceptance.plugins.dashboard_view.DashboardView)19 File (java.io.File)17 DockerContainer (org.jenkinsci.test.acceptance.docker.DockerContainer)17 WithCredentials (org.jenkinsci.test.acceptance.junit.WithCredentials)17 PublishGlobalPublisher (org.jenkinsci.test.acceptance.plugins.publish_over.PublishGlobalPublisher)17 SvnContainer (org.jenkinsci.test.acceptance.docker.fixtures.SvnContainer)16 SubversionScm (org.jenkinsci.test.acceptance.plugins.subversion.SubversionScm)13 ListView (org.jenkinsci.test.acceptance.po.ListView)12 Pattern (java.util.regex.Pattern)11