Skip to content

Commit 7fede7a

Browse files
Only test Babel 8 in Node.js 20+
1 parent 22e5ae7 commit 7fede7a

File tree

4 files changed

+70
-41
lines changed

4 files changed

+70
-41
lines changed

jest.globalSetup.mjs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
import {createRequire} from 'node:module';
22
const require = createRequire(import.meta.url);
33

4-
const requireFrom = (from, name) =>
5-
require(
4+
const requireFrom = (from, name) => {
5+
if (parseInt(process.versions.node, 10) < 20) {
6+
return null;
7+
}
8+
return require(
69
require.resolve(name, {
710
paths: [require.resolve(`./packages/${from}/package.json`)],
811
}),
912
);
13+
};
1014

1115
export default async function () {
1216
globalThis.preloadedDependencies = {

packages/babel-jest/src/__tests__/getCacheKey.test.ts

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import babelJest from '../index';
1515
declare global {
1616
var preloadedDependencies: {
1717
'babel-jest': {
18-
'@babel-8/core': typeof import('@babel-8/core');
18+
'@babel-8/core': null | typeof import('@babel-8/core');
1919
};
2020
};
2121
}
@@ -44,10 +44,15 @@ afterEach(() => {
4444
}
4545
});
4646

47-
describe.each([
48-
{ version: '7', babel: require('@babel/core') },
49-
{ version: '8', babel: globalThis.preloadedDependencies['babel-jest']['@babel-8/core'], }
50-
])(`babel $version`, ({ babel }) => {
47+
describe.each(
48+
[
49+
{version: '7', babel: require('@babel/core')},
50+
{
51+
version: '8',
52+
babel: globalThis.preloadedDependencies['babel-jest']['@babel-8/core'],
53+
},
54+
].filter(v => v.babel),
55+
)(`babel $version`, ({babel}) => {
5156
describe('getCacheKey', () => {
5257
const sourceText = 'mock source';
5358
const sourcePath = 'mock-source-path.js';
@@ -164,7 +169,9 @@ describe.each([
164169
jest.doMock('../babel', () => {
165170
return {
166171
...babel,
167-
loadPartialConfig: (options: Parameters<typeof babel.loadPartialConfig>[0]) => ({
172+
loadPartialConfig: (
173+
options: Parameters<typeof babel.loadPartialConfig>[0],
174+
) => ({
168175
...babel.loadPartialConfig(options),
169176
babelrc: 'new-babelrc',
170177
}),
@@ -195,15 +202,23 @@ describe.each([
195202
test('if `process.env.NODE_ENV` value is changing', () => {
196203
process.env.NODE_ENV = 'NEW_NODE_ENV';
197204

198-
const newCacheKey = getCacheKey!(sourceText, sourcePath, transformOptions);
205+
const newCacheKey = getCacheKey!(
206+
sourceText,
207+
sourcePath,
208+
transformOptions,
209+
);
199210

200211
expect(oldCacheKey).not.toEqual(newCacheKey);
201212
});
202213

203214
test('if `process.env.BABEL_ENV` value is changing', () => {
204215
process.env.BABEL_ENV = 'NEW_BABEL_ENV';
205216

206-
const newCacheKey = getCacheKey!(sourceText, sourcePath, transformOptions);
217+
const newCacheKey = getCacheKey!(
218+
sourceText,
219+
sourcePath,
220+
transformOptions,
221+
);
207222

208223
expect(oldCacheKey).not.toEqual(newCacheKey);
209224
});
@@ -214,7 +229,11 @@ describe.each([
214229
// @ts-expect-error: Testing purpose
215230
process.version = 'new-node-version';
216231

217-
const newCacheKey = getCacheKey!(sourceText, sourcePath, transformOptions);
232+
const newCacheKey = getCacheKey!(
233+
sourceText,
234+
sourcePath,
235+
transformOptions,
236+
);
218237

219238
expect(oldCacheKey).not.toEqual(newCacheKey);
220239
});

packages/babel-jest/src/__tests__/index.ts

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import babelJest, {createTransformer} from '../index';
1919
declare global {
2020
var preloadedDependencies: {
2121
'babel-jest': {
22-
'@babel-8/core': typeof import('@babel-8/core');
22+
'@babel-8/core': null | typeof import('@babel-8/core');
2323
};
2424
};
2525
}
@@ -58,14 +58,15 @@ const customMultiply = (obj, mul) => {
5858
customMultiply({a: 32, dummy: "test"}, 2);
5959
`;
6060

61-
62-
describe.each([
63-
{version: '7', babel: require('@babel/core')},
64-
{
65-
version: '8',
66-
babel: globalThis.preloadedDependencies['babel-jest']['@babel-8/core'],
67-
},
68-
])(`babel $version`, ({babel}: {babel: BabelCore}) => {
61+
describe.each(
62+
[
63+
{version: '7', babel: require('@babel/core')},
64+
{
65+
version: '8',
66+
babel: globalThis.preloadedDependencies['babel-jest']['@babel-8/core'],
67+
},
68+
].filter(v => v.babel),
69+
)(`babel $version`, ({babel}: {babel: BabelCore}) => {
6970
beforeEach(() => {
7071
jest.clearAllMocks();
7172

@@ -211,7 +212,9 @@ describe.each([
211212

212213
expect(mockedBabel.loadPartialConfigSync).toHaveBeenCalledTimes(1);
213214
expect(mockedBabel.loadPartialConfigSync).toHaveBeenCalledWith(
214-
expect.objectContaining({presets: [require.resolve('babel-preset-jest')]}),
215+
expect.objectContaining({
216+
presets: [require.resolve('babel-preset-jest')],
217+
}),
215218
);
216219
});
217220

packages/babel-plugin-jest-hoist/src/__tests__/hoistPlugin.test.ts

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,20 +31,28 @@ const prettierOptions: Options = {
3131

3232
const formatResult = (code: string) => formatCode(code, prettierOptions);
3333

34-
describe.each([
35-
{
36-
version: '7',
37-
babel: require('@babel/core'),
38-
presetReact: require('@babel/preset-react').default,
39-
presetTypescript: require('@babel/preset-typescript').default,
40-
},
41-
{
42-
version: '8',
43-
babel: preloadedDependencies['babel-plugin-jest-hoist']['@babel-8/core'],
44-
presetReact: preloadedDependencies['babel-plugin-jest-hoist']['@babel-8/preset-react'],
45-
presetTypescript: preloadedDependencies['babel-plugin-jest-hoist']['@babel-8/preset-typescript'],
46-
},
47-
])('babel $version', ({babel, presetReact, presetTypescript}) => {
34+
describe.each(
35+
[
36+
{
37+
version: '7',
38+
babel: require('@babel/core'),
39+
presetReact: require('@babel/preset-react').default,
40+
presetTypescript: require('@babel/preset-typescript').default,
41+
},
42+
{
43+
version: '8',
44+
babel: preloadedDependencies['babel-plugin-jest-hoist']['@babel-8/core'],
45+
presetReact:
46+
preloadedDependencies['babel-plugin-jest-hoist'][
47+
'@babel-8/preset-react'
48+
],
49+
presetTypescript:
50+
preloadedDependencies['babel-plugin-jest-hoist'][
51+
'@babel-8/preset-typescript'
52+
],
53+
},
54+
].filter(v => v.babel),
55+
)('babel $version', ({babel, presetReact, presetTypescript}) => {
4856
pluginTester({
4957
babel,
5058
plugin: babelPluginJestHoist,
@@ -56,12 +64,7 @@ describe.each([
5664
babelrc: false,
5765
configFile: false,
5866
filename: path.resolve(__dirname, '../file.js'),
59-
presets: [
60-
[
61-
presetReact,
62-
{development: true, runtime: 'automatic'},
63-
],
64-
],
67+
presets: [[presetReact, {development: true, runtime: 'automatic'}]],
6568
},
6669
code: formatResult(`
6770
jest.mock('./App', () => () => <div>Hello world</div>);

0 commit comments

Comments
 (0)