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" ) ) ); + } + }