@@ -11,6 +11,20 @@ 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
+
14
28
describe ( 'asTableLines' , ( ) => {
15
29
it ( 'should report failure if kubectl failed to run' , ( ) => {
16
30
const result = parser . asTableLines ( undefined ) ;
@@ -84,4 +98,40 @@ describe('parseTabular', () => {
84
98
assert . equal ( objects [ 1 ] . foo , 'false' ) ;
85
99
assert . equal ( objects [ 1 ] . bar , 'twice' ) ;
86
100
} ) ;
101
+ it ( 'should parse headers with spaces correctly' , ( ) => {
102
+ const result = parser . parseTabular ( { code : 0 , stdout : KUBECTL_SAMPLE_GET_WIDE_RESULT , stderr : '' } ) ;
103
+ assert . equal ( true , result . succeeded ) ;
104
+ const objects = ( < Succeeded < Dictionary < string > [ ] > > result ) . result ;
105
+ assert . equal ( objects . length , 2 ) ;
106
+ assert . equal ( objects [ 0 ] . namespace , 'ns1' ) ;
107
+ assert . equal ( objects [ 0 ] . name , 'foo' ) ;
108
+ assert . equal ( objects [ 0 ] . foo , 'true' ) ;
109
+ assert . equal ( objects [ 0 ] . bar , 'false' ) ;
110
+ assert . equal ( objects [ 0 ] [ 'release status' ] , 'green' ) ;
111
+ assert . equal ( objects [ 0 ] [ 'spline level' ] , 'reticulated' ) ;
112
+ assert . equal ( objects [ 1 ] . namespace , 'ns2' ) ;
113
+ assert . equal ( objects [ 1 ] . name , 'barbar' ) ;
114
+ assert . equal ( objects [ 1 ] . foo , 'false' ) ;
115
+ assert . equal ( objects [ 1 ] . bar , 'twice' ) ;
116
+ assert . equal ( objects [ 1 ] [ 'release status' ] , 'dark orange' ) ;
117
+ assert . equal ( objects [ 1 ] [ 'spline level' ] , 'none' ) ;
118
+ } ) ;
119
+ it ( 'should parse lines with multiple spaces correctly' , ( ) => {
120
+ const result = parser . parseTabular ( { code : 0 , stdout : KUBECTL_SAMPLE_MULTISPACE_RESULT , stderr : '' } ) ;
121
+ assert . equal ( true , result . succeeded ) ;
122
+ const objects = ( < Succeeded < Dictionary < string > [ ] > > result ) . result ;
123
+ assert . equal ( objects . length , 2 ) ;
124
+ assert . equal ( objects [ 0 ] . namespace , 'ns1' ) ;
125
+ assert . equal ( objects [ 0 ] . name , 'foo' ) ;
126
+ assert . equal ( objects [ 0 ] . foo , 'true' ) ;
127
+ assert . equal ( objects [ 0 ] . bar , 'false' ) ;
128
+ assert . equal ( objects [ 0 ] [ 'release status' ] , 'green' ) ;
129
+ assert . equal ( objects [ 0 ] [ 'motto' ] , 'let the games begin' ) ;
130
+ assert . equal ( objects [ 1 ] . namespace , 'ns2' ) ;
131
+ assert . equal ( objects [ 1 ] . name , 'barbar' ) ;
132
+ assert . equal ( objects [ 1 ] . foo , 'false' ) ;
133
+ assert . equal ( objects [ 1 ] . bar , 'twice' ) ;
134
+ assert . equal ( objects [ 1 ] [ 'release status' ] , 'dark orange' ) ;
135
+ assert . equal ( objects [ 1 ] [ 'motto' ] , 'none' ) ;
136
+ } ) ;
87
137
} ) ;
0 commit comments