@@ -11,6 +11,20 @@ foo true false
1111barbar false twice
1212` . trim ( ) ;
1313
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+
1428describe ( 'asTableLines' , ( ) => {
1529 it ( 'should report failure if kubectl failed to run' , ( ) => {
1630 const result = parser . asTableLines ( undefined ) ;
@@ -84,4 +98,40 @@ describe('parseTabular', () => {
8498 assert . equal ( objects [ 1 ] . foo , 'false' ) ;
8599 assert . equal ( objects [ 1 ] . bar , 'twice' ) ;
86100 } ) ;
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+ } ) ;
87137} ) ;
0 commit comments