@@ -46,9 +46,64 @@ var builtinTests = []testCase{
4646 Code : ast .Word ("1" ),
4747 },
4848 }},
49+
50+ {`unset var` , ast.Script {
51+ ast.Unset {
52+ Names : []ast.Expression {
53+ ast .Word ("var" ),
54+ },
55+ },
56+ }},
57+ {`unset var1 $var2 var3` , ast.Script {
58+ ast.Unset {
59+ Names : []ast.Expression {
60+ ast .Word ("var1" ),
61+ ast .Var ("var2" ),
62+ ast .Word ("var3" )},
63+ },
64+ }},
65+ {`unset var1 # comment` , ast.Script {
66+ ast.Unset {
67+ Names : []ast.Expression {
68+ ast .Word ("var1" ),
69+ },
70+ },
71+ }},
72+ {`unset var1 && unset var1` , ast.Script {
73+ ast.List {
74+ Left : ast.Unset {
75+ Names : []ast.Expression {
76+ ast .Word ("var1" ),
77+ },
78+ },
79+ Operator : "&&" ,
80+ Right : ast.Unset {
81+ Names : []ast.Expression {
82+ ast .Word ("var1" ),
83+ },
84+ },
85+ },
86+ }},
87+ {`
88+ unset var1
89+ unset var2
90+ ` , ast.Script {
91+ ast.Unset {Names : []ast.Expression {ast .Word ("var1" )}},
92+ ast.Unset {Names : []ast.Expression {ast .Word ("var2" )}},
93+ }},
94+ {`
95+ unset -f var1
96+ unset -v var2
97+ ` , ast.Script {
98+ ast.Unset {Flag : "-f" , Names : []ast.Expression {ast .Word ("var1" )}},
99+ ast.Unset {Flag : "-v" , Names : []ast.Expression {ast .Word ("var2" )}},
100+ }},
49101}
50102
51103var builtinsErrorHandlingCases = []errorHandlingTestCase {
52104 {`exit <foo` , "syntax error: unexpected token `<`. (line: 1, column: 6)" },
53105 {`return <foo` , "syntax error: unexpected token `<`. (line: 1, column: 8)" },
106+ {`unset` , "syntax error: unexpected token `end of file`. (line: 1, column: 6)" },
107+ {`unset -` , "syntax error: expected a valid flag character after `-`, found `end of file`. (line: 1, column: 8)" },
108+ {`unset -k` , "syntax error: expected a valid flag character after `-`, found `k`. (line: 1, column: 8)" },
54109}
0 commit comments