1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Replace more overrides with global ones

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2023-01-05 11:32:54 -05:00
parent 5b505e339d
commit 3063afe6e3
19 changed files with 142 additions and 86 deletions

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
const environmentVariablesInjectable = getInjectable({
id: "environment-variables",
instantiate: () => {
const JEST_WORKER_ID = process.env.JEST_WORKER_ID;
const CICD = process.env.CICD;
return {
// Compile-time environment variables
JEST_WORKER_ID,
CICD,
// Runtime environment variables
LENS_DISABLE_GPU: process.env.LENS_DISABLE_GPU,
};
},
causesSideEffects: true,
});
export default environmentVariablesInjectable;

View File

@ -0,0 +1,9 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getGlobalOverride } from "../test-utils/get-global-override";
import getRandomIdInjectable from "./get-random-id.injectable";
export default getGlobalOverride(getRandomIdInjectable, () => () => "some-irrelevant-random-id");

View File

@ -0,0 +1,9 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getGlobalOverride } from "../test-utils/get-global-override";
import lensResourcesDirInjectable from "./lens-resources-dir.injectable";
export default getGlobalOverride(lensResourcesDirInjectable, () => "/irrelavent-dir-for-lens-resources");

View File

@ -3,11 +3,14 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import processArchInjectable from "./process-arch.injectable";
const normalizedPlatformArchitectureInjectable = getInjectable({ const normalizedPlatformArchitectureInjectable = getInjectable({
id: "normalized-platform-architecture", id: "normalized-platform-architecture",
instantiate: () => { instantiate: (di) => {
switch (process.arch) { const platformArch = di.inject(processArchInjectable);
switch (platformArch) {
case "arm64": case "arm64":
return "arm64"; return "arm64";
case "x64": case "x64":
@ -18,10 +21,9 @@ const normalizedPlatformArchitectureInjectable = getInjectable({
case "ia32": case "ia32":
return "ia32"; return "ia32";
default: default:
throw new Error(`arch=${process.arch} is unsupported`); throw new Error(`arch=${platformArch} is unsupported`);
} }
}, },
causesSideEffects: true,
}); });
export default normalizedPlatformArchitectureInjectable; export default normalizedPlatformArchitectureInjectable;

View File

@ -0,0 +1,9 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getGlobalOverride } from "../test-utils/get-global-override";
import platformInjectable from "./platform.injectable";
export default getGlobalOverride(platformInjectable, () => "darwin");

View File

@ -4,7 +4,6 @@
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
// Todo: OCP by creating distinct injectables for platforms.
export const allPlatforms = ["win32", "darwin", "linux"] as const; export const allPlatforms = ["win32", "darwin", "linux"] as const;
const platformInjectable = getInjectable({ const platformInjectable = getInjectable({

View File

@ -0,0 +1,9 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getGlobalOverride } from "../test-utils/get-global-override";
import processArchInjectable from "./process-arch.injectable";
export default getGlobalOverride(processArchInjectable, () => "x64");

View File

@ -0,0 +1,13 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
const processArchInjectable = getInjectable({
id: "process-arch",
instantiate: () => process.arch,
causesSideEffects: true,
});
export default processArchInjectable;

View File

@ -0,0 +1,9 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getGlobalOverride } from "../../../common/test-utils/get-global-override";
import directoryForIntegrationTestingInjectable from "./directory-for-integration-testing.injectable";
export default getGlobalOverride(directoryForIntegrationTestingInjectable, () => undefined);

View File

@ -3,16 +3,11 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import environmentVariablesInjectable from "../../../common/utils/environment-variables.injectable";
const directoryForIntegrationTestingInjectable = getInjectable({ const directoryForIntegrationTestingInjectable = getInjectable({
id: "directory-for-integration-testing", id: "directory-for-integration-testing",
instantiate: () => process.env.CICD,
instantiate: (di) => { causesSideEffects: true,
const environmentVariables = di.inject(environmentVariablesInjectable);
return environmentVariables.CICD;
},
}); });
export default directoryForIntegrationTestingInjectable; export default directoryForIntegrationTestingInjectable;

View File

@ -28,6 +28,17 @@ export default getGlobalOverride(electronAppInjectable, () => {
hasSwitch: (key) => chromiumArgs.has(key), hasSwitch: (key) => chromiumArgs.has(key),
removeSwitch: (key) => chromiumArgs.delete(key), removeSwitch: (key) => chromiumArgs.delete(key),
}, },
disableHardwareAcceleration: () => {},
requestSingleInstanceLock: () => true,
getLoginItemSettings: () => ({
executableWillLaunchAtLogin: false,
openAtLogin: false,
openAsHidden: false,
wasOpenedAtLogin: false,
wasOpenedAsHidden: false,
restoreState: false,
launchItems: [],
}),
exit: () => {}, exit: () => {},
} as Partial<Electron.App> as Electron.App); } as Partial<Electron.App> as Electron.App);

