Skip to content

Commit aa578a2

Browse files
authored
chore: improve configuration coverage (#911)
1 parent aef18b8 commit aa578a2

File tree

7 files changed

+331
-6
lines changed

7 files changed

+331
-6
lines changed

pipeline-maven/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,12 @@
379379
<artifactId>workflow-scm-step</artifactId>
380380
<scope>test</scope>
381381
</dependency>
382+
<dependency>
383+
<groupId>org.jenkins-ci.plugins.workflow</groupId>
384+
<artifactId>workflow-step-api</artifactId>
385+
<classifier>tests</classifier>
386+
<scope>test</scope>
387+
</dependency>
382388
<dependency>
383389
<groupId>org.jenkins-ci.plugins.workflow</groupId>
384390
<artifactId>workflow-support</artifactId>

pipeline-maven/src/main/java/org/jenkinsci/plugins/pipeline/maven/WithMavenStep.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,10 @@ public Boolean isTraceability() {
174174
return traceability;
175175
}
176176

177+
public Boolean getTraceability() {
178+
return isTraceability();
179+
}
180+
177181
@DataBoundSetter
178182
public void setTraceability(final Boolean traceability) {
179183
this.traceability = traceability;

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

Lines changed: 98 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,17 @@
99
import io.jenkins.plugins.casc.ConfigurationAsCode;
1010
import io.jenkins.plugins.casc.ConfigurationContext;
1111
import io.jenkins.plugins.casc.ConfiguratorRegistry;
12+
import org.jenkinsci.plugins.pipeline.maven.publishers.ConcordionTestsPublisher;
13+
import org.jenkinsci.plugins.pipeline.maven.publishers.DependenciesFingerprintPublisher;
14+
import org.jenkinsci.plugins.pipeline.maven.publishers.FindbugsAnalysisPublisher;
15+
import org.jenkinsci.plugins.pipeline.maven.publishers.GeneratedArtifactsPublisher;
16+
import org.jenkinsci.plugins.pipeline.maven.publishers.InvokerRunsPublisher;
17+
import org.jenkinsci.plugins.pipeline.maven.publishers.JGivenTestsPublisher;
18+
import org.jenkinsci.plugins.pipeline.maven.publishers.JunitTestsPublisher;
1219
import org.jenkinsci.plugins.pipeline.maven.publishers.MavenLinkerPublisher2;
20+
import org.jenkinsci.plugins.pipeline.maven.publishers.PipelineGraphPublisher;
21+
import org.jenkinsci.plugins.pipeline.maven.publishers.SpotBugsAnalysisPublisher;
22+
import org.jenkinsci.plugins.pipeline.maven.publishers.TasksScannerPublisher;
1323
import org.junit.jupiter.api.Test;
1424
import org.jvnet.hudson.test.JenkinsRule;
1525
import org.jvnet.hudson.test.junit.jupiter.WithJenkins;
@@ -121,11 +131,94 @@ public void should_support_publishers_configuration(JenkinsRule r) throws Except
121131
GlobalPipelineMavenConfig config =
122132
r.jenkins.getExtensionList(GlobalPipelineMavenConfig.class).get(0);
123133

124-
assertThat(config.getPublisherOptions()).hasSize(1);
125-
assertThat(config.getPublisherOptions().get(0)).isInstanceOf(MavenLinkerPublisher2.class);
126-
MavenLinkerPublisher2 publisher =
127-
(MavenLinkerPublisher2) config.getPublisherOptions().get(0);
128-
assertThat(publisher.isDisabled()).isTrue();
134+
assertThat(config.getPublisherOptions()).hasSize(11);
135+
136+
assertThat(config.getPublisherOptions().get(0)).isInstanceOf(ConcordionTestsPublisher.class);
137+
ConcordionTestsPublisher concordionPublisher =
138+
(ConcordionTestsPublisher) config.getPublisherOptions().get(0);
139+
assertThat(concordionPublisher.isDisabled()).isTrue();
140+
141+
assertThat(config.getPublisherOptions().get(1)).isInstanceOf(DependenciesFingerprintPublisher.class);
142+
DependenciesFingerprintPublisher dependenciesFingerprintPublisher =
143+
(DependenciesFingerprintPublisher) config.getPublisherOptions().get(1);
144+
assertThat(dependenciesFingerprintPublisher.isDisabled()).isTrue();
145+
assertThat(dependenciesFingerprintPublisher.isIncludeReleaseVersions()).isTrue();
146+
assertThat(dependenciesFingerprintPublisher.isIncludeScopeCompile()).isFalse();
147+
assertThat(dependenciesFingerprintPublisher.isIncludeScopeProvided()).isTrue();
148+
assertThat(dependenciesFingerprintPublisher.isIncludeScopeRuntime()).isTrue();
149+
assertThat(dependenciesFingerprintPublisher.isIncludeScopeTest()).isTrue();
150+
151+
assertThat(config.getPublisherOptions().get(2)).isInstanceOf(FindbugsAnalysisPublisher.class);
152+
FindbugsAnalysisPublisher findBugsPublisher =
153+
(FindbugsAnalysisPublisher) config.getPublisherOptions().get(2);
154+
assertThat(findBugsPublisher.isDisabled()).isTrue();
155+
assertThat(findBugsPublisher.getHealthy()).isEqualTo("5");
156+
assertThat(findBugsPublisher.getThresholdLimit()).isEqualTo("high");
157+
assertThat(findBugsPublisher.getUnHealthy()).isEqualTo("15");
158+
159+
assertThat(config.getPublisherOptions().get(3)).isInstanceOf(GeneratedArtifactsPublisher.class);
160+
GeneratedArtifactsPublisher generatedArtifactsPublisher =
161+
(GeneratedArtifactsPublisher) config.getPublisherOptions().get(3);
162+
assertThat(generatedArtifactsPublisher.isDisabled()).isTrue();
163+
164+
assertThat(config.getPublisherOptions().get(4)).isInstanceOf(InvokerRunsPublisher.class);
165+
InvokerRunsPublisher invokerRunsPublisher =
166+
(InvokerRunsPublisher) config.getPublisherOptions().get(4);
167+
assertThat(invokerRunsPublisher.isDisabled()).isTrue();
168+
169+
assertThat(config.getPublisherOptions().get(5)).isInstanceOf(JGivenTestsPublisher.class);
170+
JGivenTestsPublisher jGivenTestsPublisher =
171+
(JGivenTestsPublisher) config.getPublisherOptions().get(5);
172+
assertThat(jGivenTestsPublisher.isDisabled()).isTrue();
173+
174+
assertThat(config.getPublisherOptions().get(6)).isInstanceOf(JunitTestsPublisher.class);
175+
JunitTestsPublisher junitTestsPublisher =
176+
(JunitTestsPublisher) config.getPublisherOptions().get(6);
177+
assertThat(junitTestsPublisher.isDisabled()).isTrue();
178+
assertThat(junitTestsPublisher.getHealthScaleFactor()).isEqualTo(5.0);
179+
assertThat(junitTestsPublisher.getIgnoreAttachments()).isTrue();
180+
assertThat(junitTestsPublisher.isKeepLongStdio()).isTrue();
181+
182+
assertThat(config.getPublisherOptions().get(7)).isInstanceOf(MavenLinkerPublisher2.class);
183+
MavenLinkerPublisher2 mavenLinkerPublisher =
184+
(MavenLinkerPublisher2) config.getPublisherOptions().get(7);
185+
assertThat(mavenLinkerPublisher.isDisabled()).isTrue();
186+
187+
assertThat(config.getPublisherOptions().get(8)).isInstanceOf(TasksScannerPublisher.class);
188+
TasksScannerPublisher tasksScannerPublisher =
189+
(TasksScannerPublisher) config.getPublisherOptions().get(8);
190+
assertThat(tasksScannerPublisher.isDisabled()).isTrue();
191+
assertThat(tasksScannerPublisher.isAsRegexp()).isTrue();
192+
assertThat(tasksScannerPublisher.getExcludePattern()).isEqualTo("**/*.xml");
193+
assertThat(tasksScannerPublisher.getHealthy()).isEqualTo("5");
194+
assertThat(tasksScannerPublisher.getHighPriorityTaskIdentifiers()).isEqualTo("task1,task2");
195+
assertThat(tasksScannerPublisher.isIgnoreCase()).isTrue();
196+
assertThat(tasksScannerPublisher.getLowPriorityTaskIdentifiers()).isEqualTo("task4");
197+
assertThat(tasksScannerPublisher.getNormalPriorityTaskIdentifiers()).isEqualTo("task3");
198+
assertThat(tasksScannerPublisher.getPattern()).isEqualTo("**/*.java");
199+
assertThat(tasksScannerPublisher.getThresholdLimit()).isEqualTo("normal");
200+
assertThat(tasksScannerPublisher.getUnHealthy()).isEqualTo("15");
201+
202+
assertThat(config.getPublisherOptions().get(9)).isInstanceOf(PipelineGraphPublisher.class);
203+
PipelineGraphPublisher pipelineGraphPublisher =
204+
(PipelineGraphPublisher) config.getPublisherOptions().get(9);
205+
assertThat(pipelineGraphPublisher.isDisabled()).isTrue();
206+
assertThat(pipelineGraphPublisher.isIgnoreUpstreamTriggers()).isTrue();
207+
assertThat(pipelineGraphPublisher.isIncludeReleaseVersions()).isTrue();
208+
assertThat(pipelineGraphPublisher.isIncludeScopeCompile()).isTrue();
209+
assertThat(pipelineGraphPublisher.isIncludeScopeProvided()).isTrue();
210+
assertThat(pipelineGraphPublisher.isIncludeScopeRuntime()).isTrue();
211+
assertThat(pipelineGraphPublisher.isIncludeScopeTest()).isTrue();
212+
assertThat(pipelineGraphPublisher.getLifecycleThreshold()).isEqualTo("install");
213+
assertThat(pipelineGraphPublisher.isSkipDownstreamTriggers()).isTrue();
214+
215+
assertThat(config.getPublisherOptions().get(10)).isInstanceOf(SpotBugsAnalysisPublisher.class);
216+
SpotBugsAnalysisPublisher spotBugsAnalysisPublisher =
217+
(SpotBugsAnalysisPublisher) config.getPublisherOptions().get(10);
218+
assertThat(spotBugsAnalysisPublisher.isDisabled()).isTrue();
219+
assertThat(spotBugsAnalysisPublisher.getHealthy()).isEqualTo("5");
220+
assertThat(spotBugsAnalysisPublisher.getThresholdLimit()).isEqualTo("high");
221+
assertThat(spotBugsAnalysisPublisher.getUnHealthy()).isEqualTo("15");
129222

130223
ConfiguratorRegistry registry = ConfiguratorRegistry.get();
131224
ConfigurationContext context = new ConfigurationContext(registry);

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

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,25 @@
1111
import java.lang.reflect.Field;
1212
import java.lang.reflect.Modifier;
1313
import java.sql.Connection;
14+
import java.util.List;
1415
import jenkins.model.Jenkins;
1516
import org.jenkinsci.plugins.pipeline.maven.dao.CustomTypePipelineMavenPluginDaoDecorator;
1617
import org.jenkinsci.plugins.pipeline.maven.dao.MonitoringPipelineMavenPluginDaoDecorator;
1718
import org.jenkinsci.plugins.pipeline.maven.dao.PipelineMavenPluginDao;
1819
import org.jenkinsci.plugins.pipeline.maven.db.PipelineMavenPluginH2Dao;
1920
import org.jenkinsci.plugins.pipeline.maven.db.PipelineMavenPluginMySqlDao;
2021
import org.jenkinsci.plugins.pipeline.maven.db.PipelineMavenPluginPostgreSqlDao;
22+
import org.jenkinsci.plugins.pipeline.maven.publishers.ConcordionTestsPublisher;
23+
import org.jenkinsci.plugins.pipeline.maven.publishers.DependenciesFingerprintPublisher;
24+
import org.jenkinsci.plugins.pipeline.maven.publishers.FindbugsAnalysisPublisher;
25+
import org.jenkinsci.plugins.pipeline.maven.publishers.GeneratedArtifactsPublisher;
26+
import org.jenkinsci.plugins.pipeline.maven.publishers.InvokerRunsPublisher;
27+
import org.jenkinsci.plugins.pipeline.maven.publishers.JGivenTestsPublisher;
28+
import org.jenkinsci.plugins.pipeline.maven.publishers.JunitTestsPublisher;
29+
import org.jenkinsci.plugins.pipeline.maven.publishers.MavenLinkerPublisher2;
30+
import org.jenkinsci.plugins.pipeline.maven.publishers.PipelineGraphPublisher;
31+
import org.jenkinsci.plugins.pipeline.maven.publishers.SpotBugsAnalysisPublisher;
32+
import org.jenkinsci.plugins.pipeline.maven.publishers.TasksScannerPublisher;
2133
import org.jenkinsci.plugins.pipeline.maven.util.FakeCredentialsProvider;
2234
import org.junit.jupiter.api.BeforeAll;
2335
import org.junit.jupiter.api.Test;
@@ -50,6 +62,99 @@ public static void setup(JenkinsRule r) {
5062

5163
private GlobalPipelineMavenConfig config = new GlobalPipelineMavenConfig();
5264

65+
@Test
66+
public void configRoundTrip() throws Exception {
67+
GlobalPipelineMavenConfig c = GlobalPipelineMavenConfig.get();
68+
c.setGlobalTraceability(true);
69+
c.setTriggerDownstreamUponResultAborted(true);
70+
c.setTriggerDownstreamUponResultFailure(true);
71+
c.setTriggerDownstreamUponResultNotBuilt(true);
72+
c.setTriggerDownstreamUponResultSuccess(false);
73+
c.setTriggerDownstreamUponResultUnstable(true);
74+
75+
ConcordionTestsPublisher concordionTestsPublisher = new ConcordionTestsPublisher();
76+
concordionTestsPublisher.setDisabled(true);
77+
78+
DependenciesFingerprintPublisher dependenciesFingerprintPublisher = new DependenciesFingerprintPublisher();
79+
dependenciesFingerprintPublisher.setDisabled(true);
80+
dependenciesFingerprintPublisher.setIncludeReleaseVersions(true);
81+
dependenciesFingerprintPublisher.setIncludeScopeCompile(false);
82+
dependenciesFingerprintPublisher.setIncludeScopeProvided(true);
83+
dependenciesFingerprintPublisher.setIncludeScopeRuntime(true);
84+
dependenciesFingerprintPublisher.setIncludeScopeTest(true);
85+
86+
FindbugsAnalysisPublisher findBugsPublisher = new FindbugsAnalysisPublisher();
87+
findBugsPublisher.setDisabled(true);
88+
findBugsPublisher.setHealthy("5");
89+
findBugsPublisher.setThresholdLimit("high");
90+
findBugsPublisher.setUnHealthy("15");
91+
92+
GeneratedArtifactsPublisher generatedArtifactsPublisher = new GeneratedArtifactsPublisher();
93+
generatedArtifactsPublisher.setDisabled(true);
94+
95+
InvokerRunsPublisher invokerRunsPublisher = new InvokerRunsPublisher();
96+
invokerRunsPublisher.setDisabled(true);
97+
98+
JGivenTestsPublisher jGivenTestsPublisher = new JGivenTestsPublisher();
99+
jGivenTestsPublisher.setDisabled(true);
100+
101+
JunitTestsPublisher junitTestsPublisher = new JunitTestsPublisher();
102+
junitTestsPublisher.setDisabled(true);
103+
junitTestsPublisher.setHealthScaleFactor(5.0);
104+
junitTestsPublisher.setIgnoreAttachments(true);
105+
junitTestsPublisher.setKeepLongStdio(true);
106+
107+
MavenLinkerPublisher2 mavenLinkerPublisher = new MavenLinkerPublisher2();
108+
mavenLinkerPublisher.setDisabled(true);
109+
110+
TasksScannerPublisher tasksScannerPublisher = new TasksScannerPublisher();
111+
tasksScannerPublisher.setDisabled(true);
112+
tasksScannerPublisher.setAsRegexp(true);
113+
tasksScannerPublisher.setExcludePattern("**/*.xml");
114+
tasksScannerPublisher.setHealthy("5");
115+
tasksScannerPublisher.setHighPriorityTaskIdentifiers("task1,task2");
116+
tasksScannerPublisher.setIgnoreCase(true);
117+
tasksScannerPublisher.setLowPriorityTaskIdentifiers("task4");
118+
tasksScannerPublisher.setNormalPriorityTaskIdentifiers("task3");
119+
tasksScannerPublisher.setPattern("**/*.java");
120+
tasksScannerPublisher.setThresholdLimit("normal");
121+
tasksScannerPublisher.setUnHealthy("15");
122+
123+
PipelineGraphPublisher pipelineGraphPublisher = new PipelineGraphPublisher();
124+
pipelineGraphPublisher.setDisabled(true);
125+
pipelineGraphPublisher.setIgnoreUpstreamTriggers(true);
126+
pipelineGraphPublisher.setIncludeReleaseVersions(true);
127+
pipelineGraphPublisher.setIncludeScopeCompile(true);
128+
pipelineGraphPublisher.setIncludeScopeProvided(true);
129+
pipelineGraphPublisher.setIncludeScopeRuntime(true);
130+
pipelineGraphPublisher.setIncludeScopeTest(true);
131+
pipelineGraphPublisher.setLifecycleThreshold("install");
132+
pipelineGraphPublisher.setSkipDownstreamTriggers(true);
133+
134+
SpotBugsAnalysisPublisher spotBugsAnalysisPublisher = new SpotBugsAnalysisPublisher();
135+
spotBugsAnalysisPublisher.setDisabled(true);
136+
spotBugsAnalysisPublisher.setHealthy("5");
137+
spotBugsAnalysisPublisher.setThresholdLimit("high");
138+
spotBugsAnalysisPublisher.setUnHealthy("15");
139+
140+
c.setPublisherOptions(List.of(
141+
concordionTestsPublisher,
142+
dependenciesFingerprintPublisher,
143+
findBugsPublisher,
144+
generatedArtifactsPublisher,
145+
invokerRunsPublisher,
146+
jGivenTestsPublisher,
147+
junitTestsPublisher,
148+
mavenLinkerPublisher,
149+
tasksScannerPublisher,
150+
pipelineGraphPublisher,
151+
spotBugsAnalysisPublisher));
152+
153+
j.configRoundtrip();
154+
155+
j.assertEqualDataBoundBeans(c, GlobalPipelineMavenConfig.get());
156+
}
157+
53158
@Test
54159
public void shouldBuildH2Dao() throws Exception {
55160
config.setDaoClass(PipelineMavenPluginH2Dao.class.getName());

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import java.nio.charset.StandardCharsets;
4545
import java.util.Collection;
4646
import java.util.Collections;
47+
import java.util.List;
4748
import java.util.Objects;
4849
import java.util.stream.Stream;
4950
import jenkins.model.Jenkins;
@@ -52,6 +53,7 @@
5253
import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition;
5354
import org.jenkinsci.plugins.workflow.job.WorkflowJob;
5455
import org.jenkinsci.plugins.workflow.job.WorkflowRun;
56+
import org.jenkinsci.plugins.workflow.steps.StepConfigTester;
5557
import org.junit.jupiter.api.Test;
5658
import org.junit.jupiter.params.ParameterizedTest;
5759
import org.junit.jupiter.params.provider.Arguments;
@@ -71,6 +73,27 @@ public class WithMavenStepTest extends AbstractIntegrationTest {
7173
private static final String SLAVE_BASE_PATH = "/home/test/slave";
7274
private static final String COMMONS_LANG3_FINGERPRINT = "780b5a8b72eebe6d0dbff1c11b5658fa";
7375

76+
@Test
77+
public void configRoundTrip() throws Exception {
78+
WithMavenStep step1 = new WithMavenStep();
79+
step1.setMaven("someMaven");
80+
step1.setJdk("someJdk");
81+
step1.setPublisherStrategy(MavenPublisherStrategy.EXPLICIT);
82+
step1.setMavenLocalRepo("aLocalRepo");
83+
step1.setGlobalMavenSettingsConfig("");
84+
step1.setGlobalMavenSettingsFilePath("globalSettingsFilePath");
85+
step1.setMavenOpts("someMavenOpts");
86+
step1.setMavenSettingsConfig("");
87+
step1.setMavenSettingsFilePath("settingsFilePath");
88+
step1.setTempBinDir("aTmpDir");
89+
step1.setTraceability(true);
90+
jenkinsRule.getInstance().setJDKs(List.of(new JDK("someJdk", "somePath")));
91+
MavenUtil.configureMaven(jenkinsRule.getInstance().getRootPath(), MavenUtil.MAVEN_VERSION, "someMaven");
92+
93+
WithMavenStep step2 = new StepConfigTester(jenkinsRule).configRoundTrip(step1);
94+
jenkinsRule.assertEqualDataBoundBeans(step1, step2);
95+
}
96+
7497
@Issue("SECURITY-441")
7598
@Test
7699
public void testMavenBuildOnRemoteAgentWithSettingsFileOnMasterFails() throws Exception {

pipeline-maven/src/test/resources/org/jenkinsci/plugins/pipeline/maven/configuration-as-code_publishers.yml

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,52 @@ jenkins:
44
tool:
55
pipelineMaven:
66
publisherOptions:
7+
- concordionPublisher:
8+
disabled: true
9+
- dependenciesFingerprintPublisher:
10+
disabled: true
11+
includeReleaseVersions: true
12+
includeScopeCompile: false
13+
includeScopeTest: true
14+
- findbugsPublisher:
15+
disabled: true
16+
healthy: "5"
17+
thresholdLimit: "high"
18+
unHealthy: "15"
19+
- artifactsPublisher:
20+
disabled: true
21+
- invokerPublisher:
22+
disabled: true
23+
- jgivenPublisher:
24+
disabled: true
25+
- junitPublisher:
26+
disabled: true
27+
healthScaleFactor: "5.0"
28+
ignoreAttachments: true
29+
keepLongStdio: true
730
- mavenLinkerPublisher:
8-
disabled: true
31+
disabled: true
32+
- openTasksPublisher:
33+
asRegexp: true
34+
disabled: true
35+
excludePattern: "**/*.xml"
36+
healthy: "5"
37+
highPriorityTaskIdentifiers: "task1,task2"
38+
ignoreCase: true
39+
lowPriorityTaskIdentifiers: "task4"
40+
normalPriorityTaskIdentifiers: "task3"
41+
pattern: "**/*.java"
42+
thresholdLimit: "normal"
43+
unHealthy: "15"
44+
- pipelineGraphPublisher:
45+
disabled: true
46+
ignoreUpstreamTriggers: true
47+
includeReleaseVersions: true
48+
includeScopeTest: true
49+
lifecycleThreshold: "install"
50+
skipDownstreamTriggers: true
51+
- spotbugsPublisher:
52+
disabled: true
53+
healthy: "5"
54+
thresholdLimit: "high"
55+
unHealthy: "15"

0 commit comments

Comments
 (0)