diff --git a/src/main/java/nz/co/jammehcow/jenkinsdiscord/DiscordPipelineStep.java b/src/main/java/nz/co/jammehcow/jenkinsdiscord/DiscordPipelineStep.java index 7374954..2183f68 100644 --- a/src/main/java/nz/co/jammehcow/jenkinsdiscord/DiscordPipelineStep.java +++ b/src/main/java/nz/co/jammehcow/jenkinsdiscord/DiscordPipelineStep.java @@ -140,7 +140,7 @@ public void setNotes(String notes) { public String getNotes() { return notes; } - + @DataBoundSetter public void setCustomAvatarUrl(String customAvatarUrl) { this.customAvatarUrl = customAvatarUrl; @@ -149,7 +149,7 @@ public void setCustomAvatarUrl(String customAvatarUrl) { public String getCustomAvatarUrl() { return customAvatarUrl; } - + @DataBoundSetter public void setCustomUsername(String customUsername) { this.customUsername = customUsername; @@ -201,7 +201,7 @@ public static class DiscordPipelineStepExecution extends AbstractSynchronousNonB transient DiscordPipelineStep step; @StepContextParameter - private transient TaskListener listener; + transient TaskListener listener; @Override protected Void run() throws Exception { @@ -233,9 +233,14 @@ protected Void run() throws Exception { if (step.getEnableArtifactsList() || step.getShowChangeset()) { JenkinsLocationConfiguration globalConfig = JenkinsLocationConfiguration.get(); Run build = getContext().get(Run.class); - wh.setDescription(new EmbedDescription(build, globalConfig, step.getDescription(), step.getEnableArtifactsList(), step.getShowChangeset(), - step.getScmWebUrl()) - .toString() + wh.setDescription(new EmbedDescription( + build, + globalConfig, + step.getDescription(), + step.getEnableArtifactsList(), + step.getShowChangeset(), + step.getScmWebUrl() + ).toString() ); } else { wh.setDescription(checkLimitAndTruncate("description", step.getDescription(), DESCRIPTION_LIMIT)); @@ -255,9 +260,11 @@ protected Void run() throws Exception { } // Add all key value field pairs to the webhook by splitting them with the delimiter - step.fields.stream() - .map(s -> s.split(":")) - .forEach(pair -> wh.addField(pair[0], pair[1])); + if (step.fields != null) { + step.fields.stream() + .map(s -> s.split(":")) + .forEach(pair -> wh.addField(pair[0], pair[1])); + } try { wh.send(); diff --git a/src/test/java/nz/co/jammehcow/jenkinsdiscord/BasicTest.java b/src/test/java/nz/co/jammehcow/jenkinsdiscord/BasicTest.java index 40789a2..446e7c9 100644 --- a/src/test/java/nz/co/jammehcow/jenkinsdiscord/BasicTest.java +++ b/src/test/java/nz/co/jammehcow/jenkinsdiscord/BasicTest.java @@ -12,6 +12,22 @@ public void webhookClassDoesntThrow() { wh.setContent("content"); wh.setDescription("desc"); wh.setStatus(DiscordWebhook.StatusColor.GREEN); + wh.send(); + } catch (Exception e) { + fail(); + } + } + + @Test + public void pipelineDoesntThrow() { + try { + DiscordPipelineStep step = new DiscordPipelineStep("http://exampl.e"); + step.setTitle("Test title"); + DiscordPipelineStep.DiscordPipelineStepExecution execution = + new DiscordPipelineStep.DiscordPipelineStepExecution(); + execution.step = step; + execution.listener = () -> System.out; + execution.run(); } catch (Exception e) { fail(); }