View File

@ -0,0 +1,26 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getGlobalOverride } from "../../../common/test-utils/get-global-override";
import electronDialogInjectable from "./electron-dialog.injectable";
export default getGlobalOverride(electronDialogInjectable, () => ({
showCertificateTrustDialog: async () => {},
showErrorBox: () => {},
showMessageBox: async () => ({
checkboxChecked: false,
response: 0,
}),
showMessageBoxSync: () => 0,
showOpenDialog: async () => ({
canceled: true,
filePaths: [],
}),
showOpenDialogSync: () => [],
showSaveDialog: async () => ({
canceled: true,
}),
showSaveDialogSync: () => "",
}));

View File

@ -8,38 +8,25 @@ import type { DiContainer, Injectable } from "@ogre-tools/injectable";
import { createContainer, isInjectable, getInjectable } from "@ogre-tools/injectable"; import { createContainer, isInjectable, getInjectable } from "@ogre-tools/injectable";
import { Environments, setLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api"; import { Environments, setLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
import spawnInjectable from "./child-process/spawn.injectable"; import spawnInjectable from "./child-process/spawn.injectable";
import commandLineArgumentsInjectable from "./utils/command-line-arguments.injectable";
import initializeExtensionsInjectable from "./start-main-application/runnables/initialize-extensions.injectable"; import initializeExtensionsInjectable from "./start-main-application/runnables/initialize-extensions.injectable";
import lensResourcesDirInjectable from "../common/vars/lens-resources-dir.injectable";
import environmentVariablesInjectable from "../common/utils/environment-variables.injectable";
import setupIpcMainHandlersInjectable from "./electron-app/runnables/setup-ipc-main-handlers/setup-ipc-main-handlers.injectable"; import setupIpcMainHandlersInjectable from "./electron-app/runnables/setup-ipc-main-handlers/setup-ipc-main-handlers.injectable";
import setupLensProxyInjectable from "./start-main-application/runnables/setup-lens-proxy.injectable"; import setupLensProxyInjectable from "./start-main-application/runnables/setup-lens-proxy.injectable";
import setupSyncingOfWeblinksInjectable from "./start-main-application/runnables/setup-syncing-of-weblinks.injectable"; import setupSyncingOfWeblinksInjectable from "./start-main-application/runnables/setup-syncing-of-weblinks.injectable";
import stopServicesAndExitAppInjectable from "./stop-services-and-exit-app.injectable";
import setupDeepLinkingInjectable from "./electron-app/runnables/setup-deep-linking.injectable"; import setupDeepLinkingInjectable from "./electron-app/runnables/setup-deep-linking.injectable";
import requestSingleInstanceLockInjectable from "./electron-app/features/request-single-instance-lock.injectable";
import disableHardwareAccelerationInjectable from "./electron-app/features/disable-hardware-acceleration.injectable";
import shouldStartHiddenInjectable from "./electron-app/features/should-start-hidden.injectable";
import setupMainWindowVisibilityAfterActivationInjectable from "./electron-app/runnables/setup-main-window-visibility-after-activation.injectable"; import setupMainWindowVisibilityAfterActivationInjectable from "./electron-app/runnables/setup-main-window-visibility-after-activation.injectable";
import setupDeviceShutdownInjectable from "./electron-app/runnables/setup-device-shutdown.injectable"; import setupDeviceShutdownInjectable from "./electron-app/runnables/setup-device-shutdown.injectable";
import setupApplicationNameInjectable from "./electron-app/runnables/setup-application-name.injectable"; import setupApplicationNameInjectable from "./electron-app/runnables/setup-application-name.injectable";
import setupRunnablesBeforeClosingOfApplicationInjectable from "./electron-app/runnables/setup-runnables-before-closing-of-application.injectable"; import setupRunnablesBeforeClosingOfApplicationInjectable from "./electron-app/runnables/setup-runnables-before-closing-of-application.injectable";
import showMessagePopupInjectable from "./electron-app/features/show-message-popup.injectable";
import clusterFramesInjectable from "../common/cluster-frames.injectable"; import clusterFramesInjectable from "../common/cluster-frames.injectable";
import type { ClusterFrameInfo } from "../common/cluster-frames"; import type { ClusterFrameInfo } from "../common/cluster-frames";
import { observable, runInAction } from "mobx"; import { observable, runInAction } from "mobx";
import broadcastMessageInjectable from "../common/ipc/broadcast-message.injectable"; import broadcastMessageInjectable from "../common/ipc/broadcast-message.injectable";
import platformInjectable from "../common/vars/platform.injectable";
import electronQuitAndInstallUpdateInjectable from "./electron-app/features/electron-quit-and-install-update.injectable"; import electronQuitAndInstallUpdateInjectable from "./electron-app/features/electron-quit-and-install-update.injectable";
import electronUpdaterIsActiveInjectable from "./electron-app/features/electron-updater-is-active.injectable"; import electronUpdaterIsActiveInjectable from "./electron-app/features/electron-updater-is-active.injectable";
import baseBundledBinariesDirectoryInjectable from "../common/vars/base-bundled-binaries-dir.injectable";
import setUpdateOnQuitInjectable from "./electron-app/features/set-update-on-quit.injectable"; import setUpdateOnQuitInjectable from "./electron-app/features/set-update-on-quit.injectable";
import getRandomIdInjectable from "../common/utils/get-random-id.injectable";
import normalizedPlatformArchitectureInjectable from "../common/vars/normalized-platform-architecture.injectable";
import waitUntilBundledExtensionsAreLoadedInjectable from "./start-main-application/lens-window/application-window/wait-until-bundled-extensions-are-loaded.injectable"; import waitUntilBundledExtensionsAreLoadedInjectable from "./start-main-application/lens-window/application-window/wait-until-bundled-extensions-are-loaded.injectable";
import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx"; import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
import electronInjectable from "./utils/resolve-system-proxy/electron.injectable"; import electronInjectable from "./utils/resolve-system-proxy/electron.injectable";
import kubectlDownloadingNormalizedArchInjectable from "./kubectl/normalized-arch.injectable";
import initializeClusterManagerInjectable from "./cluster/initialize-manager.injectable"; import initializeClusterManagerInjectable from "./cluster/initialize-manager.injectable";
import type { GlobalOverride } from "../common/test-utils/get-global-override"; import type { GlobalOverride } from "../common/test-utils/get-global-override";
import applicationInformationInjectable from "../common/vars/application-information-injectable"; import applicationInformationInjectable from "../common/vars/application-information-injectable";
@ -88,26 +75,16 @@ export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {})
di.override(electronInjectable, () => ({})); di.override(electronInjectable, () => ({}));
di.override(waitUntilBundledExtensionsAreLoadedInjectable, () => async () => {}); di.override(waitUntilBundledExtensionsAreLoadedInjectable, () => async () => {});
di.override(getRandomIdInjectable, () => () => "some-irrelevant-random-id");
di.override(kubectlDownloadingNormalizedArchInjectable, () => "amd64");
overrideOperatingSystem(di);
overrideRunnablesHavingSideEffects(di); overrideRunnablesHavingSideEffects(di);
overrideElectronFeatures(di); overrideElectronFeatures(di);
getOverrideFsWithFakes()(di); getOverrideFsWithFakes()(di);
di.override(environmentVariablesInjectable, () => ({}));
di.override(commandLineArgumentsInjectable, () => []);
di.override(clusterFramesInjectable, () => observable.map<string, ClusterFrameInfo>()); di.override(clusterFramesInjectable, () => observable.map<string, ClusterFrameInfo>());
di.override(stopServicesAndExitAppInjectable, () => () => {});
di.override(lensResourcesDirInjectable, () => "/irrelevant");
di.override(broadcastMessageInjectable, () => (channel) => { di.override(broadcastMessageInjectable, () => (channel) => {
throw new Error(`Tried to broadcast message to channel "${channel}" over IPC without explicit override.`); throw new Error(`Tried to broadcast message to channel "${channel}" over IPC without explicit override.`);
}); });
di.override(baseBundledBinariesDirectoryInjectable, () => "some-bin-directory");
di.override(spawnInjectable, () => () => { di.override(spawnInjectable, () => () => {
return { return {
stderr: { on: jest.fn(), removeAllListeners: jest.fn() }, stderr: { on: jest.fn(), removeAllListeners: jest.fn() },
@ -136,11 +113,6 @@ const overrideRunnablesHavingSideEffects = (di: DiContainer) => {
}); });
}; };
const overrideOperatingSystem = (di: DiContainer) => {
di.override(platformInjectable, () => "darwin");
di.override(normalizedPlatformArchitectureInjectable, () => "arm64");
};
const overrideElectronFeatures = (di: DiContainer) => { const overrideElectronFeatures = (di: DiContainer) => {
[ [
setupMainWindowVisibilityAfterActivationInjectable, setupMainWindowVisibilityAfterActivationInjectable,
@ -155,10 +127,6 @@ const overrideElectronFeatures = (di: DiContainer) => {
})); }));
}); });
di.override(requestSingleInstanceLockInjectable, () => () => true);
di.override(disableHardwareAccelerationInjectable, () => () => {});
di.override(shouldStartHiddenInjectable, () => false);
di.override(showMessagePopupInjectable, () => () => {});
di.override(electronQuitAndInstallUpdateInjectable, () => () => {}); di.override(electronQuitAndInstallUpdateInjectable, () => () => {});
di.override(setUpdateOnQuitInjectable, () => () => {}); di.override(setUpdateOnQuitInjectable, () => () => {});
di.override(electronUpdaterIsActiveInjectable, () => false); di.override(electronUpdaterIsActiveInjectable, () => false);

