@@ -12,79 +12,103 @@ describe('args', () => {
12
12
} )
13
13
14
14
test ( 'should return an object' , ( ) => {
15
- let opts = { flags : { } , aliases : { } }
15
+ let opts = { flags : { } , aliases : { } , variables : { } }
16
16
process . argv = [ '' , '' ]
17
17
return parseArgs ( opts ) . then ( ( result ) => {
18
18
expect ( result ) . toEqual ( { commands : [ ] , variables : { } } )
19
19
} )
20
20
} )
21
21
22
22
test ( 'should parse single commands' , ( ) => {
23
- let opts = { flags : { } , aliases : { } }
23
+ let opts = { flags : { } , aliases : { } , variables : { } }
24
24
argv ( 'foo' )
25
25
return parseArgs ( opts ) . then ( ( result ) => {
26
26
expect ( result ) . toEqual ( { commands : [ 'foo' ] , variables : { } } )
27
27
} )
28
28
} )
29
29
30
30
test ( 'should parse multiple commands' , ( ) => {
31
- let opts = { flags : { } , aliases : { } }
31
+ let opts = { flags : { } , aliases : { } , variables : { } }
32
32
argv ( 'foo bar' )
33
33
return parseArgs ( opts ) . then ( ( result ) => {
34
34
expect ( result ) . toEqual ( { commands : [ 'foo' , 'bar' ] , variables : { } } )
35
35
} )
36
36
} )
37
37
38
38
test ( 'should parse flags' , ( ) => {
39
- let opts = { flags : { foo : 'b' } , aliases : { } }
39
+ let opts = { flags : { foo : 'b' } , aliases : { } , variables : { } }
40
40
argv ( 'foo -b' )
41
41
return parseArgs ( opts ) . then ( ( result ) => {
42
42
expect ( result ) . toEqual ( { commands : [ 'foo' ] , foo : true , variables : { } } )
43
43
} )
44
44
} )
45
45
46
46
test ( 'should parse flags with multiple aliases' , ( ) => {
47
- let opts = { flags : { foo : 'br' } , aliases : { } }
47
+ let opts = { flags : { foo : 'br' } , aliases : { } , variables : { } }
48
48
argv ( 'foo -r' )
49
49
return parseArgs ( opts ) . then ( ( result ) => {
50
50
expect ( result ) . toEqual ( { commands : [ 'foo' ] , foo : true , variables : { } } )
51
51
} )
52
52
} )
53
53
54
54
test ( 'should parse compound flags' , ( ) => {
55
- let opts = { flags : { bar : 'x' , roo : 'r' } , aliases : { } }
55
+ let opts = { flags : { bar : 'x' , roo : 'r' } , aliases : { } , variables : { } }
56
56
argv ( 'foo -xr' )
57
57
return parseArgs ( opts ) . then ( ( result ) => {
58
58
expect ( result ) . toEqual ( { commands : [ 'foo' ] , bar : true , roo : true , variables : { } } )
59
59
} )
60
60
} )
61
61
62
62
test ( 'should parse full flags' , ( ) => {
63
- let opts = { flags : { bar : 'x' , roo : 'y' , oot : 'z' } , aliases : { } }
63
+ let opts = { flags : { bar : 'x' , roo : 'y' , oot : 'z' } , aliases : { } , variables : { } }
64
64
argv ( 'foo --bar --roo' )
65
65
return parseArgs ( opts ) . then ( ( result ) => {
66
66
expect ( result ) . toEqual ( { commands : [ 'foo' ] , bar : true , roo : true , variables : { } } )
67
67
} )
68
68
} )
69
69
70
70
test ( 'should parse variables' , ( ) => {
71
- let opts = { flags : { } , aliases : { } }
71
+ let opts = { flags : { } , aliases : { } , variables : { } }
72
72
argv ( 'foo var1=abc var2=def' )
73
73
return parseArgs ( opts ) . then ( ( result ) => {
74
74
expect ( result ) . toEqual ( { commands : [ 'foo' ] , variables : { var1 : 'abc' , var2 : 'def' } } )
75
75
} )
76
76
} )
77
77
78
78
test ( 'should parse variables correctly with equal signs in value' , ( ) => {
79
- let opts = { flags : { } , aliases : { } }
79
+ let opts = { flags : { } , aliases : { } , variables : { var1 : false } }
80
80
argv ( 'foo var1=abc var2=bar=12' )
81
81
return parseArgs ( opts ) . then ( ( result ) => {
82
82
expect ( result ) . toEqual ( { commands : [ 'foo' ] , variables : { var1 : 'abc' , var2 : 'bar=12' } } )
83
83
} )
84
84
} )
85
85
86
+ test ( 'should parse variables correctly with --' , ( ) => {
87
+ let opts = { flags : { } , aliases : { } , variables : { var2 : false } }
88
+ argv ( 'foo var1=abc --var2 bar=12' )
89
+ return parseArgs ( opts ) . then ( ( result ) => {
90
+ expect ( result ) . toEqual ( { commands : [ 'foo' ] , variables : { var1 : 'abc' , var2 : 'bar=12' } } )
91
+ } )
92
+ } )
93
+
94
+ test ( 'should parse variables correctly with -- and equal signs' , ( ) => {
95
+ let opts = { flags : { } , aliases : { } , variables : { var2 : false } }
96
+ argv ( 'foo var1=abc --var2=bar=12 --var3=12' )
97
+ return parseArgs ( opts ) . then ( ( result ) => {
98
+ expect ( result ) . toEqual ( { commands : [ 'foo' ] , variables : { var1 : 'abc' , var2 : 'bar=12' , 'var3' : '12' } } )
99
+ } )
100
+ } )
101
+
102
+ test ( 'should parse variables and use arrays for duplicate variables' , ( ) => {
103
+ let opts = { flags : { } , aliases : { } , variables : { var2 : true , var4 : true } }
104
+ argv ( 'foo var1=abc --var2=bar=12 --var3=12 --var2=bar=24 --var3=24 --var4=1,2,3' )
105
+ return parseArgs ( opts ) . then ( ( result ) => {
106
+ expect ( result ) . toEqual ( { commands : [ 'foo' ] , variables : { var1 : 'abc' , var2 : [ 'bar=12' , 'bar=24' ] , 'var3' : '24' , 'var4' : [ '1' , '2' , '3' ] } } )
107
+ } )
108
+ } )
109
+
86
110
test ( 'should include env variables with pgb_ prefix' , ( ) => {
87
- let opts = { flags : { } , aliases : { } }
111
+ let opts = { flags : { } , aliases : { } , variables : { } }
88
112
argv ( 'foo' )
89
113
process . env [ 'pgb_var1' ] = 'abc'
90
114
return parseArgs ( opts ) . then ( ( result ) => {
@@ -93,7 +117,7 @@ describe('args', () => {
93
117
} )
94
118
95
119
test ( 'should obey precedence, variables > envs' , ( ) => {
96
- let opts = { flags : { } , aliases : { } }
120
+ let opts = { flags : { } , aliases : { } , variables : { } }
97
121
argv ( 'foo var1=bar' )
98
122
process . env [ 'pgb_var1' ] = 'foo'
99
123
return parseArgs ( opts ) . then ( ( result ) => {
@@ -109,7 +133,7 @@ describe('args', () => {
109
133
afterAll ( ( ) => stdin . restore ( ) )
110
134
111
135
test ( 'should parse piped data' , ( done ) => {
112
- let opts = { flags : { } , aliases : { } }
136
+ let opts = { flags : { } , aliases : { } , variables : { } }
113
137
argv ( 'foo' )
114
138
parseArgs ( opts ) . then ( ( result ) => {
115
139
expect ( result ) . toEqual ( { commands : [ 'foo' ] , variables : { foo : 'bar' } } )
@@ -121,7 +145,7 @@ describe('args', () => {
121
145
} )
122
146
123
147
test ( 'should allow empty input' , ( done ) => {
124
- let opts = { flags : { } , aliases : { } }
148
+ let opts = { flags : { } , aliases : { } , variables : { } }
125
149
argv ( 'foo' )
126
150
parseArgs ( opts ) . then ( ( result ) => {
127
151
expect ( result ) . toEqual ( { commands : [ 'foo' ] , variables : { } } )
@@ -133,7 +157,7 @@ describe('args', () => {
133
157
} )
134
158
135
159
test ( 'should fail on bad json' , ( done ) => {
136
- let opts = { flags : { } , aliases : { } }
160
+ let opts = { flags : { } , aliases : { } , variables : { } }
137
161
argv ( 'foo' )
138
162
parseArgs ( opts ) . then ( ( result ) => {
139
163
done . fail ( 'pipe successful' )
@@ -147,7 +171,7 @@ describe('args', () => {
147
171
} )
148
172
149
173
test ( 'should obey precedence, variables > pipe > envs' , ( done ) => {
150
- let opts = { flags : { } , aliases : { } }
174
+ let opts = { flags : { } , aliases : { } , variables : { } }
151
175
process . env [ 'pgb_var1' ] = 'foo'
152
176
parseArgs ( opts ) . then ( ( result ) => {
153
177
expect ( result ) . toEqual ( { commands : [ 'foo' ] , variables : { var1 : 'yut' } } )
0 commit comments