@@ -11,6 +11,27 @@ foo true false
11
11
barbar false twice
12
12
` . trim ( ) ;
13
13
14
+ const KUBECTL_SAMPLE_GET_WIDE_RESULT =
15
+ `
16
+ NAMESPACE NAME FOO BAR RELEASE STATUS SPLINE LEVEL
17
+ ns1 foo true false green reticulated
18
+ ns2 barbar false twice dark orange none
19
+ ` . trim ( ) ;
20
+
21
+ const KUBECTL_SAMPLE_MULTISPACE_RESULT =
22
+ `
23
+ NAMESPACE NAME FOO BAR RELEASE STATUS MOTTO
24
+ ns1 foo true false green let the games begin
25
+ ns2 barbar false twice dark orange none
26
+ ` . trim ( ) ;
27
+
28
+ const KUBECTL_SAMPLE_SKIPPED_COLUMN_RESULT =
29
+ `
30
+ NAMESPACE NAME RELEASE STATUS MOTTO
31
+ ns1 foo green hello
32
+ ns2 barbar dark orange
33
+ ` . trim ( ) ;
34
+
14
35
describe ( 'asTableLines' , ( ) => {
15
36
it ( 'should report failure if kubectl failed to run' , ( ) => {
16
37
const result = parser . asTableLines ( undefined ) ;
@@ -84,4 +105,54 @@ describe('parseTabular', () => {
84
105
assert . equal ( objects [ 1 ] . foo , 'false' ) ;
85
106
assert . equal ( objects [ 1 ] . bar , 'twice' ) ;
86
107
} ) ;
108
+ it ( 'should parse headers with spaces correctly' , ( ) => {
109
+ const result = parser . parseTabular ( { code : 0 , stdout : KUBECTL_SAMPLE_GET_WIDE_RESULT , stderr : '' } ) ;
110
+ assert . equal ( true , result . succeeded ) ;
111
+ const objects = ( < Succeeded < Dictionary < string > [ ] > > result ) . result ;
112
+ assert . equal ( objects . length , 2 ) ;
113
+ assert . equal ( objects [ 0 ] . namespace , 'ns1' ) ;
114
+ assert . equal ( objects [ 0 ] . name , 'foo' ) ;
115
+ assert . equal ( objects [ 0 ] . foo , 'true' ) ;
116
+ assert . equal ( objects [ 0 ] . bar , 'false' ) ;
117
+ assert . equal ( objects [ 0 ] [ 'release status' ] , 'green' ) ;
118
+ assert . equal ( objects [ 0 ] [ 'spline level' ] , 'reticulated' ) ;
119
+ assert . equal ( objects [ 1 ] . namespace , 'ns2' ) ;
120
+ assert . equal ( objects [ 1 ] . name , 'barbar' ) ;
121
+ assert . equal ( objects [ 1 ] . foo , 'false' ) ;
122
+ assert . equal ( objects [ 1 ] . bar , 'twice' ) ;
123
+ assert . equal ( objects [ 1 ] [ 'release status' ] , 'dark orange' ) ;
124
+ assert . equal ( objects [ 1 ] [ 'spline level' ] , 'none' ) ;
125
+ } ) ;
126
+ it ( 'should parse lines with multiple spaces correctly' , ( ) => {
127
+ const result = parser . parseTabular ( { code : 0 , stdout : KUBECTL_SAMPLE_MULTISPACE_RESULT , stderr : '' } ) ;
128
+ assert . equal ( true , result . succeeded ) ;
129
+ const objects = ( < Succeeded < Dictionary < string > [ ] > > result ) . result ;
130
+ assert . equal ( objects . length , 2 ) ;
131
+ assert . equal ( objects [ 0 ] . namespace , 'ns1' ) ;
132
+ assert . equal ( objects [ 0 ] . name , 'foo' ) ;
133
+ assert . equal ( objects [ 0 ] . foo , 'true' ) ;
134
+ assert . equal ( objects [ 0 ] . bar , 'false' ) ;
135
+ assert . equal ( objects [ 0 ] [ 'release status' ] , 'green' ) ;
136
+ assert . equal ( objects [ 0 ] [ 'motto' ] , 'let the games begin' ) ;
137
+ assert . equal ( objects [ 1 ] . namespace , 'ns2' ) ;
138
+ assert . equal ( objects [ 1 ] . name , 'barbar' ) ;
139
+ assert . equal ( objects [ 1 ] . foo , 'false' ) ;
140
+ assert . equal ( objects [ 1 ] . bar , 'twice' ) ;
141
+ assert . equal ( objects [ 1 ] [ 'release status' ] , 'dark orange' ) ;
142
+ assert . equal ( objects [ 1 ] [ 'motto' ] , 'none' ) ;
143
+ } ) ;
144
+ it ( 'should parse tables with empty cells' , ( ) => {
145
+ const result = parser . parseTabular ( { code : 0 , stdout : KUBECTL_SAMPLE_SKIPPED_COLUMN_RESULT , stderr : '' } ) ;
146
+ assert . equal ( true , result . succeeded ) ;
147
+ const objects = ( < Succeeded < Dictionary < string > [ ] > > result ) . result ;
148
+ assert . equal ( objects . length , 2 ) ;
149
+ assert . equal ( objects [ 0 ] . namespace , 'ns1' ) ;
150
+ assert . equal ( objects [ 0 ] . name , 'foo' ) ;
151
+ assert . equal ( objects [ 0 ] [ 'release status' ] , 'green' ) ;
152
+ assert . equal ( objects [ 0 ] . motto , 'hello' ) ;
153
+ assert . equal ( objects [ 1 ] . namespace , 'ns2' ) ;
154
+ assert . equal ( objects [ 1 ] . name , 'barbar' ) ;
155
+ assert . equal ( objects [ 1 ] [ 'release status' ] , 'dark orange' ) ;
156
+ assert . equal ( objects [ 1 ] . motto , '' ) ;
157
+ } ) ;
87
158
} ) ;
0 commit comments