@@ -23,6 +23,9 @@ func TestParser(t *testing.T) {
2323 outputID , _ , _ := newLitToken ([]rune ("output" ))
2424 outputLit , _ , _ := newLitToken ([]rune ("json" ))
2525
26+ sepInValueID , _ , _ := newLitToken ([]rune ("sepInValue" ))
27+ sepInValueLit := newToken (TokenOp , []rune ("=:[foo]]bar[" ), StringType )
28+
2629 equalOp , _ , _ := newOpToken ([]rune ("= 1234" ))
2730 equalColonOp , _ , _ := newOpToken ([]rune (": 1234" ))
2831 numLit , _ , _ := newLitToken ([]rune ("1234" ))
@@ -51,6 +54,9 @@ func TestParser(t *testing.T) {
5154 outputEQExpr := newEqualExpr (newExpression (outputID ), equalOp )
5255 outputEQExpr .AppendChild (newExpression (outputLit ))
5356
57+ sepInValueExpr := newEqualExpr (newExpression (sepInValueID ), equalOp )
58+ sepInValueExpr .AppendChild (newExpression (sepInValueLit ))
59+
5460 cases := []struct {
5561 name string
5662 r io.Reader
@@ -65,24 +71,48 @@ func TestParser(t *testing.T) {
6571 },
6672 },
6773 {
68- name : "0==0" ,
69- r : bytes .NewBuffer ([]byte (`0==0` )),
70- expectedError : true ,
74+ name : "0==0" ,
75+ r : bytes .NewBuffer ([]byte (`0==0` )),
76+ expectedStack : []AST {
77+ func () AST {
78+ equalExpr := newEqualExpr (newExpression (newToken (TokenLit , []rune ("0" ), StringType )), equalOp )
79+ equalExpr .AppendChild (newExpression (newToken (TokenOp , []rune ("=0" ), StringType )))
80+ return newExprStatement (equalExpr )
81+ }(),
82+ },
7183 },
7284 {
7385 name : "0=:0" ,
7486 r : bytes .NewBuffer ([]byte (`0=:0` )),
75- expectedError : true ,
87+ expectedStack : []AST {
88+ func () AST {
89+ equalExpr := newEqualExpr (newExpression (newToken (TokenLit , []rune ("0" ), StringType )), equalOp )
90+ equalExpr .AppendChild (newExpression (newToken (TokenOp , []rune (":0" ), StringType )))
91+ return newExprStatement (equalExpr )
92+ }(),
93+ },
7694 },
7795 {
7896 name : "0:=0" ,
7997 r : bytes .NewBuffer ([]byte (`0:=0` )),
80- expectedError : true ,
98+ expectedStack : []AST {
99+ func () AST {
100+ equalExpr := newEqualExpr (newExpression (newToken (TokenLit , []rune ("0" ), StringType )), equalColonOp )
101+ equalExpr .AppendChild (newExpression (newToken (TokenOp , []rune ("=0" ), StringType )))
102+ return newExprStatement (equalExpr )
103+ }(),
104+ },
81105 },
82106 {
83107 name : "0::0" ,
84108 r : bytes .NewBuffer ([]byte (`0::0` )),
85- expectedError : true ,
109+ expectedStack : []AST {
110+ func () AST {
111+ equalExpr := newEqualExpr (newExpression (newToken (TokenLit , []rune ("0" ), StringType )), equalColonOp )
112+ equalExpr .AppendChild (newExpression (newToken (TokenOp , []rune (":0" ), StringType )))
113+ return newExprStatement (equalExpr )
114+ }(),
115+ },
86116 },
87117 {
88118 name : "section with variable" ,
@@ -287,6 +317,25 @@ output = json
287317 newExprStatement (outputEQExpr ),
288318 },
289319 },
320+ {
321+ name : "token seperators [ and ] in values" ,
322+ r : bytes .NewBuffer ([]byte (
323+ `[default]
324+ sepInValue = =:[foo]]bar[
325+ output = json
326+ [assumerole]
327+ sepInValue==:[foo]]bar[
328+ output = json
329+ ` )),
330+ expectedStack : []AST {
331+ newCompletedSectionStatement (defaultProfileStmt ),
332+ newExprStatement (sepInValueExpr ),
333+ newExprStatement (outputEQExpr ),
334+ newCompletedSectionStatement (assumeProfileStmt ),
335+ newExprStatement (sepInValueExpr ),
336+ newExprStatement (outputEQExpr ),
337+ },
338+ },
290339 }
291340
292341 for i , c := range cases {
0 commit comments