Skip to content

Commit

Permalink
[FIXED JENKINS-25732] - Don't fail with NPE if an environment variabl…
Browse files Browse the repository at this point in the history
…e contains null value

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
  • Loading branch information
oleg-nenashev committed Nov 21, 2014
1 parent b3c84d1 commit 45392c6
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
Expand Up @@ -182,7 +182,12 @@ private static String substituteParametersNoCheck(
}
String newString = string;
for (Map.Entry<String, String> entry : subst.entrySet()) {
newString = newString.replace("${" + entry.getKey() + "}", entry.getValue());
final @CheckForNull String key = entry.getKey();
final @CheckForNull String value = entry.getValue();
if (key == null || value == null) {
continue;
}
newString = newString.replace("${" + key + "}", value);
}
return newString;
}
Expand Down
Expand Up @@ -23,6 +23,7 @@
*/
package com.synopsys.arc.jenkinsci.plugins.perforce;

import hudson.EnvVars;
import hudson.plugins.perforce.utils.MacroStringHelper;
import hudson.plugins.perforce.utils.ParameterSubstitutionException;
import javax.annotation.Nonnull;
Expand Down Expand Up @@ -72,6 +73,17 @@ public void Sanity_CheckNull() {
checkStringForMacros("//depot1/path1/... //placeholder/path1/...\n//depot1/path2/... //placeholder/path2/...", false);
}

@Bug(25732)
public @Test void nullEntriesInEnvVars() throws ParameterSubstitutionException {
// Check that params with null values are being ignored
try {
MacroStringHelper.substituteParameters("Test sring with ${PARAM}", new EnvVars("PARAM", null));
} catch (ParameterSubstitutionException ex) {
return; // OK
}
Assert.fail("Expected ParameterSubstitutionException on null parameter value");
}

public static void checkStringForMacros(@Nonnull String string, boolean expectMacro) {
boolean isMacro = MacroStringHelper.containsMacro(string);
if (isMacro != expectMacro) {
Expand Down

0 comments on commit 45392c6

Please sign in to comment.