Skip to content

Commit ff10949

Browse files
authored
Merge pull request #2 from Leanplum/coverage-lines
Added coverage result one-liner to status check. Reads out of newCode…
2 parents d25d88e + 6e04dcf commit ff10949

File tree

12 files changed

+96
-20
lines changed

12 files changed

+96
-20
lines changed

src/main/java/org/jenkinsci/plugins/ghprb/extensions/status/GhprbSimpleStatus.java

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,16 @@ public class GhprbSimpleStatus extends GhprbExtension implements
4848

4949
private final Boolean addTestResults;
5050

51+
private final Boolean addCoverageResults;
52+
5153
private final List<GhprbBuildResultMessage> completedStatus;
5254

5355
public GhprbSimpleStatus() {
5456
this(null);
5557
}
5658

5759
public GhprbSimpleStatus(String commitStatusContext) {
58-
this(false, commitStatusContext, null, null, null, false, new ArrayList<GhprbBuildResultMessage>(0));
60+
this(false, commitStatusContext, null, null, null, false, false, new ArrayList<GhprbBuildResultMessage>(0));
5961
}
6062

6163
@DataBoundConstructor
@@ -65,13 +67,15 @@ public GhprbSimpleStatus(Boolean showMatrixStatus,
6567
String triggeredStatus,
6668
String startedStatus,
6769
Boolean addTestResults,
70+
Boolean addCoverageResults,
6871
List<GhprbBuildResultMessage> completedStatus) {
6972
this.showMatrixStatus = showMatrixStatus;
7073
this.statusUrl = statusUrl;
7174
this.commitStatusContext = commitStatusContext == null ? "" : commitStatusContext;
7275
this.triggeredStatus = triggeredStatus;
7376
this.startedStatus = startedStatus;
7477
this.addTestResults = addTestResults;
78+
this.addCoverageResults = addCoverageResults;
7579
this.completedStatus = completedStatus;
7680
}
7781

@@ -99,6 +103,10 @@ public Boolean getAddTestResults() {
99103
return addTestResults == null ? Boolean.valueOf(false) : addTestResults;
100104
}
101105

106+
public Boolean getAddCoverageResults() {
107+
return addCoverageResults == null ? Boolean.valueOf(false) : addCoverageResults;
108+
}
109+
102110
public List<GhprbBuildResultMessage> getCompletedStatus() {
103111
return completedStatus == null ? new ArrayList<GhprbBuildResultMessage>(0) : completedStatus;
104112
}
@@ -215,6 +223,26 @@ public void onBuildComplete(Run<?, ?> build,
215223
listener.getLogger().println("Adding one-line test results to commit status...");
216224
sb.append(buildManager.getOneLineTestResults());
217225
}
226+
if (getAddCoverageResults()) {
227+
listener.getLogger().println("Adding coverage results to commit status...");
228+
229+
String coverageResultString;
230+
GHCommitState coverageState;
231+
Map<String, String> envVars = Ghprb.getEnvVars(build, listener);
232+
if (!envVars.containsKey("newCodeCoveragePercentage")) {
233+
coverageResultString = "No coverage results found.";
234+
coverageState = GHCommitState.SUCCESS;
235+
} else {
236+
String newCodeCoveragePercentage = envVars.get("newCodeCoveragePercentage");
237+
coverageResultString = newCodeCoveragePercentage + "% line coverage on new code.";
238+
int coveragePercent = Integer.parseInt(newCodeCoveragePercentage);
239+
coverageState = coveragePercent > 1 ? GHCommitState.SUCCESS : GHCommitState.ERROR;
240+
}
241+
242+
String context = Util.fixEmpty(commitStatusContext);
243+
context = Ghprb.replaceMacros(build, listener, context) + " Coverage";
244+
createCommitStatus(build, listener, coverageResultString, repo, coverageState, context);
245+
}
218246
}
219247

