From 5d2fc90016a2c4738b386216f1917db8f57b42d2 Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Mon, 15 Apr 2019 02:27:02 +0800 Subject: [PATCH] test: remove mock hack of `require.reesolve` ref: https://github.com/facebook/jest/pull/7687 --- .../__tests__/moduleResolver.spec.ts | 22 +++++++++++-------- .../shared-utils/src/moduleLoader.ts | 14 +++--------- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/packages/@vuepress/shared-utils/__tests__/moduleResolver.spec.ts b/packages/@vuepress/shared-utils/__tests__/moduleResolver.spec.ts index 5f3e9dad..a792c3e0 100644 --- a/packages/@vuepress/shared-utils/__tests__/moduleResolver.spec.ts +++ b/packages/@vuepress/shared-utils/__tests__/moduleResolver.spec.ts @@ -21,7 +21,7 @@ function loadMockModule (name: string) { } function resolveMockModule (name: string) { - return path.resolve(__dirname, `${MOCK_RELATIVE}/${name}`) + return require.resolve(path.resolve(__dirname, `${MOCK_RELATIVE}/${name}/`)) } const fixturesDir = path.resolve(__dirname, 'fixtures') @@ -110,12 +110,14 @@ describe('resolvePlugin', () => { expect(resolved.fromDep).toBe(false) }) - test('from dep', () => { + describe('from dep', () => { const asserts = getBaseAsserts('plugin') for (const { input, output } of asserts) { - const [, name] = output - const resolved = resolvePlugin(input) - expect(resolved.entry).toBe(loadMockModule(name)) + test(input, () => { + const [, name] = output + const resolved = resolvePlugin(input) + expect(resolved.entry).toBe(loadMockModule(name)) + }) } }) @@ -137,12 +139,14 @@ describe('resolvePlugin', () => { describe('resolveTheme', () => { const resolveTheme = themeResolver.resolve.bind(themeResolver) - test('from dep', () => { + describe('from dep', () => { const asserts = getBaseAsserts('theme') for (const { input, output } of asserts) { - const [, name] = output - const resolved = resolveTheme(input) - expect(resolved.entry).toBe(resolveMockModule(name)) + test(input, () => { + const [, name] = output + const resolved = resolveTheme(input) + expect(resolved.entry).toBe(resolveMockModule(name)) + }) } }) diff --git a/packages/@vuepress/shared-utils/src/moduleLoader.ts b/packages/@vuepress/shared-utils/src/moduleLoader.ts index b87d1875..911ac963 100644 --- a/packages/@vuepress/shared-utils/src/moduleLoader.ts +++ b/packages/@vuepress/shared-utils/src/moduleLoader.ts @@ -1,8 +1,6 @@ // Midified from https://github.com/vuejs/vue-cli/blob/dev/packages/@0vue/cli-shared-utils/lib/module.js import semver from 'semver' -import path from 'upath' -import fs from 'fs-extra' import env from './env' function resolveFallback (request: string, options: { paths: string[] }) { @@ -40,15 +38,9 @@ const resolve = semver.satisfies(process.version, '>=10.0.0') export function resolveModule (request: string, context: string): string { let resolvedPath - // TODO - // Temporary workaround for jest cannot resolve module path from '__mocks__' - // when using 'require.resolve'. - if (env.isTest && request !== '@vuepress/theme-default') { - resolvedPath = path.resolve(__dirname, '../../../../__mocks__', request) - if (!fs.existsSync(`${resolvedPath}.js`) && !fs.existsSync(`${resolvedPath}/index.js`)) { - throw new Error(`Cannot find module '${request}'`) - } - return resolvedPath + + if (env.isTest) { + return require.resolve(request) } // module.paths is for globally install packages.