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 <s.jaranow...@gmail.com>
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" ) ) );
+    }
+
 }

Reply via email to