220248
createCommitStatus(build, listener, sb.toString(), repo, state);
@@ -224,7 +252,8 @@ private void createCommitStatus(Run<?, ?> build,
224252
TaskListener listener,
225253
String message,
226254
GHRepository repo,
227-
GHCommitState state) throws GhprbCommitStatusException {
255+
GHCommitState state,
256+
String context) throws GhprbCommitStatusException {
228257

229258
Map<String, String> envVars = Ghprb.getEnvVars(build, listener);
230259

@@ -245,9 +274,6 @@ private void createCommitStatus(Run<?, ?> build,
245274
url = Ghprb.replaceMacros(build, listener, statusUrl);
246275
}
247276

248-
String context = Util.fixEmpty(commitStatusContext);
249-
context = Ghprb.replaceMacros(build, listener, context);
250-
251277
listener.getLogger().println(String.format("Setting status of %s to %s with url %s and message: '%s'",
252278
sha1,
253279
state,
@@ -265,6 +291,16 @@ private void createCommitStatus(Run<?, ?> build,
265291
}
266292
}
267293

294+
private void createCommitStatus(Run<?, ?> build,
295+
TaskListener listener,
296+
String message,
297+
GHRepository repo,
298+
GHCommitState state) throws GhprbCommitStatusException {
299+
String context = Util.fixEmpty(commitStatusContext);
300+
context = Ghprb.replaceMacros(build, listener, context);
301+
createCommitStatus(build, listener, message, repo, state, context);
302+
}
303+
268304
public void createCommitStatus(Job<?, ?> project,
269305
int prId,
270306
String commitSha,
@@ -321,6 +357,10 @@ public Boolean getAddTestResultsDefault(GhprbSimpleStatus local) {
321357
return Ghprb.getDefaultValue(local, GhprbSimpleStatus.class, "getAddTestResults");
322358
}
323359

360+
public Boolean getAddCoverageResultsDefault(GhprbSimpleStatus local) {
361+
return Ghprb.getDefaultValue(local, GhprbSimpleStatus.class, "getAddCoverageResults");
362+
}
363+
324364
public List<GhprbBuildResultMessage> getCompletedStatusDefault(GhprbSimpleStatus local) {
325365
return Ghprb.getDefaultValue(local, GhprbSimpleStatus.class, "getCompletedStatus");
326366
}

src/main/java/org/jenkinsci/plugins/ghprb/extensions/status/GhprbSimpleStatusDescriptor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public abstract class GhprbSimpleStatusDescriptor extends GhprbExtensionDescript
1616

1717
public abstract Boolean getAddTestResultsDefault(GhprbSimpleStatus local);
1818

19+
public abstract Boolean getAddCoverageResultsDefault(GhprbSimpleStatus local);
20+
1921
public abstract List<GhprbBuildResultMessage> getCompletedStatusDefault(GhprbSimpleStatus local);
2022

2123
public abstract String getCommitStatusContextDefault(GhprbSimpleStatus local);

src/main/java/org/jenkinsci/plugins/ghprb/jobdsl/GhprbContextExtensionPoint.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ public Object downstreamCommitStatus(Runnable closure) {
7676
context.triggeredStatus,
7777
context.startedStatus,
7878
context.addTestResults,
79+
context.addCoverageResults,
7980
context.completedStatus
8081
);
8182
}

src/main/java/org/jenkinsci/plugins/ghprb/jobdsl/GhprbExtensionContext.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ void commitStatus(Runnable closure) {
2626
context.triggeredStatus,
2727
context.startedStatus,
2828
context.addTestResults,
29+
context.addCoverageResults,
2930
context.completedStatus
3031
));
3132
}

