This is an automated email from the ASF dual-hosted git repository.
hainenber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new 4a79896bb24 chore(build): replace replaceable `jest-mock-console` with
native Jest spies (#38643)
4a79896bb24 is described below
commit 4a79896bb24522df6e349062bf1bbb98e0ec4d9c
Author: Đỗ Trọng Hải <[email protected]>
AuthorDate: Tue May 12 21:32:08 2026 +0700
chore(build): replace replaceable `jest-mock-console` with native Jest
spies (#38643)
Signed-off-by: hainenber <[email protected]>
---
superset-frontend/.eslintrc.js | 4 ++++
superset-frontend/package-lock.json | 11 ----------
.../packages/superset-ui-core/package.json | 1 -
.../test/chart/components/SuperChart.test.tsx | 8 -------
.../test/chart/components/SuperChartCore.test.tsx | 11 ----------
.../components/createLoadableRenderer.test.tsx | 7 ------
.../superset-ui-core/test/models/Registry.test.ts | 25 +++++++---------------
7 files changed, 12 insertions(+), 55 deletions(-)
diff --git a/superset-frontend/.eslintrc.js b/superset-frontend/.eslintrc.js
index fcca8cbf5ae..002d3f39252 100644
--- a/superset-frontend/.eslintrc.js
+++ b/superset-frontend/.eslintrc.js
@@ -77,6 +77,10 @@ const restrictedImportsRules = {
name: 'query-string',
message: 'Please use the URLSearchParams API instead of query-string.',
},
+ 'no-jest-mock-console': {
+ name: 'jest-mock-console',
+ message: 'Please use native Jest spies, i.e. jest.spyOn(console, "warn")',
+ }
};
module.exports = {
diff --git a/superset-frontend/package-lock.json
b/superset-frontend/package-lock.json
index 2be3f5cded7..02b39b9942c 100644
--- a/superset-frontend/package-lock.json
+++ b/superset-frontend/package-lock.json
@@ -30223,16 +30223,6 @@
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/jest-mock-console": {
- "version": "2.0.0",
- "resolved":
"https://registry.npmjs.org/jest-mock-console/-/jest-mock-console-2.0.0.tgz",
- "integrity":
"sha512-7zrKtXVut+6doalosFxw/2O9spLepQJ9VukODtyLIub2fFkWKe1TyQrxr/GyQogTQcdkHfhvFJdx1OEzLqf/mw==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "jest": ">= 22.4.2"
- }
- },
"node_modules/jest-pnp-resolver": {
"version": "1.2.3",
"resolved":
"https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
@@ -50216,7 +50206,6 @@
"@types/rison": "0.1.0",
"@types/seedrandom": "^3.0.8",
"fetch-mock": "^12.6.0",
- "jest-mock-console": "^2.0.0",
"resize-observer-polyfill": "1.5.1",
"timezone-mock": "^1.4.2"
},
diff --git a/superset-frontend/packages/superset-ui-core/package.json
b/superset-frontend/packages/superset-ui-core/package.json
index 06a43ccae5b..5544dc6adf7 100644
--- a/superset-frontend/packages/superset-ui-core/package.json
+++ b/superset-frontend/packages/superset-ui-core/package.json
@@ -83,7 +83,6 @@
"@types/rison": "0.1.0",
"@types/seedrandom": "^3.0.8",
"fetch-mock": "^12.6.0",
- "jest-mock-console": "^2.0.0",
"resize-observer-polyfill": "1.5.1",
"timezone-mock": "^1.4.2"
},
diff --git
a/superset-frontend/packages/superset-ui-core/test/chart/components/SuperChart.test.tsx
b/superset-frontend/packages/superset-ui-core/test/chart/components/SuperChart.test.tsx
index 2e3d87aafa8..3c0d8bab700 100644
---
a/superset-frontend/packages/superset-ui-core/test/chart/components/SuperChart.test.tsx
+++
b/superset-frontend/packages/superset-ui-core/test/chart/components/SuperChart.test.tsx
@@ -19,7 +19,6 @@
import '@testing-library/jest-dom';
import { render, screen } from '@superset-ui/core/spec';
-import mockConsole, { RestoreConsole } from 'jest-mock-console';
import { triggerResizeObserver } from 'resize-observer-polyfill';
import { ErrorBoundary } from 'react-error-boundary';
@@ -66,8 +65,6 @@ function getDimensionText(container: HTMLElement) {
describe('SuperChart', () => {
jest.setTimeout(5000);
- let restoreConsole: RestoreConsole;
-
const plugins = [
new DiligentChartPlugin().configure({ key: ChartKeys.DILIGENT }),
new BuggyChartPlugin().configure({ key: ChartKeys.BUGGY }),
@@ -80,14 +77,9 @@ describe('SuperChart', () => {
});
beforeEach(() => {
- restoreConsole = mockConsole();
triggerResizeObserver([]); // Reset any pending resize observers
});
- afterEach(() => {
- restoreConsole();
- });
-
describe('includes ErrorBoundary', () => {
let expectedErrors = 0;
let actualErrors = 0;
diff --git
a/superset-frontend/packages/superset-ui-core/test/chart/components/SuperChartCore.test.tsx
b/superset-frontend/packages/superset-ui-core/test/chart/components/SuperChartCore.test.tsx
index 82b1e866dc8..62b99bf04e0 100644
---
a/superset-frontend/packages/superset-ui-core/test/chart/components/SuperChartCore.test.tsx
+++
b/superset-frontend/packages/superset-ui-core/test/chart/components/SuperChartCore.test.tsx
@@ -18,7 +18,6 @@
*/
import '@testing-library/jest-dom';
-import mockConsole, { RestoreConsole } from 'jest-mock-console';
import { ChartProps } from '@superset-ui/core';
import { supersetTheme } from '@apache-superset/core/theme';
import { render, screen, waitFor } from '@superset-ui/core/spec';
@@ -38,8 +37,6 @@ describe('SuperChartCore', () => {
new SlowChartPlugin().configure({ key: ChartKeys.SLOW }),
];
- let restoreConsole: RestoreConsole;
-
beforeAll(() => {
jest.setTimeout(30000);
plugins.forEach(p => {
@@ -53,14 +50,6 @@ describe('SuperChartCore', () => {
});
});
- beforeEach(() => {
- restoreConsole = mockConsole();
- });
-
- afterEach(() => {
- restoreConsole();
- });
-
describe('registered charts', () => {
test('renders registered chart', async () => {
const { container } = render(
diff --git
a/superset-frontend/packages/superset-ui-core/test/chart/components/createLoadableRenderer.test.tsx
b/superset-frontend/packages/superset-ui-core/test/chart/components/createLoadableRenderer.test.tsx
index 60b11730b03..d0274a21c2d 100644
---
a/superset-frontend/packages/superset-ui-core/test/chart/components/createLoadableRenderer.test.tsx
+++
b/superset-frontend/packages/superset-ui-core/test/chart/components/createLoadableRenderer.test.tsx
@@ -19,7 +19,6 @@
import '@testing-library/jest-dom';
import { ComponentType } from 'react';
-import mockConsole, { RestoreConsole } from 'jest-mock-console';
import { render as renderTestComponent, screen } from '@testing-library/react';
import createLoadableRenderer, {
LoadableRenderer as LoadableRendererType,
@@ -33,10 +32,8 @@ describe('createLoadableRenderer', () => {
let render: (loaded: { Chart: ComponentType }) => JSX.Element;
let loading: () => JSX.Element;
let LoadableRenderer: LoadableRendererType<{}>;
- let restoreConsole: RestoreConsole;
beforeEach(() => {
- restoreConsole = mockConsole();
loadChartSuccess = jest.fn(() => Promise.resolve(TestComponent));
render = jest.fn(loaded => {
const { Chart } = loaded;
@@ -54,10 +51,6 @@ describe('createLoadableRenderer', () => {
});
});
- afterEach(() => {
- restoreConsole();
- });
-
describe('returns a LoadableRenderer class', () => {
test('LoadableRenderer.preload() preloads the lazy-load components', () =>
{
expect(LoadableRenderer.preload).toBeInstanceOf(Function);
diff --git
a/superset-frontend/packages/superset-ui-core/test/models/Registry.test.ts
b/superset-frontend/packages/superset-ui-core/test/models/Registry.test.ts
index f8e041f07af..6a0228e4cfc 100644
--- a/superset-frontend/packages/superset-ui-core/test/models/Registry.test.ts
+++ b/superset-frontend/packages/superset-ui-core/test/models/Registry.test.ts
@@ -18,11 +18,18 @@
*/
/* eslint no-console: 0 */
-import mockConsole from 'jest-mock-console';
import { Registry, OverwritePolicy } from '@superset-ui/core';
const loader = () => 'testValue';
+const consoleWarnSpy = jest.spyOn(console, 'warn');
+const consoleErrorSpy = jest.spyOn(console, 'error');
+
+beforeEach(() => {
+ consoleErrorSpy.mockClear();
+ consoleWarnSpy.mockClear();
+});
+
describe('Registry', () => {
test('exists', () => {
expect(Registry !== undefined).toBe(true);
@@ -308,18 +315,15 @@ describe('Registry', () => {
describe('=ALLOW', () => {
describe('.registerValue(key, value)', () => {
test('registers normally', () => {
- const restoreConsole = mockConsole();
const registry = new Registry();
registry.registerValue('a', 'testValue');
expect(() => registry.registerValue('a',
'testValue2')).not.toThrow();
expect(registry.get('a')).toEqual('testValue2');
expect(console.warn).not.toHaveBeenCalled();
- restoreConsole();
});
});
describe('.registerLoader(key, loader)', () => {
test('registers normally', () => {
- const restoreConsole = mockConsole();
const registry = new Registry();
registry.registerLoader('a', () => 'testValue');
expect(() =>
@@ -327,14 +331,12 @@ describe('Registry', () => {
).not.toThrow();
expect(registry.get('a')).toEqual('testValue2');
expect(console.warn).not.toHaveBeenCalled();
- restoreConsole();
});
});
});
describe('=WARN', () => {
describe('.registerValue(key, value)', () => {
test('warns when overwrite', () => {
- const restoreConsole = mockConsole();
const registry = new Registry({
overwritePolicy: OverwritePolicy.Warn,
});
@@ -342,12 +344,10 @@ describe('Registry', () => {
expect(() => registry.registerValue('a',
'testValue2')).not.toThrow();
expect(registry.get('a')).toEqual('testValue2');
expect(console.warn).toHaveBeenCalled();
- restoreConsole();
});
});
describe('.registerLoader(key, loader)', () => {
test('warns when overwrite', () => {
- const restoreConsole = mockConsole();
const registry = new Registry({
overwritePolicy: OverwritePolicy.Warn,
});
@@ -357,7 +357,6 @@ describe('Registry', () => {
).not.toThrow();
expect(registry.get('a')).toEqual('testValue2');
expect(console.warn).toHaveBeenCalled();
- restoreConsole();
});
});
});
@@ -438,14 +437,6 @@ describe('Registry', () => {
});
describe('with a broken listener', () => {
- let restoreConsole: any;
- beforeEach(() => {
- restoreConsole = mockConsole();
- });
- afterEach(() => {
- restoreConsole();
- });
-
test('keeps working', () => {
const errorListener = jest.fn().mockImplementation(() => {
throw new Error('test error');