@@ -10,6 +10,20 @@ describe("SHOULD", function() {
10
10
describe ( "Process " , function ( ) {
11
11
var util = require ( "../index" ) ;
12
12
13
+ function parseAndValidate ( value , expectedResult , tryWithSingleQuotes ) {
14
+ var results = util . parseArgsStringToArgv ( value ) ;
15
+ expect ( results . length ) . toBe ( expectedResult . length ) ;
16
+ for ( var i = 0 ; i < results . length ; ++ i ) {
17
+ expect ( results [ i ] ) . toEqual ( expectedResult [ i ] ) ;
18
+ }
19
+ if ( tryWithSingleQuotes ) {
20
+ var expectedWithSingleQuotes = expectedResult . map ( function ( r ) {
21
+ return r . replace ( / " / g, "'" ) ;
22
+ } ) ;
23
+ parseAndValidate ( value . replace ( / " / g, "'" ) , expectedWithSingleQuotes , false ) ;
24
+ }
25
+ }
26
+
13
27
it ( "an arguments array correctly with file and env" , function ( done ) {
14
28
var results = util . parseArgsStringToArgv ( "-test" , "node" , "testing.js" ) ;
15
29
expect ( results . length ) . toBe ( 3 ) ;
@@ -20,128 +34,105 @@ describe("Process ", function() {
20
34
} ) ;
21
35
22
36
it ( "an arguments array correctly without file and env" , function ( done ) {
23
- var results = util . parseArgsStringToArgv ( "-test" ) ;
24
- expect ( results . length ) . toBe ( 1 ) ;
25
- expect ( results [ 0 ] ) . toEqual ( "-test" ) ;
37
+ parseAndValidate ( "-test" , [ "-test" ] ) ;
26
38
done ( ) ;
27
39
} ) ;
28
40
29
41
it ( "a single key" , function ( done ) {
30
- var results = util . parseArgsStringToArgv ( "-test" ) ;
31
- expect ( results . length ) . toBe ( 1 ) ;
32
- expect ( results [ 0 ] ) . toEqual ( "-test" ) ;
42
+ parseAndValidate ( "-test" , [ "-test" ] ) ;
33
43
done ( ) ;
34
44
} ) ;
35
45
36
46
it ( "a single key with a value" , function ( done ) {
37
- var results = util . parseArgsStringToArgv ( "-test testing" ) ;
38
- expect ( results . length ) . toBe ( 2 ) ;
39
- expect ( results [ 0 ] ) . toEqual ( "-test" ) ;
40
- expect ( results [ 1 ] ) . toEqual ( "testing" ) ;
47
+ parseAndValidate ( "-test testing" , [ "-test" , "testing" ] ) ;
41
48
done ( ) ;
42
49
} ) ;
43
50
44
51
it ( "a single key=value" , function ( done ) {
45
- var results = util . parseArgsStringToArgv ( "-test=testing" ) ;
46
- expect ( results . length ) . toBe ( 1 ) ;
47
- expect ( results [ 0 ] ) . toEqual ( "-test=testing" ) ;
52
+ parseAndValidate ( "-test=testing" , [ "-test=testing" ] ) ;
48
53
done ( ) ;
49
54
} ) ;
50
55
51
- it ( "a single value with double quotes" , function ( done ) {
52
- var results = util . parseArgsStringToArgv ( '"test quotes"' ) ;
53
- expect ( results . length ) . toBe ( 1 ) ;
54
- expect ( results [ 0 ] ) . toEqual ( "test quotes" ) ;
56
+ it ( "a single value with quotes" , function ( done ) {
57
+ parseAndValidate ( '"test quotes"' , [ "test quotes" ] , true ) ;
55
58
done ( ) ;
56
59
} ) ;
57
60
58
- it ( "a single value with single quotes" , function ( done ) {
59
- var results = util . parseArgsStringToArgv ( "'test quotes'" ) ;
60
- expect ( results . length ) . toBe ( 1 ) ;
61
- expect ( results [ 0 ] ) . toEqual ( "test quotes" ) ;
61
+ it ( "a single value with empty quotes" , function ( done ) {
62
+ parseAndValidate ( '""' , [ "" ] , true ) ;
62
63
done ( ) ;
63
64
} ) ;
64
65
65
- it ( "a single value with empty double quotes" , function ( done ) {
66
- var results = util . parseArgsStringToArgv ( '""' ) ;
67
- expect ( results . length ) . toBe ( 1 ) ;
68
- expect ( results [ 0 ] ) . toEqual ( "" ) ;
66
+ it ( "a complex string with quotes" , function ( done ) {
67
+ parseAndValidate ( '-testing test -valid=true --quotes "test quotes"' , [
68
+ "-testing" ,
69
+ "test" ,
70
+ "-valid=true" ,
71
+ "--quotes" ,
72
+ "test quotes" ,
73
+ ] , true ) ;
69
74
done ( ) ;
70
75
} ) ;
71
76
72
- it ( "a single value with empty single quotes" , function ( done ) {
73
- var results = util . parseArgsStringToArgv ( "''" ) ;
74
- expect ( results . length ) . toBe ( 1 ) ;
75
- expect ( results [ 0 ] ) . toEqual ( "" ) ;
77
+ it ( "a complex string with empty quotes" , function ( done ) {
78
+ parseAndValidate ( '-testing test -valid=true --quotes ""' , [
79
+ "-testing" ,
80
+ "test" ,
81
+ "-valid=true" ,
82
+ "--quotes" ,
83
+ "" ,
84
+ ] , true ) ;
76
85
done ( ) ;
77
86
} ) ;
78
87
79
- it ( "a complex string with double quotes" , function ( done ) {
80
- var results = util . parseArgsStringToArgv ( '-testing test -valid=true --quotes "test quotes"' ) ;
81
- expect ( results . length ) . toBe ( 5 ) ;
82
- expect ( results [ 0 ] ) . toEqual ( "-testing" ) ;
83
- expect ( results [ 1 ] ) . toEqual ( "test" ) ;
84
- expect ( results [ 2 ] ) . toEqual ( "-valid=true" ) ;
85
- expect ( results [ 3 ] ) . toEqual ( "--quotes" ) ;
86
- expect ( results [ 4 ] ) . toEqual ( "test quotes" ) ;
87
- done ( ) ;
88
- } ) ;
89
-
90
- it ( "a complex string with single quotes" , function ( done ) {
91
- var results = util . parseArgsStringToArgv ( "-testing test -valid=true --quotes 'test quotes'" ) ;
92
- expect ( results . length ) . toBe ( 5 ) ;
93
- expect ( results [ 0 ] ) . toEqual ( "-testing" ) ;
94
- expect ( results [ 1 ] ) . toEqual ( "test" ) ;
95
- expect ( results [ 2 ] ) . toEqual ( "-valid=true" ) ;
96
- expect ( results [ 3 ] ) . toEqual ( "--quotes" ) ;
97
- expect ( results [ 4 ] ) . toEqual ( "test quotes" ) ;
88
+ it ( "a complex string with nested quotes" , function ( done ) {
89
+ parseAndValidate ( '--title "Peter\'s Friends" --name \'Phil "The Power" Taylor\'' , [
90
+ "--title" ,
91
+ "Peter's Friends" ,
92
+ "--name" ,
93
+ 'Phil "The Power" Taylor' ,
94
+ ] ) ;
98
95
done ( ) ;
99
96
} ) ;
100
97
101
- it ( "a complex string with empty double quotes" , function ( done ) {
102
- var results = util . parseArgsStringToArgv ( '-testing test -valid=true --quotes ""' ) ;
103
- expect ( results . length ) . toBe ( 5 ) ;
104
- expect ( results [ 0 ] ) . toEqual ( "-testing" ) ;
105
- expect ( results [ 1 ] ) . toEqual ( "test" ) ;
106
- expect ( results [ 2 ] ) . toEqual ( "-valid=true" ) ;
107
- expect ( results [ 3 ] ) . toEqual ( "--quotes" ) ;
108
- expect ( results [ 4 ] ) . toEqual ( "" ) ;
98
+ it ( "a complex key value with quotes" , function ( done ) {
99
+ parseAndValidate ( '--name=\'Phil Taylor\' --title="Peter\'s Friends"' , [
100
+ "--name='Phil Taylor'" ,
101
+ '--title="Peter\'s Friends"' ,
102
+ ] ) ;
109
103
done ( ) ;
110
104
} ) ;
111
105
112
- it ( "a complex string with empty single quotes" , function ( done ) {
113
- var results = util . parseArgsStringToArgv ( "-testing test -valid=true --quotes ''" ) ;
114
- expect ( results . length ) . toBe ( 5 ) ;
115
- expect ( results [ 0 ] ) . toEqual ( "-testing" ) ;
116
- expect ( results [ 1 ] ) . toEqual ( "test" ) ;
117
- expect ( results [ 2 ] ) . toEqual ( "-valid=true" ) ;
118
- expect ( results [ 3 ] ) . toEqual ( "--quotes" ) ;
119
- expect ( results [ 4 ] ) . toEqual ( "" ) ;
106
+ it ( "a complex key value with nested quotes" , function ( done ) {
107
+ parseAndValidate ( '--name=\'Phil "The Power" Taylor\'' , [
108
+ '--name=\'Phil "The Power" Taylor\''
109
+ ] ) ;
120
110
done ( ) ;
121
111
} ) ;
122
112
123
- it ( "a complex string with nested quotes" , function ( done ) {
124
- var results = util . parseArgsStringToArgv ( '--title "Peter\'s Friends" --name \'Phil "The Power" Taylor\'' ) ;
125
- expect ( results . length ) . toBe ( 4 ) ;
126
- expect ( results [ 0 ] ) . toEqual ( "--title" ) ;
127
- expect ( results [ 1 ] ) . toEqual ( "Peter's Friends" ) ;
128
- expect ( results [ 2 ] ) . toEqual ( "--name" ) ;
129
- expect ( results [ 3 ] ) . toEqual ( 'Phil "The Power" Taylor' ) ;
113
+ it ( "nested quotes with no spaces" , function ( done ) {
114
+ parseAndValidate ( 'jake run:silent["echo 1"] --trace' , [
115
+ "jake" ,
116
+ 'run:silent["echo 1"]' ,
117
+ "--trace" ,
118
+ ] , true ) ;
130
119
done ( ) ;
131
120
} ) ;
132
121
133
- it ( "a complex key value with quotes" , function ( done ) {
134
- var results = util . parseArgsStringToArgv ( '--name=\'Phil Taylor\' --title="Peter\'s Friends"' ) ;
135
- expect ( results . length ) . toBe ( 2 ) ;
136
- expect ( results [ 0 ] ) . toEqual ( "--name='Phil Taylor'" ) ;
137
- expect ( results [ 1 ] ) . toEqual ( '--title="Peter\'s Friends"' ) ;
122
+ it ( "multiple nested quotes with no spaces" , function ( done ) {
123
+ parseAndValidate ( 'jake run:silent["echo 1"]["echo 2"] --trace' , [
124
+ "jake" ,
125
+ 'run:silent["echo 1"]["echo 2"]' ,
126
+ "--trace" ,
127
+ ] , true ) ;
138
128
done ( ) ;
139
129
} ) ;
140
130
141
- it ( "a complex key value with nested quotes" , function ( done ) {
142
- var results = util . parseArgsStringToArgv ( '--name=\'Phil "The Power" Taylor\'' ) ;
143
- expect ( results . length ) . toBe ( 1 ) ;
144
- expect ( results [ 0 ] ) . toEqual ( '--name=\'Phil "The Power" Taylor\'' ) ;
131
+ it ( "complex multiple nested quotes" , function ( done ) {
132
+ parseAndValidate ( 'cli value("echo")[\'grep\']+"Peter\'s Friends"' , [
133
+ "cli" ,
134
+ 'value("echo")[\'grep\']+"Peter\'s Friends"' ,
135
+ ] ) ;
145
136
done ( ) ;
146
137
} ) ;
147
138
} ) ;
0 commit comments