diff --git a/src/behaviours/helm-charts/add-custom-helm-repository-in-preferences.test.ts b/src/behaviours/helm-charts/add-custom-helm-repository-in-preferences.test.ts index c13cfcc7af..480f7ac338 100644 --- a/src/behaviours/helm-charts/add-custom-helm-repository-in-preferences.test.ts +++ b/src/behaviours/helm-charts/add-custom-helm-repository-in-preferences.test.ts @@ -8,7 +8,6 @@ import type { ApplicationBuilder } from "../../renderer/components/test-utils/ge import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import type { AsyncFnMock } from "@async-fn/jest"; import asyncFn from "@async-fn/jest"; -import execFileInjectable from "../../common/fs/exec-file.injectable"; import helmBinaryPathInjectable from "../../main/helm/helm-binary-path.injectable"; import getActiveHelmRepositoriesInjectable from "../../main/helm/repositories/get-active-helm-repositories/get-active-helm-repositories.injectable"; import type { HelmRepo } from "../../common/helm/helm-repo"; @@ -17,6 +16,7 @@ import isPathInjectable from "../../renderer/components/input/validators/is-path import showSuccessNotificationInjectable from "../../renderer/components/notifications/show-success-notification.injectable"; import showErrorNotificationInjectable from "../../renderer/components/notifications/show-error-notification.injectable"; import type { AsyncResult } from "../../common/utils/async-result"; +import execFileInjectable from "../../main/child-process/exec-file.injectable"; // TODO: Make tooltips free of side effects by making it deterministic jest.mock("../../renderer/components/tooltip/withTooltip", () => ({ diff --git a/src/behaviours/helm-charts/add-helm-repository-from-list-in-preferences.test.ts b/src/behaviours/helm-charts/add-helm-repository-from-list-in-preferences.test.ts index 1a4b9db775..0f43805b78 100644 --- a/src/behaviours/helm-charts/add-helm-repository-from-list-in-preferences.test.ts +++ b/src/behaviours/helm-charts/add-helm-repository-from-list-in-preferences.test.ts @@ -7,7 +7,6 @@ import type { ApplicationBuilder } from "../../renderer/components/test-utils/ge import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import type { AsyncFnMock } from "@async-fn/jest"; import asyncFn from "@async-fn/jest"; -import execFileInjectable from "../../common/fs/exec-file.injectable"; import helmBinaryPathInjectable from "../../main/helm/helm-binary-path.injectable"; import getActiveHelmRepositoriesInjectable from "../../main/helm/repositories/get-active-helm-repositories/get-active-helm-repositories.injectable"; import type { HelmRepo } from "../../common/helm/helm-repo"; @@ -15,6 +14,7 @@ import callForPublicHelmRepositoriesInjectable from "../../renderer/components/+ import showSuccessNotificationInjectable from "../../renderer/components/notifications/show-success-notification.injectable"; import showErrorNotificationInjectable from "../../renderer/components/notifications/show-error-notification.injectable"; import type { AsyncResult } from "../../common/utils/async-result"; +import execFileInjectable from "../../main/child-process/exec-file.injectable"; // TODO: Make tooltips free of side effects by making it deterministic jest.mock("../../renderer/components/tooltip/withTooltip", () => ({ diff --git a/src/behaviours/helm-charts/listing-active-helm-repositories-in-preferences.test.ts b/src/behaviours/helm-charts/listing-active-helm-repositories-in-preferences.test.ts index a801487d10..3528a871fc 100644 --- a/src/behaviours/helm-charts/listing-active-helm-repositories-in-preferences.test.ts +++ b/src/behaviours/helm-charts/listing-active-helm-repositories-in-preferences.test.ts @@ -10,12 +10,12 @@ import readYamlFileInjectable from "../../common/fs/read-yaml-file.injectable"; import type { AsyncFnMock } from "@async-fn/jest"; import asyncFn from "@async-fn/jest"; import type { HelmRepositoriesFromYaml } from "../../main/helm/repositories/get-active-helm-repositories/get-active-helm-repositories.injectable"; -import execFileInjectable from "../../common/fs/exec-file.injectable"; import helmBinaryPathInjectable from "../../main/helm/helm-binary-path.injectable"; import loggerInjectable from "../../common/logger.injectable"; import type { Logger } from "../../common/logger"; import callForPublicHelmRepositoriesInjectable from "../../renderer/components/+preferences/kubernetes/helm-charts/adding-of-public-helm-repository/public-helm-repositories/call-for-public-helm-repositories.injectable"; import showErrorNotificationInjectable from "../../renderer/components/notifications/show-error-notification.injectable"; +import execFileInjectable from "../../main/child-process/exec-file.injectable"; // TODO: Make tooltips free of side effects by making it deterministic jest.mock("../../renderer/components/tooltip/withTooltip", () => ({ diff --git a/src/behaviours/helm-charts/remove-helm-repository-from-list-of-active-repository-in-preferences.test.ts b/src/behaviours/helm-charts/remove-helm-repository-from-list-of-active-repository-in-preferences.test.ts index 0d3dfe331a..bfa8f91dd2 100644 --- a/src/behaviours/helm-charts/remove-helm-repository-from-list-of-active-repository-in-preferences.test.ts +++ b/src/behaviours/helm-charts/remove-helm-repository-from-list-of-active-repository-in-preferences.test.ts @@ -8,12 +8,12 @@ import type { ApplicationBuilder } from "../../renderer/components/test-utils/ge import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; import type { AsyncFnMock } from "@async-fn/jest"; import asyncFn from "@async-fn/jest"; -import execFileInjectable from "../../common/fs/exec-file.injectable"; import helmBinaryPathInjectable from "../../main/helm/helm-binary-path.injectable"; import getActiveHelmRepositoriesInjectable from "../../main/helm/repositories/get-active-helm-repositories/get-active-helm-repositories.injectable"; import type { HelmRepo } from "../../common/helm/helm-repo"; import callForPublicHelmRepositoriesInjectable from "../../renderer/components/+preferences/kubernetes/helm-charts/adding-of-public-helm-repository/public-helm-repositories/call-for-public-helm-repositories.injectable"; import type { AsyncResult } from "../../common/utils/async-result"; +import execFileInjectable from "../../main/child-process/exec-file.injectable"; // TODO: Make tooltips free of side effects by making it deterministic jest.mock("../../renderer/components/tooltip/withTooltip", () => ({ diff --git a/src/common/fs/exec-file.injectable.ts b/src/common/fs/exec-file.injectable.ts deleted file mode 100644 index 510fa025e4..0000000000 --- a/src/common/fs/exec-file.injectable.ts +++ /dev/null @@ -1,25 +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"; -import { execFile } from "child_process"; -import { promisify } from "util"; - -export type ExecFile = (filePath: string, args: string[]) => Promise; - -const execFileInjectable = getInjectable({ - id: "exec-file", - - instantiate: (): ExecFile => async (filePath, args) => { - const asyncExecFile = promisify(execFile); - - const result = await asyncExecFile(filePath, args); - - return result.stdout; - }, - - causesSideEffects: true, -}); - -export default execFileInjectable; diff --git a/src/main/getDiForUnitTesting.ts b/src/main/getDiForUnitTesting.ts index 36713d852d..af460ebb14 100644 --- a/src/main/getDiForUnitTesting.ts +++ b/src/main/getDiForUnitTesting.ts @@ -84,7 +84,6 @@ import startKubeConfigSyncInjectable from "./start-main-application/runnables/ku import appVersionInjectable from "../common/get-configuration-file-model/app-version/app-version.injectable"; import getRandomIdInjectable from "../common/utils/get-random-id.injectable"; import periodicalCheckForUpdatesInjectable from "./application-update/periodical-check-for-updates/periodical-check-for-updates.injectable"; -import execFileInjectable from "../common/fs/exec-file.injectable"; import normalizedPlatformArchitectureInjectable from "../common/vars/normalized-platform-architecture.injectable"; import getHelmChartInjectable from "./helm/helm-service/get-helm-chart.injectable"; import getHelmChartValuesInjectable from "./helm/helm-service/get-helm-chart-values.injectable"; @@ -100,6 +99,7 @@ import updateHelmReleaseInjectable from "./helm/helm-service/update-helm-release 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 electronInjectable from "./utils/resolve-system-proxy/electron.injectable"; +import execFileInjectable from "./child-process/exec-file.injectable"; export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {}) { const { diff --git a/src/main/helm/exec-helm/exec-helm.injectable.ts b/src/main/helm/exec-helm/exec-helm.injectable.ts index a97953706d..fbbf8e35e8 100644 --- a/src/main/helm/exec-helm/exec-helm.injectable.ts +++ b/src/main/helm/exec-helm/exec-helm.injectable.ts @@ -3,10 +3,10 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import execFileInjectable from "../../../common/fs/exec-file.injectable"; import helmBinaryPathInjectable from "../helm-binary-path.injectable"; import type { AsyncResult } from "../../../common/utils/async-result"; import { getErrorMessage } from "../../../common/utils/get-error-message"; +import execFileInjectable from "../../child-process/exec-file.injectable"; const execHelmInjectable = getInjectable({ id: "exec-helm", @@ -17,9 +17,9 @@ const execHelmInjectable = getInjectable({ return async (...args: string[]): Promise> => { try { - const response = await execFile(helmBinaryPath, args); + const { stdout } = await execFile(helmBinaryPath, args); - return { callWasSuccessful: true, response }; + return { callWasSuccessful: true, response: stdout }; } catch (error) { return { callWasSuccessful: false, error: getErrorMessage(error) }; } diff --git a/src/main/k8s/resource-applier/__tests__/applier.test.ts b/src/main/k8s/resource-applier/__tests__/applier.test.ts index da31dc67ef..564dd71c96 100644 --- a/src/main/k8s/resource-applier/__tests__/applier.test.ts +++ b/src/main/k8s/resource-applier/__tests__/applier.test.ts @@ -9,7 +9,6 @@ import path from "path"; import directoryForKubeConfigsInjectable from "../../../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; import createAuthorizationReviewInjectable from "../../../../common/cluster/authorization-review.injectable"; import createListNamespacesInjectable from "../../../../common/cluster/list-namespaces.injectable"; -import readFileSyncInjectable from "../../../../common/fs/read-file-sync.injectable"; import type { RemoveDir } from "../../../../common/fs/remove.injectable"; import removeDirInjectable from "../../../../common/fs/remove.injectable"; import tempDirInjectable from "../../../../common/fs/temp-dir.injectable"; @@ -59,26 +58,6 @@ describe("ResourceApplier", () => { di.override(removeDirInjectable, () => removeDir = jest.fn()); di.override(tempDirInjectable, () => jest.fn().mockImplementation(() => "some/temp/dir")); di.override(tempFileInjectable, () => jest.fn().mockImplementation(() => "some/temp/file")); - di.override(readFileSyncInjectable, () => jest.fn().mockImplementation(() => { - return JSON.stringify({ - clusters: [{ - name: "some-cluster", - cluster: { - server: "some-server-url", - }, - }], - users: [{ - name: "some-user", - }], - contexts: [{ - name: "some-context", - context: { - user: "some-user", - cluster: "some-cluster", - }, - }], - }); - })); const createK8sResourceApplier = di.inject(createK8sResourceApplierInjectable); const createCluster = di.inject(createClusterInjectable); @@ -87,6 +66,8 @@ describe("ResourceApplier", () => { contextName: "some-context", id: "some-id", kubeConfigPath: "some/path/config", + }, { + clusterServerUrl: "some-server-url", })); });