( source: string, filename: string, globalConfig: Config.GlobalConfig, config: Config.ProjectConfig, changedFiles?: Set<string>, sourcesRelatedToTestsInChangedFiles?: Set<string>, )
| 25 | }; |
| 26 | |
| 27 | export default async function generateEmptyCoverage( |
| 28 | source: string, |
| 29 | filename: string, |
| 30 | globalConfig: Config.GlobalConfig, |
| 31 | config: Config.ProjectConfig, |
| 32 | changedFiles?: Set<string>, |
| 33 | sourcesRelatedToTestsInChangedFiles?: Set<string>, |
| 34 | ): Promise<CoverageWorkerResult | null> { |
| 35 | const coverageOptions = { |
| 36 | changedFiles, |
| 37 | collectCoverage: globalConfig.collectCoverage, |
| 38 | collectCoverageFrom: globalConfig.collectCoverageFrom, |
| 39 | coverageProvider: globalConfig.coverageProvider, |
| 40 | globalRootDir: globalConfig.rootDir, |
| 41 | sourcesRelatedToTestsInChangedFiles, |
| 42 | }; |
| 43 | let coverageWorkerResult: CoverageWorkerResult | null = null; |
| 44 | if (shouldInstrument(filename, coverageOptions, config)) { |
| 45 | if (coverageOptions.coverageProvider === 'v8') { |
| 46 | const stat = fs.statSync(filename); |
| 47 | return { |
| 48 | kind: 'V8Coverage', |
| 49 | result: { |
| 50 | functions: [ |
| 51 | { |
| 52 | functionName: '(empty-report)', |
| 53 | isBlockCoverage: true, |
| 54 | ranges: [ |
| 55 | { |
| 56 | count: 0, |
| 57 | endOffset: stat.size, |
| 58 | startOffset: 0, |
| 59 | }, |
| 60 | ], |
| 61 | }, |
| 62 | ], |
| 63 | scriptId: '0', |
| 64 | url: filename, |
| 65 | }, |
| 66 | }; |
| 67 | } |
| 68 | |
| 69 | const scriptTransformer = await createScriptTransformer(config); |
| 70 | |
| 71 | // Transform file with instrumentation to make sure initial coverage data is well mapped to original code. |
| 72 | const {code} = await scriptTransformer.transformSourceAsync( |
| 73 | filename, |
| 74 | source, |
| 75 | { |
| 76 | instrument: true, |
| 77 | supportsDynamicImport: true, |
| 78 | supportsExportNamespaceFrom: true, |
| 79 | supportsStaticESM: true, |
| 80 | supportsTopLevelAwait: true, |
| 81 | }, |
| 82 | ); |
| 83 | // TODO: consider passing AST |
| 84 | const extracted = readInitialCoverage(code); |
no test coverage detected