aboutsummaryrefslogtreecommitdiff
path: root/node_modules/@jest/transform/build/shouldInstrument.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@jest/transform/build/shouldInstrument.js')
-rw-r--r--node_modules/@jest/transform/build/shouldInstrument.js207
1 files changed, 207 insertions, 0 deletions
diff --git a/node_modules/@jest/transform/build/shouldInstrument.js b/node_modules/@jest/transform/build/shouldInstrument.js
new file mode 100644
index 0000000..292af31
--- /dev/null
+++ b/node_modules/@jest/transform/build/shouldInstrument.js
@@ -0,0 +1,207 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = shouldInstrument;
+
+function path() {
+ const data = _interopRequireWildcard(require('path'));
+
+ path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _micromatch() {
+ const data = _interopRequireDefault(require('micromatch'));
+
+ _micromatch = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _jestRegexUtil() {
+ const data = require('jest-regex-util');
+
+ _jestRegexUtil = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _jestUtil() {
+ const data = require('jest-util');
+
+ _jestUtil = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {default: obj};
+}
+
+function _getRequireWildcardCache(nodeInterop) {
+ if (typeof WeakMap !== 'function') return null;
+ var cacheBabelInterop = new WeakMap();
+ var cacheNodeInterop = new WeakMap();
+ return (_getRequireWildcardCache = function (nodeInterop) {
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
+ })(nodeInterop);
+}
+
+function _interopRequireWildcard(obj, nodeInterop) {
+ if (!nodeInterop && obj && obj.__esModule) {
+ return obj;
+ }
+ if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {
+ return {default: obj};
+ }
+ var cache = _getRequireWildcardCache(nodeInterop);
+ if (cache && cache.has(obj)) {
+ return cache.get(obj);
+ }
+ var newObj = {};
+ var hasPropertyDescriptor =
+ Object.defineProperty && Object.getOwnPropertyDescriptor;
+ for (var key in obj) {
+ if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {
+ var desc = hasPropertyDescriptor
+ ? Object.getOwnPropertyDescriptor(obj, key)
+ : null;
+ if (desc && (desc.get || desc.set)) {
+ Object.defineProperty(newObj, key, desc);
+ } else {
+ newObj[key] = obj[key];
+ }
+ }
+ }
+ newObj.default = obj;
+ if (cache) {
+ cache.set(obj, newObj);
+ }
+ return newObj;
+}
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+const MOCKS_PATTERN = new RegExp(
+ (0, _jestRegexUtil().escapePathForRegex)(
+ path().sep + '__mocks__' + path().sep
+ )
+);
+const cachedRegexes = new Map();
+
+const getRegex = regexStr => {
+ if (!cachedRegexes.has(regexStr)) {
+ cachedRegexes.set(regexStr, new RegExp(regexStr));
+ }
+
+ const regex = cachedRegexes.get(regexStr); // prevent stateful regexes from breaking, just in case
+
+ regex.lastIndex = 0;
+ return regex;
+};
+
+function shouldInstrument(filename, options, config) {
+ if (!options.collectCoverage) {
+ return false;
+ }
+
+ if (
+ config.forceCoverageMatch.length &&
+ _micromatch().default.any(filename, config.forceCoverageMatch)
+ ) {
+ return true;
+ }
+
+ if (
+ !config.testPathIgnorePatterns.some(pattern =>
+ getRegex(pattern).test(filename)
+ )
+ ) {
+ if (config.testRegex.some(regex => new RegExp(regex).test(filename))) {
+ return false;
+ }
+
+ if (
+ (0, _jestUtil().globsToMatcher)(config.testMatch)(
+ (0, _jestUtil().replacePathSepForGlob)(filename)
+ )
+ ) {
+ return false;
+ }
+ }
+
+ if (
+ // This configuration field contains an object in the form of:
+ // {'path/to/file.js': true}
+ options.collectCoverageOnlyFrom &&
+ !options.collectCoverageOnlyFrom[filename]
+ ) {
+ return false;
+ }
+
+ if (
+ // still cover if `only` is specified
+ !options.collectCoverageOnlyFrom &&
+ options.collectCoverageFrom.length &&
+ !(0, _jestUtil().globsToMatcher)(options.collectCoverageFrom)(
+ (0, _jestUtil().replacePathSepForGlob)(
+ path().relative(config.rootDir, filename)
+ )
+ )
+ ) {
+ return false;
+ }
+
+ if (
+ config.coveragePathIgnorePatterns.some(pattern => !!filename.match(pattern))
+ ) {
+ return false;
+ }
+
+ if (config.globalSetup === filename) {
+ return false;
+ }
+
+ if (config.globalTeardown === filename) {
+ return false;
+ }
+
+ if (config.setupFiles.includes(filename)) {
+ return false;
+ }
+
+ if (config.setupFilesAfterEnv.includes(filename)) {
+ return false;
+ }
+
+ if (MOCKS_PATTERN.test(filename)) {
+ return false;
+ }
+
+ if (options.changedFiles && !options.changedFiles.has(filename)) {
+ if (!options.sourcesRelatedToTestsInChangedFiles) {
+ return false;
+ }
+
+ if (!options.sourcesRelatedToTestsInChangedFiles.has(filename)) {
+ return false;
+ }
+ }
+
+ return true;
+}