@@ -6,6 +6,7 @@ import { tmpdir } from 'node:os';
66import { dirname , join , resolve } from 'node:path' ;
77import { fileURLToPath } from 'node:url' ;
88import { assertAuditBaseline , baselineFromAuditReport } from './mode-audit-baseline.mjs' ;
9+ import { findIncompleteAuditFiles , repairAuditReport } from './mode-audit-repair.mjs' ;
910
1011const toolDirectory = dirname ( fileURLToPath ( import . meta. url ) ) ;
1112const packageDirectory = resolve ( toolDirectory , '../../..' ) ;
@@ -16,29 +17,27 @@ const temporaryDirectory = await mkdtemp(join(tmpdir(), 'rxjs-next-mode-audits-'
1617try {
1718 for ( const mode of [ 'cold' , 'polyfill' ] ) {
1819 const reportPath = join ( temporaryDirectory , `${ mode } .json` ) ;
19- const result = spawnSync (
20- process . execPath ,
21- [
22- resolve ( packageDirectory , '../../node_modules/vitest/vitest.mjs' ) ,
23- '--run' ,
24- '--config' ,
25- 'vitest.ported.config.ts' ,
26- '--reporter=./test/ported/tools/mode-audit-reporter.mjs' ,
27- ] ,
28- {
29- cwd : packageDirectory ,
30- env : { ...process . env , RXJS_NEXT_AUDIT_ONLY : '1' , RXJS_NEXT_AUDIT_REPORT : reportPath , RXJS_NEXT_TEST_MODE : mode } ,
31- stdio : 'inherit' ,
20+ runAudit ( mode , reportPath ) ;
21+
22+ let [ report , expected ] = await Promise . all ( [ readJson ( reportPath ) , readJson ( resolve ( toolDirectory , `../verified-${ mode } -passes.json` ) ) ] ) ;
23+ const suiteMode = mode === 'cold' ? 'cold' : 'platform' ;
24+ const incompleteFiles = findIncompleteAuditFiles ( {
25+ migrationEntries : migrationReport . modes [ suiteMode ] ,
26+ packageDirectory,
27+ report,
28+ } ) ;
29+ if ( incompleteFiles . length > 0 ) {
30+ process . stdout . write (
31+ `Re-running ${ incompleteFiles . length } ${ mode } audit file(s) whose complete task results were not retained by the full Vitest run.\n`
32+ ) ;
33+ const replacementReports = [ ] ;
34+ for ( const [ index , file ] of incompleteFiles . entries ( ) ) {
35+ const supplementalPath = join ( temporaryDirectory , `${ mode } -supplemental-${ index } .json` ) ;
36+ runAudit ( mode , supplementalPath , file ) ;
37+ replacementReports . push ( await readJson ( supplementalPath ) ) ;
3238 }
33- ) ;
34- if ( result . signal || ( result . status !== 0 && result . status !== 1 ) ) {
35- throw new Error ( `${ mode } audit process did not complete normally: status ${ String ( result . status ) } , signal ${ String ( result . signal ) } .` ) ;
39+ report = repairAuditReport ( { packageDirectory, report, replacementReports } ) ;
3640 }
37-
38- const [ report , expected ] = await Promise . all ( [
39- readJson ( reportPath ) ,
40- readJson ( resolve ( toolDirectory , `../verified-${ mode } -passes.json` ) ) ,
41- ] ) ;
4241 const actual = baselineFromAuditReport ( { manifest, migrationReport, mode, packageDirectory, report } ) ;
4342 assertAuditBaseline ( actual , expected ) ;
4443 process . stdout . write (
5251async function readJson ( path ) {
5352 return JSON . parse ( await readFile ( path , 'utf8' ) ) ;
5453}
54+
55+ function runAudit ( mode , reportPath , file ) {
56+ const result = spawnSync (
57+ process . execPath ,
58+ [
59+ resolve ( packageDirectory , '../../node_modules/vitest/vitest.mjs' ) ,
60+ '--run' ,
61+ ...( file ? [ file ] : [ ] ) ,
62+ '--config' ,
63+ 'vitest.ported.config.ts' ,
64+ '--reporter=./test/ported/tools/mode-audit-reporter.mjs' ,
65+ ] ,
66+ {
67+ cwd : packageDirectory ,
68+ env : { ...process . env , RXJS_NEXT_AUDIT_ONLY : '1' , RXJS_NEXT_AUDIT_REPORT : reportPath , RXJS_NEXT_TEST_MODE : mode } ,
69+ stdio : 'inherit' ,
70+ }
71+ ) ;
72+ if ( result . signal || ( result . status !== 0 && result . status !== 1 ) ) {
73+ throw new Error ( `${ mode } audit process did not complete normally: status ${ String ( result . status ) } , signal ${ String ( result . signal ) } .` ) ;
74+ }
75+ }
0 commit comments