From af03f02c197f4daed38668a82ff35225d7c1e7b2 Mon Sep 17 00:00:00 2001 From: merceyz Date: Thu, 19 Nov 2020 21:57:18 +0100 Subject: [PATCH] fix: disable pnp plugin for yarn 2 only --- CHANGELOG.md | 1 + e2e/__tests__/pnp.test.ts | 18 +++++++++--------- .../__tests__/undeclared-dependency.test.js | 2 +- e2e/pnp/package.json | 4 ++-- e2e/pnp/yarn.lock | 12 ++++++------ packages/jest-resolve/src/defaultResolver.ts | 5 +++-- 6 files changed, 22 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 65d8e2fee6a2..de5729fb3929 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ - `[jest-transform]` Show enhanced `SyntaxError` message for all `SyntaxError`s ([#10749](https://github.com/facebook/jest/pull/10749)) - `[jest-transform]` [**BREAKING**] Refactor API to pass an options bag around rather than multiple boolean options ([#10753](https://github.com/facebook/jest/pull/10753)) - `[jest-transform]` [**BREAKING**] Refactor API of transformers to pass an options bag rather than separate `config` and other options +- `[jest-resolve]` Disable `jest-pnp-resolver` for Yarn 2 ([#10847](https://github.com/facebook/jest/pull/10847)) ### Chore & Maintenance diff --git a/e2e/__tests__/pnp.test.ts b/e2e/__tests__/pnp.test.ts index 89918a4f3b41..ff016a1a7e8c 100644 --- a/e2e/__tests__/pnp.test.ts +++ b/e2e/__tests__/pnp.test.ts @@ -12,21 +12,21 @@ import {json as runWithJson} from '../runJest'; const DIR = path.resolve(__dirname, '..', 'pnp'); beforeEach(() => { - runYarnInstall(DIR, {YARN_NODE_LINKER: 'pnp'}); + runYarnInstall(DIR, { + YARN_NODE_LINKER: 'pnp', + YARN_ENABLE_GLOBAL_CACHE: 'false', + }); }); it('successfully runs the tests inside `pnp/`', () => { - // https://github.com/facebook/jest/pull/8094#issuecomment-471220694 - if (process.platform === 'win32') { - console.warn('[SKIP] Does not work on Windows'); - - return; - } - const {json} = runWithJson(DIR, ['--no-cache', '--coverage'], { - env: {YARN_NODE_LINKER: 'pnp'}, + env: { + YARN_NODE_LINKER: 'pnp', + YARN_ENABLE_GLOBAL_CACHE: 'false', + }, nodeOptions: `--require ${DIR}/.pnp.js`, }); + expect(json.success).toBe(true); expect(json.numTotalTestSuites).toBe(2); }); diff --git a/e2e/pnp/__tests__/undeclared-dependency.test.js b/e2e/pnp/__tests__/undeclared-dependency.test.js index 2075e5a8c30a..d57d36b0cf44 100644 --- a/e2e/pnp/__tests__/undeclared-dependency.test.js +++ b/e2e/pnp/__tests__/undeclared-dependency.test.js @@ -9,5 +9,5 @@ it('should surface pnp errors', () => { expect(() => { require('undeclared'); - }).toThrow(expect.objectContaining({pnpCode: 'UNDECLARED_DEPENDENCY'})); + }).toThrow(expect.objectContaining({code: 'MODULE_NOT_FOUND'})); }); diff --git a/e2e/pnp/package.json b/e2e/pnp/package.json index 78792eab2194..c515e5f67354 100644 --- a/e2e/pnp/package.json +++ b/e2e/pnp/package.json @@ -1,7 +1,7 @@ { "dependencies": { - "foo": "link:./lib", - "undeclared": "link:./undeclared-dependency" + "foo": "portal:./lib", + "undeclared": "portal:./undeclared-dependency" }, "installConfig": { "pnp": true diff --git a/e2e/pnp/yarn.lock b/e2e/pnp/yarn.lock index b852e9304d64..e7edc52fa151 100644 --- a/e2e/pnp/yarn.lock +++ b/e2e/pnp/yarn.lock @@ -4,9 +4,9 @@ __metadata: version: 4 -"foo@link:./lib::locator=root-workspace-0b6124%40workspace%3A.": +"foo@portal:./lib::locator=root-workspace-0b6124%40workspace%3A.": version: 0.0.0-use.local - resolution: "foo@link:./lib::locator=root-workspace-0b6124%40workspace%3A." + resolution: "foo@portal:./lib::locator=root-workspace-0b6124%40workspace%3A." languageName: node linkType: soft @@ -14,13 +14,13 @@ __metadata: version: 0.0.0-use.local resolution: "root-workspace-0b6124@workspace:." dependencies: - foo: "link:./lib" - undeclared: "link:./undeclared-dependency" + foo: "portal:./lib" + undeclared: "portal:./undeclared-dependency" languageName: unknown linkType: soft -"undeclared@link:./undeclared-dependency::locator=root-workspace-0b6124%40workspace%3A.": +"undeclared@portal:./undeclared-dependency::locator=root-workspace-0b6124%40workspace%3A.": version: 0.0.0-use.local - resolution: "undeclared@link:./undeclared-dependency::locator=root-workspace-0b6124%40workspace%3A." + resolution: "undeclared@portal:./undeclared-dependency::locator=root-workspace-0b6124%40workspace%3A." languageName: node linkType: soft diff --git a/packages/jest-resolve/src/defaultResolver.ts b/packages/jest-resolve/src/defaultResolver.ts index f4b2097ebe5e..b97bc182a8c4 100644 --- a/packages/jest-resolve/src/defaultResolver.ts +++ b/packages/jest-resolve/src/defaultResolver.ts @@ -12,7 +12,6 @@ import type {Config} from '@jest/types'; import {tryRealpath} from 'jest-util'; type ResolverOptions = { - allowPnp?: boolean; basedir: Config.Path; browser?: boolean; defaultResolver: typeof defaultResolver; @@ -36,7 +35,9 @@ export default function defaultResolver( path: Config.Path, options: ResolverOptions, ): Config.Path { - if (process.versions.pnp && options.allowPnp !== false) { + // Yarn 2 adds support to `resolve` automatically so the pnpResolver is only + // needed for Yarn 1 which implements version 1 of the pnp spec + if (process.versions.pnp === '1') { return pnpResolver(path, options); }