@@ -10,8 +10,6 @@ const os = require('os');
1010const { inspect } = require ( 'util' ) ;
1111const { Worker } = require ( 'worker_threads' ) ;
1212
13- const workerPath = path . join ( __dirname , 'wpt/worker.js' ) ;
14-
1513function getBrowserProperties ( ) {
1614 const { node : version } = process . versions ; // e.g. 18.13.0, 20.0.0-nightly202302078e6e215481
1715 const release = / ^ \d + \. \d + \. \d + $ / . test ( version ) ;
@@ -59,8 +57,7 @@ function codeUnitStr(char) {
5957}
6058
6159class WPTReport {
62- constructor ( path ) {
63- this . filename = `report-${ path . replaceAll ( '/' , '-' ) } .json` ;
60+ constructor ( ) {
6461 this . results = [ ] ;
6562 this . time_start = Date . now ( ) ;
6663 }
@@ -99,18 +96,26 @@ class WPTReport {
9996 return result ;
10097 } ) ;
10198
102- /**
103- * Return required and some optional properties
104- * https://github.com/web-platform-tests/wpt.fyi/blob/60da175/api/README.md?plain=1#L331-L335
105- */
106- this . run_info = {
107- product : 'node.js' ,
108- ...getBrowserProperties ( ) ,
109- revision : process . env . WPT_REVISION || 'unknown' ,
110- os : getOs ( ) ,
111- } ;
99+ if ( fs . existsSync ( 'out/wpt/wptreport.json' ) ) {
100+ const prev = JSON . parse ( fs . readFileSync ( 'out/wpt/wptreport.json' ) ) ;
101+ this . results = [ ...prev . results , ...this . results ] ;
102+ this . time_start = prev . time_start ;
103+ this . time_end = Math . max ( this . time_end , prev . time_end ) ;
104+ this . run_info = prev . run_info ;
105+ } else {
106+ /**
107+ * Return required and some optional properties
108+ * https://github.com/web-platform-tests/wpt.fyi/blob/60da175/api/README.md?plain=1#L331-L335
109+ */
110+ this . run_info = {
111+ product : 'node.js' ,
112+ ...getBrowserProperties ( ) ,
113+ revision : process . env . WPT_REVISION || 'unknown' ,
114+ os : getOs ( ) ,
115+ } ;
116+ }
112117
113- fs . writeFileSync ( ` out/wpt/${ this . filename } ` , JSON . stringify ( this ) ) ;
118+ fs . writeFileSync ( ' out/wpt/wptreport.json' , JSON . stringify ( this ) ) ;
114119 }
115120}
116121
@@ -397,29 +402,6 @@ const kIncomplete = 'incomplete';
397402const kUncaught = 'uncaught' ;
398403const NODE_UNCAUGHT = 100 ;
399404
400- const limit = ( concurrency ) => {
401- let running = 0 ;
402- const queue = [ ] ;
403-
404- const execute = async ( fn ) => {
405- if ( running < concurrency ) {
406- running ++ ;
407- try {
408- await fn ( ) ;
409- } finally {
410- running -- ;
411- if ( queue . length > 0 ) {
412- execute ( queue . shift ( ) ) ;
413- }
414- }
415- } else {
416- queue . push ( fn ) ;
417- }
418- } ;
419-
420- return execute ;
421- } ;
422-
423405class WPTRunner {
424406 constructor ( path ) {
425407 this . path = path ;
@@ -443,7 +425,7 @@ class WPTRunner {
443425 this . scriptsModifier = null ;
444426
445427 if ( process . env . WPT_REPORT != null ) {
446- this . report = new WPTReport ( path ) ;
428+ this . report = new WPTReport ( ) ;
447429 }
448430 }
449431
@@ -561,8 +543,6 @@ class WPTRunner {
561543
562544 this . inProgress = new Set ( queue . map ( ( spec ) => spec . filename ) ) ;
563545
564- const run = limit ( os . availableParallelism ( ) ) ;
565-
566546 for ( const spec of queue ) {
567547 const testFileName = spec . filename ;
568548 const content = spec . getContent ( ) ;
@@ -596,7 +576,15 @@ class WPTRunner {
596576 this . scriptsModifier ?. ( obj ) ;
597577 scriptsToRun . push ( obj ) ;
598578
599- const runWorker = async ( variant ) => {
579+ /**
580+ * Example test with no META variant
581+ * https://github.com/nodejs/node/blob/03854f6/test/fixtures/wpt/WebCryptoAPI/sign_verify/hmac.https.any.js#L1-L4
582+ *
583+ * Example test with multiple META variants
584+ * https://github.com/nodejs/node/blob/03854f6/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js#L1-L9
585+ */
586+ for ( const variant of meta . variant || [ '' ] ) {
587+ const workerPath = path . join ( __dirname , 'wpt/worker.js' ) ;
600588 const worker = new Worker ( workerPath , {
601589 execArgv : this . flags ,
602590 workerData : {
@@ -647,17 +635,6 @@ class WPTRunner {
647635 } ) ;
648636
649637 await events . once ( worker , 'exit' ) . catch ( ( ) => { } ) ;
650- } ;
651-
652- /**
653- * Example test with no META variant
654- * https://github.com/nodejs/node/blob/03854f6/test/fixtures/wpt/WebCryptoAPI/sign_verify/hmac.https.any.js#L1-L4
655- *
656- * Example test with multiple META variants
657- * https://github.com/nodejs/node/blob/03854f6/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js#L1-L9
658- */
659- for ( const variant of meta . variant || [ '' ] ) {
660- run ( ( ) => runWorker ( variant ) ) ;
661638 }
662639 }
663640
0 commit comments