Skip to content

Commit 1cf7485

Browse files
committed
tests
1 parent 56f7d0d commit 1cf7485

File tree

4 files changed

+170
-54
lines changed

4 files changed

+170
-54
lines changed

pipeline-maven-ui-tests/pom.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
<name>UI Tests of Pipeline Maven Integration Plugin</name>
3737

3838
<properties>
39-
<argLine>-Djava.awt.headless=true -Xmx1024m -Djenkins.test.timeout=1000 --add-opens java.base/sun.reflect.annotation=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED</argLine>
39+
<argLine>-Djava.awt.headless=true -Xmx1024m -Djenkins.test.timeout=1500 --add-opens java.base/sun.reflect.annotation=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED</argLine>
4040
<browser>firefox-container</browser>
4141
</properties>
4242

@@ -112,7 +112,6 @@
112112
<dependency>
113113
<groupId>org.junit.vintage</groupId>
114114
<artifactId>junit-vintage-engine</artifactId>
115-
<version>${junit.version}</version>
116115
<scope>test</scope>
117116
</dependency>
118117
</dependencies>

pipeline-maven/src/main/java/org/jenkinsci/plugins/pipeline/maven/publishers/WarningsPublisher.java

Lines changed: 57 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import hudson.FilePath;
99
import hudson.model.BuildableItem;
1010
import hudson.model.Item;
11+
import hudson.model.Run;
1112
import hudson.model.TaskListener;
1213
import hudson.util.ComboBoxModel;
1314
import hudson.util.FormValidation;
@@ -43,6 +44,7 @@
4344
import org.jenkinsci.plugins.pipeline.maven.Messages;
4445
import org.jenkinsci.plugins.pipeline.maven.util.XmlUtils;
4546
import org.jenkinsci.plugins.variant.OptionalExtension;
47+
import org.jenkinsci.plugins.workflow.graph.FlowNode;
4648
import org.jenkinsci.plugins.workflow.steps.StepContext;
4749
import org.jenkinsci.plugins.workflow.steps.StepExecution;
4850
import org.kohsuke.stapler.AncestorInPath;
@@ -210,13 +212,13 @@ public void process(@NonNull StepContext context, @NonNull Element mavenSpyLogsE
210212
return;
211213
}
212214