src/main/java/org/jenkinsci/plugins/ghprb/jobdsl/GhprbSimpleStatusContext.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ class GhprbSimpleStatusContext implements Context {
2020

2121
Boolean addTestResults;
2222

23+
Boolean addCoverageResults;
24+
2325
List<GhprbBuildResultMessage> completedStatus = new ArrayList<GhprbBuildResultMessage>();
2426

2527
/**
@@ -71,6 +73,13 @@ void addTestResults(Boolean addTestResults) {
7173
this.addTestResults = addTestResults;
7274
}
7375

76+
/**
77+
* Add the coverage results as one line if available.
78+
*/
79+
void addCoverageResults(Boolean addCoverageResults) {
80+
this.addCoverageResults = addCoverageResults;
81+
}
82+
7483
/**
7584
* Use a custom status for when a build is completed. Can be called multiple times to set messages for different
7685
* build results. Valid build results are {@code 'SUCCESS'}, {@code 'FAILURE'}, and {@code 'ERROR'}.

src/main/java/org/jenkinsci/plugins/ghprb/jobdsl/GhprbUpstreamStatusContext.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ class GhprbUpstreamStatusContext implements Context {
2020

2121
Boolean addTestResults;
2222

23+
Boolean addCoverageResults;
24+
2325
List<GhprbBuildResultMessage> completedStatus = new ArrayList<GhprbBuildResultMessage>();
2426

2527
/**
@@ -71,6 +73,13 @@ void addTestResults(Boolean addTestResults) {
7173
this.addTestResults = addTestResults;
7274
}
7375

76+
/**
77+
* Add the coverage results if available.
78+
*/
79+
void addCoverageResults(Boolean addCoverageResults) {
80+
this.addCoverageResults = addCoverageResults;
81+
}
82+
7483
/**
7584
* Use a custom status for when a build is completed. Can be called multiple times to set messages for different
7685
* build results. Valid build results are {@code 'SUCCESS'}, {@code 'FAILURE'}, and {@code 'ERROR'}.

src/main/java/org/jenkinsci/plugins/ghprb/manager/impl/GhprbBaseBuildManager.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,15 @@
88
import hudson.tasks.test.AbstractTestResultAction;
99
import hudson.tasks.test.AggregatedTestResultAction;
1010
import hudson.tasks.test.AggregatedTestResultAction.ChildReport;
11-
import jenkins.model.Jenkins;
12-
import org.jenkinsci.plugins.ghprb.manager.GhprbBuildManager;
13-
import org.jenkinsci.plugins.ghprb.manager.configuration.JobConfiguration;
14-
1511
import java.io.IOException;
1612
import java.util.ArrayList;
1713
import java.util.Iterator;
1814
import java.util.List;
1915
import java.util.logging.Level;
2016
import java.util.logging.Logger;
17+
import jenkins.model.Jenkins;
18+
import org.jenkinsci.plugins.ghprb.manager.GhprbBuildManager;
19+
import org.jenkinsci.plugins.ghprb.manager.configuration.JobConfiguration;
2120

2221
/**
2322
* @author mdelapenya (Manuel de la Peña)

src/main/java/org/jenkinsci/plugins/ghprb/upstream/GhprbUpstreamStatus.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ public class GhprbUpstreamStatus extends BuildWrapper {
3636

3737
private final Boolean addTestResults;
3838

39+
private final Boolean addCoverageResults;
40+
3941
private final List<GhprbBuildResultMessage> completedStatus;
4042

4143
// sets the context and message as env vars so that they are available in the Listener class
@@ -48,6 +50,7 @@ public void makeBuildVariables(@SuppressWarnings("rawtypes") AbstractBuild build
4850
variables.put("ghprbStartedStatus", getStartedStatus());
4951
variables.put("ghprbStatusUrl", getStatusUrl());
5052
variables.put("ghprbAddTestResults", Boolean.toString(getAddTestResults()));
53+
variables.put("ghprbAddCoverageResults", Boolean.toString(getAddCoverageResults()));
5154

5255
Map<GHCommitState, StringBuilder> statusMessages = new HashMap<GHCommitState, StringBuilder>(INITIAL_CAPACITY);
5356

@@ -94,6 +97,7 @@ public GhprbUpstreamStatus(
9497
String triggeredStatus,
9598
String startedStatus,
9699
Boolean addTestResults,
100+
Boolean addCoverageResults,
97101
List<GhprbBuildResultMessage> completedStatus
98102
) {
99103
this.showMatrixStatus = showMatrixStatus;
@@ -102,6 +106,7 @@ public GhprbUpstreamStatus(
102106
this.triggeredStatus = triggeredStatus;
103107
this.startedStatus = startedStatus;
104108
this.addTestResults = addTestResults;
109+
this.addCoverageResults = addCoverageResults;
105110
this.completedStatus = completedStatus;
106111
}
107112

@@ -126,6 +131,10 @@ public Boolean getAddTestResults() {
126131
return addTestResults == null ? Boolean.valueOf(false) : addTestResults;
127132
}
128133

134+
public Boolean getAddCoverageResults() {
135+
return addCoverageResults == null ? Boolean.valueOf(false) : addCoverageResults;
136+
}
137+
129138
public Boolean getShowMatrixStatus() {
130139
return showMatrixStatus == null ? Boolean.valueOf(false) : showMatrixStatus;
131140
}

src/main/java/org/jenkinsci/plugins/ghprb/upstream/GhprbUpstreamStatusListener.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ private GhprbSimpleStatus returnGhprbSimpleStatus(Map<String, String> envVars) {
7575
envVars.get("ghprbTriggeredStatus"),
7676
envVars.get("ghprbStartedStatus"),
7777
Boolean.valueOf(envVars.get("ghprbAddTestResults")),
78+
Boolean.valueOf(envVars.get("ghprbAddCoverageResults")),
7879
statusMessages
7980
);
8081
}

src/main/resources/org/jenkinsci/plugins/ghprb/extensions/status/GhprbSimpleStatus/config.jelly

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@
1515
<f:entry title="${%Add test result one liner}" field="addTestResults" >
1616
<f:checkbox default="${descriptor.getAddTestResultsDefault(instance)}" />
1717
</f:entry>
18+
<f:entry title="${%Add coverage result one liner}" field="addCoverageResults" >
19+
<f:checkbox default="${descriptor.getAddCoverageResultsDefault(instance)}" />
20+
</f:entry>
1821
<f:entry title="${%Commit Status Build Result}" field="completedStatus" >
1922
<f:repeatableProperty field="completedStatus" default="${descriptor.getCompletedStatusDefault(instance)}" />
2023
</f:entry>
21-
</j:jelly>
24+
</j:jelly>

0 commit comments

Comments
 (0)