Skip to content

Commit 27e3251

Browse files
committed
chore(no-deprecated-functions): cache jest version
1 parent 91ba077 commit 27e3251

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

src/rules/__tests__/no-deprecated-functions.test.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ import * as os from 'os';
33
import * as path from 'path';
44
import { JSONSchemaForNPMPackageJsonFiles } from '@schemastore/package';
55
import { TSESLint } from '@typescript-eslint/experimental-utils';
6-
import rule, { JestVersion } from '../no-deprecated-functions';
6+
import rule, {
7+
JestVersion,
8+
_clearCachedJestVersion,
9+
} from '../no-deprecated-functions';
710

811
const ruleTester = new TSESLint.RuleTester();
912

@@ -89,6 +92,8 @@ const generateInvalidCases = (
8992
];
9093
};
9194

95+
beforeEach(() => _clearCachedJestVersion());
96+
9297
// a few sanity checks before doing our massive loop
9398
ruleTester.run('no-deprecated-functions', rule, {
9499
valid: [

src/rules/no-deprecated-functions.ts

+10-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,16 @@ interface EslintPluginJestSettings {
3030
version: JestVersion;
3131
}
3232

33+
let cachedJestVersion: JestVersion | null = null;
34+
35+
/** @internal */
36+
export const _clearCachedJestVersion = () => (cachedJestVersion = null);
37+
3338
const detectJestVersion = (): JestVersion => {
39+
if (cachedJestVersion) {
40+
return cachedJestVersion;
41+
}
42+
3443
try {
3544
const jestPath = require.resolve('jest/package.json', {
3645
paths: [process.cwd()],
@@ -42,7 +51,7 @@ const detectJestVersion = (): JestVersion => {
4251
if (jestPackageJson.version) {
4352
const [majorVersion] = jestPackageJson.version.split('.');
4453

45-
return parseInt(majorVersion);
54+
return (cachedJestVersion = parseInt(majorVersion, 10));
4655
}
4756
} catch {}
4857

0 commit comments

Comments
 (0)