Skip to content

Commit 73c2db0

Browse files
authored
fix: support jest.resetModules correctly in ESM (#13211)
1 parent 77adffd commit 73c2db0

File tree

6 files changed

+175
-12
lines changed

6 files changed

+175
-12
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
### Fixes
88

99
- `[babel-plugin-jest-hoist]` Support imported `jest` in mock factory ([#13188](https://github.com/facebook/jest/pull/13188))
10+
- `[jest-runtime]` Support `jest.resetModules()` with ESM ([#13211](https://github.com/facebook/jest/pull/13211))
1011

1112
### Chore & Maintenance
1213

e2e/__tests__/__snapshots__/nativeEsm.test.ts.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Ran all test suites matching /native-esm-deep-cjs-reexport.test.js/i."
1010
1111
exports[`runs test with native ESM 1`] = `
1212
"Test Suites: 1 passed, 1 total
13-
Tests: 33 passed, 33 total
13+
Tests: 34 passed, 34 total
1414
Snapshots: 0 total
1515
Time: <<REPLACED>>
1616
Ran all test suites matching /native-esm.test.js/i."

e2e/native-esm/__tests__/native-esm.test.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ test('should support importing node core modules', () => {
4646
expect(JSON.parse(readFileSync(packageJsonPath, 'utf8'))).toEqual({
4747
devDependencies: {
4848
'discord.js': '14.3.0',
49+
yargs: '^17.5.1',
4950
},
5051
jest: {
5152
testEnvironment: 'node',
@@ -300,3 +301,24 @@ test('can mock "data:" URI module', async () => {
300301
const mocked = await import(dataModule);
301302
expect(mocked.foo).toBe('bar');
302303
});
304+
305+
test('can import with module reset', async () => {
306+
const {default: yargs} = await import('yargs');
307+
const {default: yargsAgain} = await import('yargs');
308+
309+
expect(yargs).toBe(yargsAgain);
310+
311+
let args = yargs().parse([]);
312+
313+
expect(args._).toEqual([]);
314+
315+
jestObject.resetModules();
316+
317+
const {default: yargsYetAgain} = await import('yargs');
318+
319+
expect(yargs).not.toBe(yargsYetAgain);
320+
321+
args = yargsYetAgain().parse([]);
322+
323+
expect(args._).toEqual([]);
324+
});

e2e/native-esm/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
{
22
"type": "module",
33
"devDependencies": {
4-
"discord.js": "14.3.0"
4+
"discord.js": "14.3.0",
5+
"yargs": "^17.5.1"
56
},
67
"jest": {
78
"testEnvironment": "node",

e2e/native-esm/yarn.lock

Lines changed: 148 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,12 @@ __metadata:
4848
linkType: hard
4949

5050
"@sapphire/shapeshift@npm:^3.5.1":
51-
version: 3.5.1
52-
resolution: "@sapphire/shapeshift@npm:3.5.1"
51+
version: 3.6.0
52+
resolution: "@sapphire/shapeshift@npm:3.6.0"
5353
dependencies:
5454
fast-deep-equal: ^3.1.3
5555
lodash.uniqwith: ^4.5.0
56-
checksum: caecfef844c9e43e921a5051da888fae7da8980bfd9f9bb4f7fee85931d40929ffb9b6dfae464c0dccee61e56f7698f998e4d9a54d25f35fad39a51ba1a4f391
56+
checksum: 31b426424d064c516144c6eda07dfa0e44d7cbb8309dde919b923aa6ae939faac6384fa4d08db391a8da11efa3a83c18c9be1ebd053ba29403e61f5e2450b788
5757
languageName: node
5858
linkType: hard
5959

@@ -72,9 +72,9 @@ __metadata:
7272
linkType: hard
7373

7474
"@types/node@npm:*":
75-
version: 18.7.13
76-
resolution: "@types/node@npm:18.7.13"
77-
checksum: 45431e7e89ecaf85c7d2c180d801c132a7c59e2f8ad578726b6d71cc74e3267c18f9ccdcad738bc0479790c078f0c79efb0e58da2c6be535c15995dbb19050c9
75+
version: 18.7.14
76+
resolution: "@types/node@npm:18.7.14"
77+
checksum: 99cf28ff854100158de875cca23c7acc3cc01dfee526a52b90b7f36767c821bcbaf2be0a98a70f06f3b78f3c60639168ff949d725b61e2e124f9f71f1fb8043d
7878
languageName: node
7979
linkType: hard
8080

@@ -87,10 +87,53 @@ __metadata:
8787
languageName: node
8888
linkType: hard
8989

90+
"ansi-regex@npm:^5.0.1":
91+
version: 5.0.1
92+
resolution: "ansi-regex@npm:5.0.1"
93+
checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b
94+
languageName: node
95+
linkType: hard
96+
97+
"ansi-styles@npm:^4.0.0":
98+
version: 4.3.0
99+
resolution: "ansi-styles@npm:4.3.0"
100+
dependencies:
101+
color-convert: ^2.0.1
102+
checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4
103+
languageName: node
104+
linkType: hard
105+
106+
"cliui@npm:^7.0.2":
107+
version: 7.0.4
108+
resolution: "cliui@npm:7.0.4"
109+
dependencies:
110+
string-width: ^4.2.0
111+
strip-ansi: ^6.0.0
112+
wrap-ansi: ^7.0.0
113+
checksum: ce2e8f578a4813806788ac399b9e866297740eecd4ad1823c27fd344d78b22c5f8597d548adbcc46f0573e43e21e751f39446c5a5e804a12aace402b7a315d7f
114+
languageName: node
115+
linkType: hard
116+
117+
"color-convert@npm:^2.0.1":
118+
version: 2.0.1
119+
resolution: "color-convert@npm:2.0.1"
120+
dependencies:
121+
color-name: ~1.1.4
122+
checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336
123+
languageName: node
124+
linkType: hard
125+
126+
"color-name@npm:~1.1.4":
127+
version: 1.1.4
128+
resolution: "color-name@npm:1.1.4"
129+
checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610
130+
languageName: node
131+
linkType: hard
132+
90133
"discord-api-types@npm:^0.37.3":
91-
version: 0.37.4
92-
resolution: "discord-api-types@npm:0.37.4"
93-
checksum: 18b74acfcd5f6c554668eb5cb31a5db9076dfb5cb6b5c538a342ab9d22816644bada22a66285468fe7dd9980287921d5d50ba3b11cc8e391fe4f09e761bcd179
134+
version: 0.37.5
135+
resolution: "discord-api-types@npm:0.37.5"
136+
checksum: 10a23b813d9a30d836aa27169f768883eeed971ab67e58325ff272bfe6b63b169d727ae983d7c1b69c7e0b02ed9072e66e79319ce48174b36cd4a2a5fafe2e9f
94137
languageName: node
95138
linkType: hard
96139

@@ -113,6 +156,20 @@ __metadata:
113156
languageName: node
114157
linkType: hard
115158

159+
"emoji-regex@npm:^8.0.0":
160+
version: 8.0.0
161+
resolution: "emoji-regex@npm:8.0.0"
162+
checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192
163+
languageName: node
164+
linkType: hard
165+
166+
"escalade@npm:^3.1.1":
167+
version: 3.1.1
168+
resolution: "escalade@npm:3.1.1"
169+
checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133
170+
languageName: node
171+
linkType: hard
172+
116173
"fast-deep-equal@npm:^3.1.3":
117174
version: 3.1.3
118175
resolution: "fast-deep-equal@npm:3.1.3"
@@ -131,6 +188,13 @@ __metadata:
131188
languageName: node
132189
linkType: hard
133190

191+
"get-caller-file@npm:^2.0.5":
192+
version: 2.0.5
193+
resolution: "get-caller-file@npm:2.0.5"
194+
checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9
195+
languageName: node
196+
linkType: hard
197+
134198
"ieee754@npm:^1.2.1":
135199
version: 1.2.1
136200
resolution: "ieee754@npm:1.2.1"
@@ -145,6 +209,13 @@ __metadata:
145209
languageName: node
146210
linkType: hard
147211

212+
"is-fullwidth-code-point@npm:^3.0.0":
213+
version: 3.0.0
214+
resolution: "is-fullwidth-code-point@npm:3.0.0"
215+
checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348
216+
languageName: node
217+
linkType: hard
218+
148219
"lodash.snakecase@npm:^4.1.1":
149220
version: 4.1.1
150221
resolution: "lodash.snakecase@npm:4.1.1"
@@ -186,11 +257,19 @@ __metadata:
186257
languageName: node
187258
linkType: hard
188259

260+
"require-directory@npm:^2.1.1":
261+
version: 2.1.1
262+
resolution: "require-directory@npm:2.1.1"
263+
checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80
264+
languageName: node
265+
linkType: hard
266+
189267
"root-workspace-0b6124@workspace:.":
190268
version: 0.0.0-use.local
191269
resolution: "root-workspace-0b6124@workspace:."
192270
dependencies:
193271
discord.js: 14.3.0
272+
yargs: ^17.5.1
194273
languageName: unknown
195274
linkType: soft
196275

@@ -201,6 +280,17 @@ __metadata:
201280
languageName: node
202281
linkType: hard
203282

283+
"string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3":
284+
version: 4.2.3
285+
resolution: "string-width@npm:4.2.3"
286+
dependencies:
287+
emoji-regex: ^8.0.0
288+
is-fullwidth-code-point: ^3.0.0
289+
strip-ansi: ^6.0.1
290+
checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb
291+
languageName: node
292+
linkType: hard
293+
204294
"string_decoder@npm:^1.1.1":
205295
version: 1.3.0
206296
resolution: "string_decoder@npm:1.3.0"
@@ -210,6 +300,15 @@ __metadata:
210300
languageName: node
211301
linkType: hard
212302

303+
"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1":
304+
version: 6.0.1
305+
resolution: "strip-ansi@npm:6.0.1"
306+
dependencies:
307+
ansi-regex: ^5.0.1
308+
checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c
309+
languageName: node
310+
linkType: hard
311+
213312
"strtok3@npm:^7.0.0-alpha.9":
214313
version: 7.0.0
215314
resolution: "strtok3@npm:7.0.0"
@@ -258,6 +357,17 @@ __metadata:
258357
languageName: node
259358
linkType: hard
260359

360+
"wrap-ansi@npm:^7.0.0":
361+
version: 7.0.0
362+
resolution: "wrap-ansi@npm:7.0.0"
363+
dependencies:
364+
ansi-styles: ^4.0.0
365+
string-width: ^4.1.0
366+
strip-ansi: ^6.0.0
367+
checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b
368+
languageName: node
369+
linkType: hard
370+
261371
"ws@npm:^8.8.1":
262372
version: 8.8.1
263373
resolution: "ws@npm:8.8.1"
@@ -272,3 +382,32 @@ __metadata:
272382
checksum: 2152cf862cae0693f3775bc688a6afb2e989d19d626d215e70f5fcd8eb55b1c3b0d3a6a4052905ec320e2d7734e20aeedbf9744496d62f15a26ad79cf4cf7dae
273383
languageName: node
274384
linkType: hard
385+
386+
"y18n@npm:^5.0.5":
387+
version: 5.0.8
388+
resolution: "y18n@npm:5.0.8"
389+
checksum: 54f0fb95621ee60898a38c572c515659e51cc9d9f787fb109cef6fde4befbe1c4602dc999d30110feee37456ad0f1660fa2edcfde6a9a740f86a290999550d30
390+
languageName: node
391+
linkType: hard
392+
393+
"yargs-parser@npm:^21.0.0":
394+
version: 21.1.1
395+
resolution: "yargs-parser@npm:21.1.1"
396+
checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c
397+
languageName: node
398+
linkType: hard
399+
400+
"yargs@npm:^17.5.1":
401+
version: 17.5.1
402+
resolution: "yargs@npm:17.5.1"
403+
dependencies:
404+
cliui: ^7.0.2
405+
escalade: ^3.1.1
406+
get-caller-file: ^2.0.5
407+
require-directory: ^2.1.1
408+
string-width: ^4.2.3
409+
y18n: ^5.0.5
410+
yargs-parser: ^21.0.0
411+
checksum: 00d58a2c052937fa044834313f07910fd0a115dec5ee35919e857eeee3736b21a4eafa8264535800ba8bac312991ce785ecb8a51f4d2cc8c4676d865af1cfbde
412+
languageName: node
413+
linkType: hard

packages/jest-runtime/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1109,6 +1109,7 @@ export default class Runtime {
11091109
this._mockRegistry.clear();
11101110
this._moduleRegistry.clear();
11111111
this._esmoduleRegistry.clear();
1112+
this._fileTransformsMutex.clear();
11121113
this._cjsNamedExports.clear();
11131114
this._moduleMockRegistry.clear();
11141115
this._cacheFS.clear();
@@ -1278,7 +1279,6 @@ export default class Runtime {
12781279
this._sourceMapRegistry.clear();
12791280

12801281
this._fileTransforms.clear();
1281-
this._fileTransformsMutex.clear();
12821282
this.jestObjectCaches.clear();
12831283

12841284
this._v8CoverageSources?.clear();

0 commit comments

Comments
 (0)