This is an automated email from the ASF dual-hosted git repository.
martinkanters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-shared-utils.git
The following commit(s) were added to refs/heads/master by this push:
new 8b8d586 [MSHARED-969] Environment variable with null value
8b8d586 is described below
commit 8b8d586c996225816581b0c176ee918982a58944
Author: Slawomir Jaranowski <[email protected]>
AuthorDate: Tue Dec 29 11:15:30 2020 +0100
[MSHARED-969] Environment variable with null value
---
pom.xml | 3 ++
.../apache/maven/shared/utils/cli/Commandline.java | 11 +++---
.../shared/utils/cli/CommandLineUtilsTest.java | 39 ++++++++++++++++++++++
3 files changed, 48 insertions(+), 5 deletions(-)
diff --git a/pom.xml b/pom.xml
index 5aef5d8..ce50ec2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -156,6 +156,9 @@
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<reuseForks>false</reuseForks>
+ <environmentVariables>
+ <TEST_SHARED_ENV>TestValue</TEST_SHARED_ENV>
+ </environmentVariables>
</configuration>
</plugin>
</plugins>
diff --git a/src/main/java/org/apache/maven/shared/utils/cli/Commandline.java
b/src/main/java/org/apache/maven/shared/utils/cli/Commandline.java
index 1f89fbe..ffc0c25 100644
--- a/src/main/java/org/apache/maven/shared/utils/cli/Commandline.java
+++ b/src/main/java/org/apache/maven/shared/utils/cli/Commandline.java
@@ -236,15 +236,16 @@ public class Commandline
public String[] getEnvironmentVariables()
{
addSystemEnvironment();
- String[] environmentVars = new String[envVars.size()];
- int i = 0;
+ List<String> environmentVars = new ArrayList<>();
for ( String name : envVars.keySet() )
{
String value = envVars.get( name );
- environmentVars[i] = name + "=" + value;
- i++;
+ if ( value != null )
+ {
+ environmentVars.add( name + "=" + value );
+ }
}
- return environmentVars;
+ return environmentVars.toArray( new String[0] );
}
/**
diff --git
a/src/test/java/org/apache/maven/shared/utils/cli/CommandLineUtilsTest.java
b/src/test/java/org/apache/maven/shared/utils/cli/CommandLineUtilsTest.java
index 079d0d1..81b2997 100644
--- a/src/test/java/org/apache/maven/shared/utils/cli/CommandLineUtilsTest.java
+++ b/src/test/java/org/apache/maven/shared/utils/cli/CommandLineUtilsTest.java
@@ -19,6 +19,9 @@ package org.apache.maven.shared.utils.cli;
* under the License.
*/
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.hasItemInArray;
+import static org.hamcrest.Matchers.not;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -168,4 +171,40 @@ public class CommandLineUtilsTest
assertEquals( expected.length, actual.length );
assertEquals( Arrays.asList( expected ), Arrays.asList( actual ) );
}
+
+ @Test
+ public void environmentVariableWithNullShouldNotBeSet() {
+
+ Commandline commandline = new Commandline();
+ commandline.addEnvironment("TEST_NULL_ENV", null);
+
+ String[] environmentVariables = commandline.getEnvironmentVariables();
+
+ assertNotNull( environmentVariables );
+ assertThat( environmentVariables, not( hasItemInArray(
"TEST_NULL_ENV=null" ) ) );
+ }
+
+ @Test
+ public void environmentVariableFromSystemIsCopied() {
+
+ Commandline commandline = new Commandline();
+
+ String[] environmentVariables = commandline.getEnvironmentVariables();
+
+ assertNotNull(environmentVariables);
+ assertThat(environmentVariables, hasItemInArray(
"TEST_SHARED_ENV=TestValue" ) );
+ }
+
+ @Test
+ public void environmentVariableFromSystemIsRemoved() {
+
+ Commandline commandline = new Commandline();
+ commandline.addEnvironment("TEST_SHARED_ENV", null);
+
+ String[] environmentVariables = commandline.getEnvironmentVariables();
+
+ assertNotNull(environmentVariables);
+ assertThat(environmentVariables, not ( hasItemInArray(
"TEST_SHARED_ENV=TestValue" ) ) );
+ }
+
}