UNPKG

4.29 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', {
4 value: true
5});
6exports.default = generateEmptyCoverage;
7
8function fs() {
9 const data = _interopRequireWildcard(require('graceful-fs'));
10
11 fs = function () {
12 return data;
13 };
14
15 return data;
16}
17
18function _istanbulLibCoverage() {
19 const data = require('istanbul-lib-coverage');
20
21 _istanbulLibCoverage = function () {
22 return data;
23 };
24
25 return data;
26}
27
28function _istanbulLibInstrument() {
29 const data = require('istanbul-lib-instrument');
30
31 _istanbulLibInstrument = function () {
32 return data;
33 };
34
35 return data;
36}
37
38function _transform() {
39 const data = require('@jest/transform');
40
41 _transform = function () {
42 return data;
43 };
44
45 return data;
46}
47
48function _getRequireWildcardCache(nodeInterop) {
49 if (typeof WeakMap !== 'function') return null;
50 var cacheBabelInterop = new WeakMap();
51 var cacheNodeInterop = new WeakMap();
52 return (_getRequireWildcardCache = function (nodeInterop) {
53 return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
54 })(nodeInterop);
55}
56
57function _interopRequireWildcard(obj, nodeInterop) {
58 if (!nodeInterop && obj && obj.__esModule) {
59 return obj;
60 }
61 if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {
62 return {default: obj};
63 }
64 var cache = _getRequireWildcardCache(nodeInterop);
65 if (cache && cache.has(obj)) {
66 return cache.get(obj);
67 }
68 var newObj = {};
69 var hasPropertyDescriptor =
70 Object.defineProperty && Object.getOwnPropertyDescriptor;
71 for (var key in obj) {
72 if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {
73 var desc = hasPropertyDescriptor
74 ? Object.getOwnPropertyDescriptor(obj, key)
75 : null;
76 if (desc && (desc.get || desc.set)) {
77 Object.defineProperty(newObj, key, desc);
78 } else {
79 newObj[key] = obj[key];
80 }
81 }
82 }
83 newObj.default = obj;
84 if (cache) {
85 cache.set(obj, newObj);
86 }
87 return newObj;
88}
89
90/**
91 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
92 *
93 * This source code is licensed under the MIT license found in the
94 * LICENSE file in the root directory of this source tree.
95 */
96async function generateEmptyCoverage(
97 source,
98 filename,
99 globalConfig,
100 config,
101 changedFiles,
102 sourcesRelatedToTestsInChangedFiles
103) {
104 const coverageOptions = {
105 changedFiles,
106 collectCoverage: globalConfig.collectCoverage,
107 collectCoverageFrom: globalConfig.collectCoverageFrom,
108 collectCoverageOnlyFrom: globalConfig.collectCoverageOnlyFrom,
109 coverageProvider: globalConfig.coverageProvider,
110 sourcesRelatedToTestsInChangedFiles
111 };
112 let coverageWorkerResult = null;
113
114 if ((0, _transform().shouldInstrument)(filename, coverageOptions, config)) {
115 if (coverageOptions.coverageProvider === 'v8') {
116 const stat = fs().statSync(filename);
117 return {
118 kind: 'V8Coverage',
119 result: {
120 functions: [
121 {
122 functionName: '(empty-report)',
123 isBlockCoverage: true,
124 ranges: [
125 {
126 count: 0,
127 endOffset: stat.size,
128 startOffset: 0
129 }
130 ]
131 }
132 ],
133 scriptId: '0',
134 url: filename
135 }
136 };
137 }
138
139 const scriptTransformer = await (0, _transform().createScriptTransformer)(
140 config
141 ); // Transform file with instrumentation to make sure initial coverage data is well mapped to original code.
142
143 const {code} = await scriptTransformer.transformSourceAsync(
144 filename,
145 source,
146 {
147 instrument: true,
148 supportsDynamicImport: true,
149 supportsExportNamespaceFrom: true,
150 supportsStaticESM: true,
151 supportsTopLevelAwait: true
152 }
153 ); // TODO: consider passing AST
154
155 const extracted = (0, _istanbulLibInstrument().readInitialCoverage)(code); // Check extracted initial coverage is not null, this can happen when using /* istanbul ignore file */
156
157 if (extracted) {
158 coverageWorkerResult = {
159 coverage: (0, _istanbulLibCoverage().createFileCoverage)(
160 extracted.coverageData
161 ),
162 kind: 'BabelCoverage'
163 };
164 }
165 }
166
167 return coverageWorkerResult;
168}