Fix for invalid environment variable names used on windows that start with an equals symbol. Even though this contradicts the Microsoft docs.

This commit is contained in:
Simon Lightfoot 2016-08-15 20:28:17 +01:00
parent 454b1e3939
commit f372f5fce7
2 changed files with 15 additions and 1 deletions

View file

@ -64,7 +64,7 @@ func (c Context) Env() map[string]string {
envVars := make(map[string]string, len(osEnv))
for _, env := range osEnv {
data := strings.SplitN(env, "=", 2)
if len(data) == 2 {
if len(data) == 2 && len(data[0]) > 0 {
envVars[data[0]] = data[1]
}
}

View file

@ -234,6 +234,9 @@ func TestEnv(t *testing.T) {
notExisting := "ENV_TEST_NOT_EXISTING"
os.Unsetenv(notExisting)
invalidName := "ENV_TEST_INVALID_NAME"
os.Setenv("="+invalidName, testValue)
env := context.Env()
if value := env[name]; value != testValue {
t.Errorf("Expected env-variable %s value '%s', found '%s'",
@ -244,6 +247,17 @@ func TestEnv(t *testing.T) {
t.Errorf("Expected empty env-variable %s, found '%s'",
notExisting, value)
}
for k, v := range env {
if strings.Contains(k, invalidName) {
t.Errorf("Expected invalid name not to be included in Env %s, found in key '%s'", invalidName, k)
}
if strings.Contains(v, invalidName) {
t.Errorf("Expected invalid name not be be included in Env %s, found in value '%s'", invalidName, v)
}
}
os.Unsetenv("=" + invalidName)
}
func TestIP(t *testing.T) {