123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', {
- value: true
- });
- exports.isSnapshotPath =
- exports.buildSnapshotResolver =
- exports.EXTENSION =
- exports.DOT_EXTENSION =
- void 0;
- var path = _interopRequireWildcard(require('path'));
- var _chalk = _interopRequireDefault(require('chalk'));
- var _transform = require('@jest/transform');
- var _jestUtil = require('jest-util');
- 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 EXTENSION = 'snap';
- exports.EXTENSION = EXTENSION;
- const DOT_EXTENSION = '.' + EXTENSION;
- exports.DOT_EXTENSION = DOT_EXTENSION;
- const isSnapshotPath = path => path.endsWith(DOT_EXTENSION);
- exports.isSnapshotPath = isSnapshotPath;
- const cache = new Map();
- const buildSnapshotResolver = async (
- config,
- localRequire = (0, _transform.createTranspilingRequire)(config)
- ) => {
- var _cache$get;
- const key = config.rootDir;
- const resolver =
- (_cache$get = cache.get(key)) !== null && _cache$get !== void 0
- ? _cache$get
- : await createSnapshotResolver(
- await localRequire,
- config.snapshotResolver
- );
- cache.set(key, resolver);
- return resolver;
- };
- exports.buildSnapshotResolver = buildSnapshotResolver;
- async function createSnapshotResolver(localRequire, snapshotResolverPath) {
- return typeof snapshotResolverPath === 'string'
- ? await createCustomSnapshotResolver(snapshotResolverPath, localRequire)
- : createDefaultSnapshotResolver();
- }
- function createDefaultSnapshotResolver() {
- return {
- resolveSnapshotPath: testPath =>
- path.join(
- path.join(path.dirname(testPath), '__snapshots__'),
- path.basename(testPath) + DOT_EXTENSION
- ),
- resolveTestPath: snapshotPath =>
- path.resolve(
- path.dirname(snapshotPath),
- '..',
- path.basename(snapshotPath, DOT_EXTENSION)
- ),
- testPathForConsistencyCheck: path.posix.join(
- 'consistency_check',
- '__tests__',
- 'example.test.js'
- )
- };
- }
- async function createCustomSnapshotResolver(
- snapshotResolverPath,
- localRequire
- ) {
- const custom = (0, _jestUtil.interopRequireDefault)(
- await localRequire(snapshotResolverPath)
- ).default;
- const keys = [
- ['resolveSnapshotPath', 'function'],
- ['resolveTestPath', 'function'],
- ['testPathForConsistencyCheck', 'string']
- ];
- keys.forEach(([propName, requiredType]) => {
- if (typeof custom[propName] !== requiredType) {
- throw new TypeError(mustImplement(propName, requiredType));
- }
- });
- const customResolver = {
- resolveSnapshotPath: testPath =>
- custom.resolveSnapshotPath(testPath, DOT_EXTENSION),
- resolveTestPath: snapshotPath =>
- custom.resolveTestPath(snapshotPath, DOT_EXTENSION),
- testPathForConsistencyCheck: custom.testPathForConsistencyCheck
- };
- verifyConsistentTransformations(customResolver);
- return customResolver;
- }
- function mustImplement(propName, requiredType) {
- return (
- _chalk.default.bold(
- `Custom snapshot resolver must implement a \`${propName}\` as a ${requiredType}.`
- ) +
- '\nDocumentation: https://jestjs.io/docs/configuration#snapshotresolver-string'
- );
- }
- function verifyConsistentTransformations(custom) {
- const resolvedSnapshotPath = custom.resolveSnapshotPath(
- custom.testPathForConsistencyCheck
- );
- const resolvedTestPath = custom.resolveTestPath(resolvedSnapshotPath);
- if (resolvedTestPath !== custom.testPathForConsistencyCheck) {
- throw new Error(
- _chalk.default.bold(
- `Custom snapshot resolver functions must transform paths consistently, i.e. expects resolveTestPath(resolveSnapshotPath('${custom.testPathForConsistencyCheck}')) === ${resolvedTestPath}`
- )
- );
- }
- }
|