@@ -111,12 +111,55 @@ func TestParsePipe(t *testing.T) {
111111func TestBasicSetAssignment (t * testing.T ) {
112112 expected := ast .NewTree ("simple set assignment" )
113113 ln := ast .NewBlockNode (token .NewFileInfo (1 , 0 ))
114- set := ast .NewSetenvNode (token .NewFileInfo (1 , 0 ), "test" )
114+ set , err := ast .NewSetenvNode (token .NewFileInfo (1 , 0 ), "test" , nil )
115+
116+ if err != nil {
117+ t .Fatal (err )
118+ }
115119
116120 ln .Push (set )
117121 expected .Root = ln
118122
119123 parserTestTable ("simple set assignment" , `setenv test` , expected , t , true )
124+
125+ // setenv with assignment
126+ expected = ast .NewTree ("setenv with simple assignment" )
127+ ln = ast .NewBlockNode (token .NewFileInfo (1 , 0 ))
128+ assign := ast .NewAssignmentNode (token .NewFileInfo (1 , 7 ),
129+ "test" ,
130+ ast .NewStringExpr (token .NewFileInfo (1 , 15 ), "hello" , true ))
131+ set , err = ast .NewSetenvNode (token .NewFileInfo (1 , 0 ), "test" , assign )
132+
133+ if err != nil {
134+ t .Fatal (err )
135+ }
136+
137+ ln .Push (set )
138+ expected .Root = ln
139+
140+ parserTestTable ("setenv with simple assignment" , `setenv test = "hello"` , expected , t , true )
141+
142+ expected = ast .NewTree ("setenv with simple cmd assignment" )
143+ ln = ast .NewBlockNode (token .NewFileInfo (1 , 0 ))
144+
145+ cmd := ast .NewCommandNode (token .NewFileInfo (1 , 15 ), "ls" , false )
146+
147+ cmdAssign , err := ast .NewExecAssignNode (token .NewFileInfo (1 , 7 ), "test" , cmd )
148+
149+ if err != nil {
150+ t .Fatal (err )
151+ }
152+
153+ set , err = ast .NewSetenvNode (token .NewFileInfo (1 , 0 ), "test" , cmdAssign )
154+
155+ if err != nil {
156+ t .Fatal (err )
157+ }
158+
159+ ln .Push (set )
160+ expected .Root = ln
161+
162+ parserTestTable ("simple assignment" , `setenv test <= ls` , expected , t , true )
120163}
121164
122165func TestBasicAssignment (t * testing.T ) {
@@ -436,7 +479,12 @@ func TestParseCd(t *testing.T) {
436479
437480 assign := ast .NewAssignmentNode (token .NewFileInfo (1 , 0 ), "HOME" , ast .NewStringExpr (token .NewFileInfo (1 , 8 ), "/" , true ))
438481
439- set := ast .NewSetenvNode (token .NewFileInfo (3 , 0 ), "HOME" )
482+ set , err := ast .NewSetenvNode (token .NewFileInfo (3 , 0 ), "HOME" , nil )
483+
484+ if err != nil {
485+ t .Fatal (err )
486+ }
487+
440488 cd = ast .NewCommandNode (token .NewFileInfo (5 , 0 ), "cd" , false )
441489 pwd := ast .NewCommandNode (token .NewFileInfo (6 , 0 ), "pwd" , false )
442490
0 commit comments