@@ -11,6 +11,27 @@ 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+
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+
1435describe ( 'asTableLines' , ( ) => {
1536 it ( 'should report failure if kubectl failed to run' , ( ) => {
1637 const result = parser . asTableLines ( undefined ) ;
@@ -84,4 +105,54 @@ describe('parseTabular', () => {
84105 assert . equal ( objects [ 1 ] . foo , 'false' ) ;
85106 assert . equal ( objects [ 1 ] . bar , 'twice' ) ;
86107 } ) ;
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+ } ) ;
87158} ) ;
0 commit comments