213-
perform(List.of(new MavenConsole()), context, listener, "Maven console", step -> {});
214-
perform(List.of(new Java(), new JavaDoc()), context, listener, "Java and JavaDoc", step -> {
215+
perform(List.of(maven(context)), context, listener, "Maven console", step -> {});
216+
perform(java(context), context, listener, "Java and JavaDoc", step -> {
215217
if (javaIgnorePatterns != null && !javaIgnorePatterns.isEmpty()) {
216218
step.setFilters(List.of(new ExcludeFile(javaIgnorePatterns)));
217219
}
218220
});
219-
perform(List.of(taskScanner()), context, listener, "Open tasks", step -> {});
221+
perform(List.of(taskScanner(context)), context, listener, "Open tasks", step -> {});
220222
// TODO: PMD
221223
/*
222224
Map pmdArguments = [tool: pmdParser(pattern: '* * /target/* * /pmd.xml'),
@@ -245,8 +247,8 @@ public void process(@NonNull StepContext context, @NonNull Element mavenSpyLogsE
245247
if (spotbugsEvents.isEmpty()) {
246248
if (LOGGER.isLoggable(Level.FINE)) {
247249
listener.getLogger()
248-
.println("[withMaven] warningsPublisher - No " + SPOTBUGS_GROUP_ID + ":" + SPOTBUGS_ID + ":" + SPOTBUGS_GOAL
249-
+ " execution found");
250+
.println("[withMaven] warningsPublisher - No " + SPOTBUGS_GROUP_ID + ":" + SPOTBUGS_ID + ":"
251+
+ SPOTBUGS_GOAL + " execution found");
250252
}
251253
} else {
252254
processBugs(spotbugsEvents, "spotbugs", "spotbugsXml.xml", context, listener);
@@ -287,7 +289,8 @@ private void processBugs(
287289
}
288290

289291
String resultFile = xmlOutputDirectory + File.separator + reportFilename;
290-
tools.add(spotBugs(mavenArtifact, pluginInvocation, XmlUtils.getPathInWorkspace(resultFile, workspace)));
292+
tools.add(spotBugs(
293+
context, mavenArtifact, pluginInvocation, XmlUtils.getPathInWorkspace(resultFile, workspace)));
291294
}
292295

293296
perform(tools, context, listener, kind, step -> {
@@ -342,25 +345,59 @@ private void perform(
342345
}
343346
}
344347

345-
private OpenTasks taskScanner() {
346-
OpenTasks scanner = new OpenTasks();
347-
scanner.setIncludePattern(tasksIncludePattern);
348-
scanner.setExcludePattern(tasksExcludePattern);
349-
scanner.setHighTags(highPriorityTaskIdentifiers);
350-
scanner.setNormalTags(normalPriorityTaskIdentifiers);
351-
return scanner;
348+
private MavenConsole maven(StepContext context) throws IOException, InterruptedException {
349+
MavenConsole tool = new MavenConsole();
350+
String name = computeName(tool, context);
351+
tool.setId(toId(name));
352+
tool.setName(name);
353+
return tool;
354+
}
355+
356+
private List<Tool> java(StepContext context) throws IOException, InterruptedException {
357+
Java java = new Java();
358+
String name = computeName(java, context);
359+
java.setId(toId(name));
360+
java.setName(name);
361+
JavaDoc javadoc = new JavaDoc();
362+
name = computeName(javadoc, context);
363+
javadoc.setId(toId(name));
364+
javadoc.setName(name);
365+
return List.of(java, javadoc);
366+
}
367+
368+
private OpenTasks taskScanner(StepContext context) throws IOException, InterruptedException {
369+
OpenTasks tool = new OpenTasks();
370+
String name = computeName(tool, context);
371+
tool.setId(toId(name));
372+
tool.setName(name);
373+
tool.setIncludePattern(tasksIncludePattern);
374+
tool.setExcludePattern(tasksExcludePattern);
375+
tool.setHighTags(highPriorityTaskIdentifiers);
376+
tool.setNormalTags(normalPriorityTaskIdentifiers);
377+
return tool;
352378
}
353379

354380
private SpotBugs spotBugs(
381+
StepContext context,
355382
MavenArtifact mavenArtifact,
356383
MavenSpyLogProcessor.PluginInvocation pluginInvocation,
357-
String spotBugsReportFile) {
358-
SpotBugs spotBugs = new SpotBugs();
359-
String name = spotBugs.getDescriptor().getName() + " " + mavenArtifact.getId() + " " + pluginInvocation.getId();
360-
spotBugs.setId(name.replaceAll("[^\\p{Alnum}-_.]", "_"));
361-
spotBugs.setName(name);
362-
spotBugs.setPattern(spotBugsReportFile);
363-
return spotBugs;
384+
String spotBugsReportFile)
385+
throws IOException, InterruptedException {
386+
SpotBugs tool = new SpotBugs();
387+
String name = computeName(tool, context) + " " + mavenArtifact.getId() + " " + pluginInvocation.getId();
388+
tool.setId(toId(name));
389+
tool.setName(name);
390+
tool.setPattern(spotBugsReportFile);
391+
return tool;
392+
}
393+
394+
private String computeName(Tool tool, StepContext context) throws IOException, InterruptedException {
395+
return tool.getDescriptor().getName() + " " + context.get(Run.class).toString() + " "
396+
+ context.get(FlowNode.class).getId();
397+
}
398+
399+
private String toId(String name) {
400+
return name.replaceAll("[^\\p{Alnum}-_.]", "_");
364401
}
365402

366403
@Symbol("warningsPublisher")

pipeline-maven/src/test/java/org/jenkinsci/plugins/pipeline/maven/WithMavenStepOnMasterTest.java

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -241,15 +241,6 @@ public void maven_build_no_traceability() throws Exception {
241241
"[withMaven] junitPublisher - Archive test results for Maven artifact jenkins.mvn.test:mono-module-maven-app:jar:0.1-SNAPSHOT "
242242
+ "generated by maven-failsafe-plugin:integration-test",
243243
build);
244-
245-
// verify Task Scanner is called for jenkins.mvn.test:mono-module-maven-app
246-
// TODO: replace with warningNG
247-
// jenkinsRule.assertLogContains("[withMaven] openTasksPublisher - Scan Tasks
248-
// for Maven artifact jenkins.mvn.test:mono-module-maven-app:jar:0.1-SNAPSHOT",
249-
// build);
250-
// TasksResultAction tasksResultAction =
251-
// build.getAction(TasksResultAction.class);
252-
// assertThat(tasksResultAction.getProjectActions()).hasSize(1);
253244
}
254245

255246
@Issue("JENKINS-70543")
@@ -381,15 +372,6 @@ public void maven_build_jar_project_on_master_succeeds() throws Exception {
381372
"[withMaven] junitPublisher - Archive test results for Maven artifact jenkins.mvn.test:mono-module-maven-app:jar:0.1-SNAPSHOT "
382373
+ "generated by maven-failsafe-plugin:integration-test",
383374
build);
384-
385-
// verify Task Scanner is called for jenkins.mvn.test:mono-module-maven-app
386-
// TODO: replace with warningNg
387-
// jenkinsRule.assertLogContains("[withMaven] openTasksPublisher - Scan Tasks
388-
// for Maven artifact jenkins.mvn.test:mono-module-maven-app:jar:0.1-SNAPSHOT",
389-
// build);
390-
// TasksResultAction tasksResultAction =
391-
// build.getAction(TasksResultAction.class);
392-
// assertThat(tasksResultAction.getProjectActions()).hasSize(1);
393375
}
394376

395377
@Issue("JENKINS-48264")
@@ -563,14 +545,6 @@ public void maven_build_maven_jar_with_flatten_pom_project_on_master_succeeds()
563545
jenkinsRule.assertLogContains(
564546
"[withMaven] junitPublisher - Archive test results for Maven artifact jenkins.mvn.test:maven-jar-with-flattened-pom:jar:0.1-SNAPSHOT generated by",
565547
build);
566-
567-
// verify Task Scanner is called for
568-
// jenkins.mvn.test:maven-jar-with-flattened-pom
569-
// TODO: replace with warningNgPUblisher
570-
// jenkinsRule.assertLogContains("[withMaven] openTasksPublisher - Scan Tasks
571-
// for Maven artifact
572-
// jenkins.mvn.test:maven-jar-with-flattened-pom:jar:0.1-SNAPSHOT in source
573-
// directory", build);
574548
}
575549

576550
@Test
@@ -628,12 +602,6 @@ public void maven_build_maven_hpi_project_on_master_succeeds() throws Exception
628602
jenkinsRule.assertLogContains(
629603
"[withMaven] junitPublisher - Archive test results for Maven artifact jenkins.mvn.test:test-jenkins-hpi:hpi:0.1-SNAPSHOT generated by",
630604
build);
631-
632-
// verify Task Scanner is called for jenkins.mvn.test:test-jenkins-hpi
633-
// TODO: replace with warningNgPublisher
634-
// jenkinsRule.assertLogContains("[withMaven] openTasksPublisher - Scan Tasks
635-
// for Maven artifact jenkins.mvn.test:test-jenkins-hpi:hpi:0.1-SNAPSHOT in
636-
// source directory", build);
637605
}
638606

639607
@Issue("JENKINS-43678")
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
package org.jenkinsci.plugins.pipeline.maven.publishers;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import hudson.model.Result;
6+
import io.jenkins.plugins.analysis.core.model.ResultAction;
7+
import java.util.List;
8+
import org.jenkinsci.plugins.pipeline.maven.AbstractIntegrationTest;
9+
import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition;
10+
import org.jenkinsci.plugins.workflow.job.WorkflowJob;
11+
import org.jenkinsci.plugins.workflow.job.WorkflowRun;
12+
import org.junit.jupiter.api.Test;
13+
14+
public class WarningsPublisherTest extends AbstractIntegrationTest {
15+
16+
@Test
17+
public void maven_build_jar_with_maven_succeeds() throws Exception {
18+
loadMavenJarProjectInGitRepo(this.gitRepoRule);
19+
20+
// @formatter:off
21+
String pipelineScript = "node() {\n" +
22+
" git($/" + gitRepoRule.toString() + "/$)\n" +
23+
" withMaven(traceability: true) {\n" +
24+
" if (isUnix()) {\n" +
25+
" sh 'mvn package verify'\n" +
26+
" } else {\n" +
27+
" bat 'mvn package verify'\n" +
28+
" }\n" +
29+
" }\n" +
30+
"}";
31+
// @formatter:on
32+
33+
WorkflowJob pipeline = jenkinsRule.createProject(WorkflowJob.class, "tasks");
34+
pipeline.setDefinition(new CpsFlowDefinition(pipelineScript, true));
35+
WorkflowRun build = jenkinsRule.assertBuildStatus(Result.SUCCESS, pipeline.scheduleBuild2(0));
36+
37+
jenkinsRule.assertLogContains("[withMaven] warningsPublisher - Processing Maven console warnings", build);
38+
List<ResultAction> resultActions = build.getActions(ResultAction.class);
39+
assertThat(resultActions).hasSize(4);
40+
ResultAction resultAction = resultActions.get(0);
41+
assertThat(resultAction.getProjectActions()).hasSize(1);
42+
assertThat(resultAction.getQualityGateResult()).isNotNull();
43+
assertThat(resultAction.getResult().getTotalSize()).isEqualTo(2);
44+
}
45+
46+
@Test
47+
public void maven_build_jar_with_java_javadoc_succeeds() throws Exception {
48+
loadMavenJarProjectInGitRepo(this.gitRepoRule);
49+
50+
// @formatter:off
51+
String pipelineScript = "node() {\n" +
52+
" git($/" + gitRepoRule.toString() + "/$)\n" +
53+
" withMaven(traceability: true) {\n" +
54+
" if (isUnix()) {\n" +
55+
" sh 'mvn package verify'\n" +
56+
" } else {\n" +
57+
" bat 'mvn package verify'\n" +
58+
" }\n" +
59+
" }\n" +
60+
"}";
61+
// @formatter:on
62+
63+
WorkflowJob pipeline = jenkinsRule.createProject(WorkflowJob.class, "tasks");
64+
pipeline.setDefinition(new CpsFlowDefinition(pipelineScript, true));
65+
WorkflowRun build = jenkinsRule.assertBuildStatus(Result.SUCCESS, pipeline.scheduleBuild2(0));
66+
67+
jenkinsRule.assertLogContains("[withMaven] warningsPublisher - Processing Java and JavaDoc warnings", build);
68+
List<ResultAction> resultActions = build.getActions(ResultAction.class);
69+
assertThat(resultActions).hasSize(4);
70+
ResultAction resultAction = resultActions.get(1);
71+
assertThat(resultAction.getProjectActions()).hasSize(1);
72+
assertThat(resultAction.getQualityGateResult()).isNotNull();
73+
assertThat(resultAction.getResult().getTotalSize()).isEqualTo(0);
74+
resultAction = resultActions.get(2);
75+
assertThat(resultAction.getProjectActions()).hasSize(1);
76+
assertThat(resultAction.getQualityGateResult()).isNotNull();
77+
assertThat(resultAction.getResult().getTotalSize()).isEqualTo(0);
78+
}
79+
80+
@Test
81+
public void maven_build_jar_with_tasks_succeeds() throws Exception {
82+
loadMavenJarProjectInGitRepo(this.gitRepoRule);
83+
84+
// @formatter:off
85+
String pipelineScript = "node() {\n" +
86+
" git($/" + gitRepoRule.toString() + "/$)\n" +
87+
" withMaven(traceability: true) {\n" +
88+
" if (isUnix()) {\n" +
89+
" sh 'mvn package verify'\n" +
90+
" } else {\n" +
91+
" bat 'mvn package verify'\n" +
92+
" }\n" +
93+
" }\n" +
94+
"}";
95+
// @formatter:on
96+
97+
WorkflowJob pipeline = jenkinsRule.createProject(WorkflowJob.class, "tasks");
98+
pipeline.setDefinition(new CpsFlowDefinition(pipelineScript, true));
99+
WorkflowRun build = jenkinsRule.assertBuildStatus(Result.SUCCESS, pipeline.scheduleBuild2(0));
100+
101+
jenkinsRule.assertLogContains("[withMaven] warningsPublisher - Processing Open tasks warnings", build);
102+
List<ResultAction> resultActions = build.getActions(ResultAction.class);
103+
assertThat(resultActions).hasSize(4);
104+
ResultAction resultAction = resultActions.get(3);
105+
assertThat(resultAction.getProjectActions()).hasSize(1);
106+
assertThat(resultAction.getQualityGateResult()).isNotNull();
107+
assertThat(resultAction.getResult().getTotalHighPrioritySize()).isEqualTo(0);
108+
assertThat(resultAction.getResult().getTotalNormalPrioritySize()).isEqualTo(1);
109+
}
110+
111+
// TODO: test findbugs/spotbugs
112+
}

0 commit comments

Comments
 (0)