Skip to content

Commit 1e29f93

Browse files
pete911jasdel
authored andcommitted
internal/ini: Fix bug on trimming rhs spaces closes #259 (#260)
Fixes a bug trimming RHS spaces not being read correctly from the ini file. Related to: aws/aws-sdk-go#2282 Fix #259
1 parent ba9304b commit 1e29f93

File tree

4 files changed

+93
-2
lines changed

4 files changed

+93
-2
lines changed

internal/ini/ini_parser.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,13 +335,12 @@ func trimSpaces(k AST) AST {
335335
}
336336

337337
// trim right hand side of spaces
338-
for i := len(k.Root.raw) - 1; i > 0; i-- {
338+
for i := len(k.Root.raw) - 1; i >= 0; i-- {
339339
if !isWhitespace(k.Root.raw[i]) {
340340
break
341341
}
342342

343343
k.Root.raw = k.Root.raw[:len(k.Root.raw)-1]
344-
i--
345344
}
346345

347346
return k
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package ini
2+
3+
import (
4+
"reflect"
5+
"testing"
6+
)
7+
8+
func TestTrimSpaces(t *testing.T) {
9+
cases := []struct {
10+
name string
11+
node AST
12+
expectedNode AST
13+
}{
14+
{
15+
name: "simple case",
16+
node: AST{
17+
Root: Token{
18+
raw: []rune("foo"),
19+
},
20+
},
21+
expectedNode: AST{
22+
Root: Token{
23+
raw: []rune("foo"),
24+
},
25+
},
26+
},
27+
{
28+
name: "LHS case",
29+
node: AST{
30+
Root: Token{
31+
raw: []rune(" foo"),
32+
},
33+
},
34+
expectedNode: AST{
35+
Root: Token{
36+
raw: []rune("foo"),
37+
},
38+
},
39+
},
40+
{
41+
name: "RHS case",
42+
node: AST{
43+
Root: Token{
44+
raw: []rune("foo "),
45+
},
46+
},
47+
expectedNode: AST{
48+
Root: Token{
49+
raw: []rune("foo"),
50+
},
51+
},
52+
},
53+
{
54+
name: "both sides case",
55+
node: AST{
56+
Root: Token{
57+
raw: []rune(" foo "),
58+
},
59+
},
60+
expectedNode: AST{
61+
Root: Token{
62+
raw: []rune("foo"),
63+
},
64+
},
65+
},
66+
}
67+
68+
for _, c := range cases {
69+
node := trimSpaces(c.node)
70+
71+
if e, a := c.expectedNode, node; !reflect.DeepEqual(e, a) {
72+
t.Errorf("%s: expected %v, but received %v", c.name, e, a)
73+
}
74+
}
75+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[foo-profile]
2+
aws_access_key_id = accesskey
3+
aws_secret_access_key = secret
4+
aws_session_token = token
5+
aws_security_token = sectoken
6+
x_principal_arn = arn:aws:sts::myarn
7+
x_security_token_expires = time
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"foo-profile": {
3+
"aws_access_key_id": "accesskey",
4+
"aws_secret_access_key": "secret",
5+
"aws_session_token": "token",
6+
"aws_security_token": "sectoken",
7+
"x_principal_arn": "arn:aws:sts::myarn",
8+
"x_security_token_expires": "time"
9+
}
10+
}

0 commit comments

Comments
 (0)