View File

@ -3,11 +3,14 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import processArchInjectable from "../../common/vars/process-arch.injectable";
const kubectlDownloadingNormalizedArchInjectable = getInjectable({ const kubectlDownloadingNormalizedArchInjectable = getInjectable({
id: "kubectl-downloading-normalized-arch", id: "kubectl-downloading-normalized-arch",
instantiate: () => { instantiate: (di) => {
switch (process.arch) { const processArch = di.inject(processArchInjectable);
switch (processArch) {
case "arm64": case "arm64":
return "arm64"; return "arm64";
case "x64": case "x64":
@ -18,10 +21,9 @@ const kubectlDownloadingNormalizedArchInjectable = getInjectable({
case "ia32": case "ia32":
return "386"; return "386";
default: default:
throw new Error(`arch=${process.arch} is unsupported`); throw new Error(`arch=${processArch} is unsupported`);
} }
}, },
causesSideEffects: true,
}); });
export default kubectlDownloadingNormalizedArchInjectable; export default kubectlDownloadingNormalizedArchInjectable;

View File

@ -3,15 +3,15 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import environmentVariablesInjectable from "../../../common/utils/environment-variables.injectable";
import disableHardwareAccelerationInjectable from "../../electron-app/features/disable-hardware-acceleration.injectable"; import disableHardwareAccelerationInjectable from "../../electron-app/features/disable-hardware-acceleration.injectable";
import hardwareAccelerationShouldBeDisabledInjectable from "../../vars/hardware-acceleration-should-be-disabled.injectable";
import { beforeElectronIsReadyInjectionToken } from "../runnable-tokens/before-electron-is-ready-injection-token"; import { beforeElectronIsReadyInjectionToken } from "../runnable-tokens/before-electron-is-ready-injection-token";
const setupHardwareAccelerationInjectable = getInjectable({ const setupHardwareAccelerationInjectable = getInjectable({
id: "setup-hardware-acceleration", id: "setup-hardware-acceleration",
instantiate: (di) => { instantiate: (di) => {
const { LENS_DISABLE_GPU: hardwareAccelerationShouldBeDisabled } = di.inject(environmentVariablesInjectable); const hardwareAccelerationShouldBeDisabled = di.inject(hardwareAccelerationShouldBeDisabledInjectable);
const disableHardwareAcceleration = di.inject(disableHardwareAccelerationInjectable); const disableHardwareAcceleration = di.inject(disableHardwareAccelerationInjectable);
return { return {

View File

@ -0,0 +1,9 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getGlobalOverride } from "../../common/test-utils/get-global-override";
import commandLineArgumentsInjectable from "./command-line-arguments.injectable";
export default getGlobalOverride(commandLineArgumentsInjectable, () => []);

View File

@ -0,0 +1,9 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getGlobalOverride } from "../../common/test-utils/get-global-override";
import hardwareAccelerationShouldBeDisabledInjectable from "./hardware-acceleration-should-be-disabled.injectable";
export default getGlobalOverride(hardwareAccelerationShouldBeDisabledInjectable, () => false);

View File

@ -0,0 +1,13 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
const hardwareAccelerationShouldBeDisabledInjectable = getInjectable({
id: "hardware-acceleration-should-be-disabled",
instantiate: () => Boolean(process.env.LENS_DISABLE_GPU),
causesSideEffects: true,
});
export default hardwareAccelerationShouldBeDisabledInjectable;

View File

@ -11,16 +11,12 @@ import requestFromChannelInjectable from "./utils/channel/request-from-channel.i
import { getOverrideFsWithFakes } from "../test-utils/override-fs-with-fakes"; import { getOverrideFsWithFakes } from "../test-utils/override-fs-with-fakes";
import terminalSpawningPoolInjectable from "./components/dock/terminal/terminal-spawning-pool.injectable"; import terminalSpawningPoolInjectable from "./components/dock/terminal/terminal-spawning-pool.injectable";
import hostedClusterIdInjectable from "./cluster-frame-context/hosted-cluster-id.injectable"; import hostedClusterIdInjectable from "./cluster-frame-context/hosted-cluster-id.injectable";
import lensResourcesDirInjectable from "../common/vars/lens-resources-dir.injectable";
import { runInAction } from "mobx"; import { runInAction } from "mobx";
import requestAnimationFrameInjectable from "./components/animate/request-animation-frame.injectable"; import requestAnimationFrameInjectable from "./components/animate/request-animation-frame.injectable";
import getRandomIdInjectable from "../common/utils/get-random-id.injectable";
import platformInjectable from "../common/vars/platform.injectable";
import startTopbarStateSyncInjectable from "./components/layout/top-bar/start-state-sync.injectable"; import startTopbarStateSyncInjectable from "./components/layout/top-bar/start-state-sync.injectable";
import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx"; import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
import watchHistoryStateInjectable from "./remote-helpers/watch-history-state.injectable"; import watchHistoryStateInjectable from "./remote-helpers/watch-history-state.injectable";
import legacyOnChannelListenInjectable from "./ipc/legacy-channel-listen.injectable"; import legacyOnChannelListenInjectable from "./ipc/legacy-channel-listen.injectable";
import environmentVariablesInjectable from "../common/utils/environment-variables.injectable";
import type { GlobalOverride } from "../common/test-utils/get-global-override"; import type { GlobalOverride } from "../common/test-utils/get-global-override";
import applicationInformationInjectable from "../common/vars/application-information-injectable"; import applicationInformationInjectable from "../common/vars/application-information-injectable";
import nodeEnvInjectionToken from "../common/vars/node-env-injection-token"; import nodeEnvInjectionToken from "../common/vars/node-env-injection-token";
@ -65,9 +61,6 @@ export const getDiForUnitTesting = (
di.override(globalOverride.injectable, globalOverride.overridingInstantiate); di.override(globalOverride.injectable, globalOverride.overridingInstantiate);
} }
di.override(getRandomIdInjectable, () => () => "some-irrelevant-random-id");
di.override(platformInjectable, () => "darwin");
[ [
startTopbarStateSyncInjectable, startTopbarStateSyncInjectable,
].forEach((injectable) => { ].forEach((injectable) => {
@ -83,8 +76,6 @@ export const getDiForUnitTesting = (
di.override(legacyOnChannelListenInjectable, () => () => noop); di.override(legacyOnChannelListenInjectable, () => () => noop);
di.override(requestAnimationFrameInjectable, () => (callback) => callback()); di.override(requestAnimationFrameInjectable, () => (callback) => callback());
di.override(lensResourcesDirInjectable, () => "/irrelevant");
di.override(environmentVariablesInjectable, () => ({}));
di.override(watchHistoryStateInjectable, () => () => () => {}); di.override(watchHistoryStateInjectable, () => () => () => {});
di.override(requestFromChannelInjectable, () => () => Promise.resolve(undefined as never)); di.override(requestFromChannelInjectable, () => () => Promise.resolve(undefined as never));