@@ -24,9 +24,12 @@ VAR=VAR_VALUE
24
24
EMPTY_VAR=
25
25
UNDEFINED_VAR
26
26
DEFINED_VAR
27
+ QUOTED_VAR
28
+ QUOTED_VALUE="this should be quoted"
27
29
`
28
30
vars := map [string ]string {
29
31
"DEFINED_VAR" : "defined-value" ,
32
+ "QUOTED_VAR" : "\" quoted value\" " ,
30
33
}
31
34
lookupFn := func (name string ) (string , bool ) {
32
35
v , ok := vars [name ]
@@ -40,7 +43,13 @@ DEFINED_VAR
40
43
variables , err := Parse (fileName , lookupFn )
41
44
assert .NilError (t , err )
42
45
43
- expectedLines := []string {"VAR=VAR_VALUE" , "EMPTY_VAR=" , "DEFINED_VAR=defined-value" }
46
+ expectedLines := []string {
47
+ "VAR=VAR_VALUE" ,
48
+ "EMPTY_VAR=" ,
49
+ "DEFINED_VAR=defined-value" ,
50
+ "QUOTED_VAR=quoted value" ,
51
+ "QUOTED_VALUE=this should be quoted" ,
52
+ }
44
53
assert .Check (t , is .DeepEqual (variables , expectedLines ))
45
54
}
46
55
@@ -118,9 +127,11 @@ VAR=VAR_VALUE
118
127
EMPTY_VAR=
119
128
UNDEFINED_VAR
120
129
DEFINED_VAR
130
+ QUOTED_VAR
121
131
`
122
132
vars := map [string ]string {
123
133
"DEFINED_VAR" : "defined-value" ,
134
+ "QUOTED_VAR" : "\" quoted value\" " ,
124
135
}
125
136
lookupFn := func (name string ) (string , bool ) {
126
137
v , ok := vars [name ]
@@ -130,7 +141,12 @@ DEFINED_VAR
130
141
variables , err := ParseFromReader (strings .NewReader (content ), lookupFn )
131
142
assert .NilError (t , err )
132
143
133
- expectedLines := []string {"VAR=VAR_VALUE" , "EMPTY_VAR=" , "DEFINED_VAR=defined-value" }
144
+ expectedLines := []string {
145
+ "VAR=VAR_VALUE" ,
146
+ "EMPTY_VAR=" ,
147
+ "DEFINED_VAR=defined-value" ,
148
+ "QUOTED_VAR=quoted value" ,
149
+ }
134
150
assert .Check (t , is .DeepEqual (variables , expectedLines ))
135
151
}
136
152
@@ -143,3 +159,29 @@ func TestParseFromReaderWithNoName(t *testing.T) {
143
159
const expectedMessage = "no variable name on line '=blank variable names are an error case'"
144
160
assert .Check (t , is .ErrorContains (err , expectedMessage ))
145
161
}
162
+
163
+ // Test ParseFromReader with quoted values
164
+ func TestParseFromReaderWithQuotes (t * testing.T ) {
165
+ content := `# Test with quotes
166
+ DOUBLE_QUOTES="double quoted value"
167
+ SINGLE_QUOTES='single quoted value'
168
+ MIXED_QUOTES="'mixed' quotes"
169
+ NESTED_QUOTES='"nested" quotes'
170
+ UNBALANCED_QUOTES="unbalanced quotes
171
+ UNBALANCED_QUOTES2=unbalanced quotes"
172
+ QUOTES_IN_MIDDLE=value "with" quotes
173
+ `
174
+ variables , err := ParseFromReader (strings .NewReader (content ), nil )
175
+ assert .NilError (t , err )
176
+
177
+ expectedLines := []string {
178
+ "DOUBLE_QUOTES=double quoted value" ,
179
+ "SINGLE_QUOTES=single quoted value" ,
180
+ "MIXED_QUOTES='mixed' quotes" ,
181
+ "NESTED_QUOTES=\" nested\" quotes" ,
182
+ "UNBALANCED_QUOTES=\" unbalanced quotes" ,
183
+ "UNBALANCED_QUOTES2=unbalanced quotes\" " ,
184
+ "QUOTES_IN_MIDDLE=value \" with\" quotes" ,
185
+ }
186
+ assert .Check (t , is .DeepEqual (variables , expectedLines ))
187
+ }
0 commit comments