Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit 10b5cd3

Browse files
authored
Merge pull request #384 from weitenghuang/fix-381
Fix empty environment variable
2 parents fbd6501 + 3039c19 commit 10b5cd3

File tree

3 files changed

+69
-2
lines changed

3 files changed

+69
-2
lines changed

project/project.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ func (p *Project) CreateService(name string) (Service, error) {
134134

135135
for _, env := range config.Environment {
136136
parts := strings.SplitN(env, "=", 2)
137-
if len(parts) > 1 && parts[1] != "" {
137+
if len(parts) > 1 {
138138
parsedEnv = append(parsedEnv, env)
139139
continue
140140
} else {

project/project_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ func TestEnvironmentResolve(t *testing.T) {
153153
t.Fatal(err)
154154
}
155155

156-
if !reflect.DeepEqual(service.Config().Environment, yaml.MaporEqualSlice{"A=X", "A=X", "A=B"}) {
156+
if !reflect.DeepEqual(service.Config().Environment, yaml.MaporEqualSlice{"A=X", "A=", "A=B"}) {
157157
t.Fatal("Invalid environment", service.Config().Environment)
158158
}
159159
}

yaml/types_yaml_test.go

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,3 +135,70 @@ func TestMaporsliceYaml(t *testing.T) {
135135
assert.True(t, contains(s2.Foo, "far=1"))
136136
assert.True(t, contains(s2.Foo, "qux"))
137137
}
138+
139+
func TestMapWithEmptyValue(t *testing.T) {
140+
str := `foo:
141+
bar: baz
142+
far: 1
143+
qux: null
144+
empty: ""
145+
lookup:`
146+
147+
s := StructMaporslice{}
148+
yaml.Unmarshal([]byte(str), &s)
149+
150+
assert.Equal(t, 5, len(s.Foo))
151+
assert.True(t, contains(s.Foo, "bar=baz"))
152+
assert.True(t, contains(s.Foo, "far=1"))
153+
assert.True(t, contains(s.Foo, "qux"))
154+
assert.True(t, contains(s.Foo, "empty="))
155+
assert.True(t, contains(s.Foo, "lookup"))
156+
157+
d, err := yaml.Marshal(&s)
158+
assert.Nil(t, err)
159+
160+
s2 := StructMaporslice{}
161+
yaml.Unmarshal(d, &s2)
162+
163+
assert.Equal(t, 5, len(s2.Foo))
164+
assert.True(t, contains(s2.Foo, "bar=baz"))
165+
assert.True(t, contains(s2.Foo, "far=1"))
166+
assert.True(t, contains(s2.Foo, "qux"))
167+
assert.True(t, contains(s2.Foo, "empty="))
168+
assert.True(t, contains(s2.Foo, "lookup"))
169+
}
170+
171+
func TestSliceWithEmptyValue(t *testing.T) {
172+
str := `foo:
173+
- bar=baz
174+
- far=1
175+
- qux=null
176+
- quotes=""
177+
- empty=
178+
- lookup`
179+
180+
s := StructMaporslice{}
181+
yaml.Unmarshal([]byte(str), &s)
182+
183+
assert.Equal(t, 6, len(s.Foo))
184+
assert.True(t, contains(s.Foo, "bar=baz"))
185+
assert.True(t, contains(s.Foo, "far=1"))
186+
assert.True(t, contains(s.Foo, "qux=null"))
187+
assert.True(t, contains(s.Foo, "quotes=\"\""))
188+
assert.True(t, contains(s.Foo, "empty="))
189+
assert.True(t, contains(s.Foo, "lookup"))
190+
191+
d, err := yaml.Marshal(&s)
192+
assert.Nil(t, err)
193+
194+
s2 := StructMaporslice{}
195+
yaml.Unmarshal(d, &s2)
196+
197+
assert.Equal(t, 6, len(s2.Foo))
198+
assert.True(t, contains(s2.Foo, "bar=baz"))
199+
assert.True(t, contains(s2.Foo, "far=1"))
200+
assert.True(t, contains(s2.Foo, "qux=null"))
201+
assert.True(t, contains(s2.Foo, "quotes=\"\""))
202+
assert.True(t, contains(s2.Foo, "empty="))
203+
assert.True(t, contains(s2.Foo, "lookup"))
204+
}

0 commit comments

Comments
 (0)