@@ -73,9 +73,9 @@ function parseOptions(args) {
7373function print_test_successful ( ) {
7474 process . stdout . write ( "." ) ;
7575}
76+
7677function print_test_erroneous ( ) {
77- // Bold Red "F" Reset
78- process . stdout . write ( "\033[1m\x1b[31mF\x1b[0m" ) ;
78+ process . stdout . write ( "F" ) ;
7979}
8080
8181async function main ( argv ) {
@@ -84,6 +84,7 @@ async function main(argv) {
8484 process . exit ( 1 ) ;
8585 }
8686
87+ let debug = false ;
8788 const options = new Options ( ) ;
8889 try {
8990 // This is more convenient that setting fields one by one.
@@ -92,6 +93,7 @@ async function main(argv) {
9293 "--variable" , "DOC_PATH" , opts [ "doc_folder" ] ,
9394 ] ;
9495 if ( opts [ "debug" ] ) {
96+ debug = true ;
9597 args . push ( "--debug" ) ;
9698 }
9799 if ( opts [ "show_text" ] ) {
@@ -108,12 +110,12 @@ async function main(argv) {
108110
109111 let failed = false ;
110112 let files ;
111- let tests = [ ] ;
112113 if ( opts [ "files" ] . length === 0 ) {
113- files = fs . readdirSync ( opts [ "tests_folder" ] ) . filter ( file => path . extname ( file ) == ".goml" ) ;
114+ files = fs . readdirSync ( opts [ "tests_folder" ] ) ;
114115 } else {
115- files = opts [ "files" ] . filter ( file => path . extname ( file ) == ".goml" ) ;
116+ files = opts [ "files" ] ;
116117 }
118+ files = files . filter ( file => path . extname ( file ) == ".goml" ) ;
117119 if ( files . length === 0 ) {
118120 console . log ( "rustdoc-gui: No test selected" ) ;
119121 process . exit ( 2 ) ;
@@ -122,34 +124,76 @@ async function main(argv) {
122124
123125 console . log ( `running ${ files . length } rustdoc-gui tests` ) ;
124126 process . setMaxListeners ( files . length + 1 ) ;
125- for ( var i = 0 ; i < files . length ; ++ i ) {
127+ let tests = [ ] ;
128+ let results = new Array ( files . length ) ;
129+ // poormans enum
130+ const RUN_SUCCESS = 42 , RUN_FAILED = 23 , RUN_ERRORED = 13 ;
131+ for ( let i = 0 ; i < files . length ; ++ i ) {
126132 const testPath = path . join ( opts [ "tests_folder" ] , files [ i ] ) ;
127- tests . push ( runTest ( testPath , options ) ) ;
128- }
129-
130- let error_outputs = "" ;
131- let failed_outputs = "" ;
132- for ( var i = 0 ; i < tests . length ; ++ i ) {
133- await tests [ i ] . then ( out => {
134- const [ output , nb_failures ] = out ;
135- if ( nb_failures > 0 ) {
136- failed_outputs += output + "\n" ;
137- print_test_erroneous ( )
133+ tests . push (
134+ runTest ( testPath , options )
135+ . then ( out => {
136+ //console.log(i);
137+ const [ output , nb_failures ] = out ;
138+ results [ i ] = {
139+ status : nb_failures === 0 ? RUN_SUCCESS : RUN_FAILED ,
140+ output : output ,
141+ } ;
142+ if ( nb_failures > 0 ) {
143+ print_test_erroneous ( )
144+ failed = true ;
145+ } else {
146+ print_test_successful ( )
147+ }
148+ } )
149+ . catch ( err => {
150+ results [ i ] = {
151+ status : RUN_ERRORED ,
152+ output : err ,
153+ } ;
154+ print_test_erroneous ( ) ;
138155 failed = true ;
139- } else {
140- print_test_successful ( )
141- }
142- } ) . catch ( err => {
143- error_outputs += err + "\n" ;
144- print_test_erroneous ( ) ;
145- failed = true ;
146- } ) ;
156+ } )
157+ ) ;
147158 }
148- console . log ( "" )
159+ await Promise . all ( tests ) ;
160+ // final \n after the tests
161+ console . log ( "\n" ) ;
162+
163+ results . forEach ( r => {
164+ switch ( r . status ) {
165+ case RUN_SUCCESS :
166+ if ( debug === false ) {
167+ break ;
168+ }
169+ case RUN_FAILED :
170+ console . log ( r . output ) ;
171+ break ;
172+ case RUN_ERRORED :
173+ // skip
174+ break ;
175+ default :
176+ console . error ( `unexpected status = ${ r . status } ` ) ;
177+ process . exit ( 4 ) ;
178+ }
179+ } ) ;
180+ // print run errors on the bottom so developers see them better
181+ results . forEach ( r => {
182+ switch ( r . status ) {
183+ case RUN_SUCCESS :
184+ case RUN_FAILED :
185+ // skip
186+ break ;
187+ case RUN_ERRORED :
188+ console . error ( r . output ) ;
189+ break ;
190+ default :
191+ console . error ( `unexpected status = ${ r . status } ` ) ;
192+ process . exit ( 4 ) ;
193+ }
194+ } ) ;
149195
150196 if ( failed ) {
151- console . log ( failed_outputs ) ;
152- console . error ( error_outputs ) ;
153197 process . exit ( 1 ) ;
154198 }
155199}
0 commit comments