From 9fa75199f354d9bc9b78b3a09435e15e416bb8b7 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Mon, 24 Jan 2022 12:27:52 -0500 Subject: [PATCH] Fix build and tests Signed-off-by: Sebastian Malton --- .../package-lock.json | 2 +- .../kube-object-event-status/package.json | 2 +- .../metrics-cluster-feature/package-lock.json | 2 +- .../metrics-cluster-feature/package.json | 2 +- extensions/node-menu/package-lock.json | 2 +- extensions/node-menu/package.json | 2 +- extensions/pod-menu/package-lock.json | 2 +- extensions/pod-menu/package.json | 2 +- package.json | 2 +- src/common/ipc/index.ts | 1 - .../__tests__/extension-loader.test.ts | 7 ++-- src/main/__test__/cluster.test.ts | 7 +--- .../components/+extensions/extensions.tsx | 36 +++++++---------- ...tall-from-select-file-dialog.injectable.ts | 39 +++++++++++++++++++ ...tall-from-select-file-dialog.injectable.ts | 20 ---------- .../install-from-select-file-dialog.ts | 29 -------------- .../+preferences/add-helm-repo-dialog.tsx | 4 +- .../__tests__/pod-tolerations.test.tsx | 3 +- src/renderer/components/input/input.tsx | 1 + .../layout/top-bar/top-bar-win-linux.test.tsx | 13 ++++--- 20 files changed, 78 insertions(+), 100 deletions(-) create mode 100644 src/renderer/components/+extensions/install-from-select-file-dialog.injectable.ts delete mode 100644 src/renderer/components/+extensions/install-from-select-file-dialog/install-from-select-file-dialog.injectable.ts delete mode 100644 src/renderer/components/+extensions/install-from-select-file-dialog/install-from-select-file-dialog.ts diff --git a/extensions/kube-object-event-status/package-lock.json b/extensions/kube-object-event-status/package-lock.json index 648af47afb..42ab2e1fc1 100644 --- a/extensions/kube-object-event-status/package-lock.json +++ b/extensions/kube-object-event-status/package-lock.json @@ -1,6 +1,6 @@ { "name": "kube-object-event-status", - "version": "0.0.1", + "version": "5.3.0-latest.1643044317859.1643044464147", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/extensions/kube-object-event-status/package.json b/extensions/kube-object-event-status/package.json index e8dfe38379..e3d1d2f183 100644 --- a/extensions/kube-object-event-status/package.json +++ b/extensions/kube-object-event-status/package.json @@ -1,6 +1,6 @@ { "name": "kube-object-event-status", - "version": "0.0.1", + "version": "5.3.0-latest.1643044317859.1643044464147", "description": "Adds kube object status from events", "renderer": "dist/renderer.js", "lens": { diff --git a/extensions/metrics-cluster-feature/package-lock.json b/extensions/metrics-cluster-feature/package-lock.json index b67c57706b..fc93a991c1 100644 --- a/extensions/metrics-cluster-feature/package-lock.json +++ b/extensions/metrics-cluster-feature/package-lock.json @@ -1,6 +1,6 @@ { "name": "lens-metrics-cluster-feature", - "version": "0.0.1", + "version": "5.3.0-latest.1643044317859.1643044464147", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/extensions/metrics-cluster-feature/package.json b/extensions/metrics-cluster-feature/package.json index 8683b75737..c649d4350b 100644 --- a/extensions/metrics-cluster-feature/package.json +++ b/extensions/metrics-cluster-feature/package.json @@ -1,6 +1,6 @@ { "name": "lens-metrics-cluster-feature", - "version": "0.0.1", + "version": "5.3.0-latest.1643044317859.1643044464147", "description": "Lens metrics cluster feature", "renderer": "dist/renderer.js", "lens": { diff --git a/extensions/node-menu/package-lock.json b/extensions/node-menu/package-lock.json index 3d8c201d93..f5678369ea 100644 --- a/extensions/node-menu/package-lock.json +++ b/extensions/node-menu/package-lock.json @@ -1,6 +1,6 @@ { "name": "lens-node-menu", - "version": "0.0.1", + "version": "5.3.0-latest.1643044317859.1643044464147", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/extensions/node-menu/package.json b/extensions/node-menu/package.json index fdaaee3ae1..52ec89e5d0 100644 --- a/extensions/node-menu/package.json +++ b/extensions/node-menu/package.json @@ -1,6 +1,6 @@ { "name": "lens-node-menu", - "version": "0.0.1", + "version": "5.3.0-latest.1643044317859.1643044464147", "description": "Lens node menu", "renderer": "dist/renderer.js", "lens": { diff --git a/extensions/pod-menu/package-lock.json b/extensions/pod-menu/package-lock.json index e62f33d7cb..0ec5e9ab10 100644 --- a/extensions/pod-menu/package-lock.json +++ b/extensions/pod-menu/package-lock.json @@ -1,6 +1,6 @@ { "name": "lens-pod-menu", - "version": "0.0.1", + "version": "5.3.0-latest.1643044317859.1643044464147", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/extensions/pod-menu/package.json b/extensions/pod-menu/package.json index 959059e5a2..07d205fa17 100644 --- a/extensions/pod-menu/package.json +++ b/extensions/pod-menu/package.json @@ -1,6 +1,6 @@ { "name": "lens-pod-menu", - "version": "0.0.1", + "version": "5.3.0-latest.1643044317859.1643044464147", "description": "Lens pod menu", "renderer": "dist/renderer.js", "lens": { diff --git a/package.json b/package.json index 398eff127c..448c2c6817 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "productName": "OpenLens", "description": "OpenLens - Open Source IDE for Kubernetes", "homepage": "https://github.com/lensapp/lens", - "version": "5.3.0", + "version": "5.3.0-latest.1643044317859.1643044464147", "main": "static/build/main.js", "copyright": "© 2021 OpenLens Authors", "license": "MIT", diff --git a/src/common/ipc/index.ts b/src/common/ipc/index.ts index 9762cd75e5..2d41d1cf31 100644 --- a/src/common/ipc/index.ts +++ b/src/common/ipc/index.ts @@ -12,5 +12,4 @@ export * from "./update-available.ipc"; export * from "./cluster.ipc"; export * from "./type-enforced-ipc"; export * from "./hotbar"; -export * from "./extension-loader.ipc"; export * from "./window"; diff --git a/src/extensions/__tests__/extension-loader.test.ts b/src/extensions/__tests__/extension-loader.test.ts index fe72bea585..c9e145f8f9 100644 --- a/src/extensions/__tests__/extension-loader.test.ts +++ b/src/extensions/__tests__/extension-loader.test.ts @@ -8,8 +8,7 @@ import { Console } from "console"; import { stdout, stderr } from "process"; import extensionLoaderInjectable from "../extension-loader/extension-loader.injectable"; import { runInAction } from "mobx"; -import updateExtensionsStateInjectable - from "../extension-loader/update-extensions-state/update-extensions-state.injectable"; +import updateExtensionsStateInjectable from "../extension-loader/update-extensions-state/update-extensions-state.injectable"; import { getDisForUnitTesting } from "../../test-utils/get-dis-for-unit-testing"; import mockFs from "mock-fs"; @@ -24,7 +23,7 @@ jest.mock( () => ({ ipcRenderer: { invoke: jest.fn(async (channel: string) => { - if (channel === "extensions:main") { + if (channel === "extension-loader:main:state") { return [ [ manifestPath, @@ -61,7 +60,7 @@ jest.mock( }), on: jest.fn( (channel: string, listener: (event: any, ...args: any[]) => void) => { - if (channel === "extensions:main") { + if (channel === "extension-loader:main:state") { // First initialize with extensions 1 and 2 // and then broadcast event to remove extension 2 and add extension number 3 setTimeout(() => { diff --git a/src/main/__test__/cluster.test.ts b/src/main/__test__/cluster.test.ts index d528f9f9ac..4f6c833a3e 100644 --- a/src/main/__test__/cluster.test.ts +++ b/src/main/__test__/cluster.test.ts @@ -51,8 +51,7 @@ describe("create clusters", () => { const di = getDiForUnitTesting({ doGeneralOverrides: true }); - - const mockOpts = { + mockFs({ "minikube-config.yml": JSON.stringify({ apiVersion: "v1", clusters: [{ @@ -74,9 +73,7 @@ describe("create clusters", () => { kind: "Config", preferences: {}, }), - }; - - mockFs(mockOpts); + }); await di.runSetups(); diff --git a/src/renderer/components/+extensions/extensions.tsx b/src/renderer/components/+extensions/extensions.tsx index 264118da3b..e9be90e067 100644 --- a/src/renderer/components/+extensions/extensions.tsx +++ b/src/renderer/components/+extensions/extensions.tsx @@ -27,12 +27,11 @@ import enableExtensionInjectable from "./enable-extension/enable-extension.injec import disableExtensionInjectable from "./disable-extension/disable-extension.injectable"; import confirmUninstallExtensionInjectable from "./confirm-uninstall-extension/confirm-uninstall-extension.injectable"; import installFromInputInjectable from "./install-from-input/install-from-input.injectable"; -import installFromSelectFileDialogInjectable from "./install-from-select-file-dialog/install-from-select-file-dialog.injectable"; +import installFromSelectFileDialogInjectable from "./install-from-select-file-dialog.injectable"; import type { LensExtensionId } from "../../../extensions/lens-extension"; import installOnDropInjectable from "./install-on-drop/install-on-drop.injectable"; import { supportedExtensionFormats } from "./supported-extension-formats"; -import extensionInstallationStateStoreInjectable - from "../../../extensions/extension-installation-state-store/extension-installation-state-store.injectable"; +import extensionInstallationStateStoreInjectable from "../../../extensions/extension-installation-state-store/extension-installation-state-store.injectable"; import type { ExtensionInstallationStateStore } from "../../../extensions/extension-installation-state-store/extension-installation-state-store"; interface Dependencies { @@ -107,22 +106,15 @@ class NonInjectedExtensions extends React.Component { } } -export const Extensions = withInjectables( - NonInjectedExtensions, - { - getProps: (di) => ({ - userExtensions: di.inject(userExtensionsInjectable), - enableExtension: di.inject(enableExtensionInjectable), - disableExtension: di.inject(disableExtensionInjectable), - confirmUninstallExtension: di.inject(confirmUninstallExtensionInjectable), - installFromInput: di.inject(installFromInputInjectable), - installOnDrop: di.inject(installOnDropInjectable), - - installFromSelectFileDialog: di.inject( - installFromSelectFileDialogInjectable, - ), - - extensionInstallationStateStore: di.inject(extensionInstallationStateStoreInjectable), - }), - }, -); +export const Extensions = withInjectables(NonInjectedExtensions, { + getProps: (di) => ({ + userExtensions: di.inject(userExtensionsInjectable), + enableExtension: di.inject(enableExtensionInjectable), + disableExtension: di.inject(disableExtensionInjectable), + confirmUninstallExtension: di.inject(confirmUninstallExtensionInjectable), + installFromInput: di.inject(installFromInputInjectable), + installOnDrop: di.inject(installOnDropInjectable), + installFromSelectFileDialog: di.inject(installFromSelectFileDialogInjectable), + extensionInstallationStateStore: di.inject(extensionInstallationStateStoreInjectable), + }), +}); diff --git a/src/renderer/components/+extensions/install-from-select-file-dialog.injectable.ts b/src/renderer/components/+extensions/install-from-select-file-dialog.injectable.ts new file mode 100644 index 0000000000..5cf51733d1 --- /dev/null +++ b/src/renderer/components/+extensions/install-from-select-file-dialog.injectable.ts @@ -0,0 +1,39 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable"; +import { requestOpenFilePickingDialog } from "../../ipc"; +import { supportedExtensionFormats } from "./supported-extension-formats"; +import attemptInstallsInjectable from "./attempt-installs/attempt-installs.injectable"; +import directoryForDownloadsInjectable from "../../../common/app-paths/directory-for-downloads/directory-for-downloads.injectable"; +import { bind } from "../../utils"; + +interface Dependencies { + attemptInstalls: (filePaths: string[]) => Promise + directoryForDownloads: string +} + +async function installFromSelectFileDialog({ attemptInstalls, directoryForDownloads }: Dependencies) { + const { canceled, filePaths } = await requestOpenFilePickingDialog({ + defaultPath: directoryForDownloads, + properties: ["openFile", "multiSelections"], + message: `Select extensions to install (formats: ${supportedExtensionFormats.join(", ")}), `, + buttonLabel: "Use configuration", + filters: [{ name: "tarball", extensions: supportedExtensionFormats }], + }); + + if (!canceled) { + await attemptInstalls(filePaths); + } +} + +const installFromSelectFileDialogInjectable = getInjectable({ + instantiate: (di) => bind(installFromSelectFileDialog, null, { + attemptInstalls: di.inject(attemptInstallsInjectable), + directoryForDownloads: di.inject(directoryForDownloadsInjectable), + }), + lifecycle: lifecycleEnum.singleton, +}); + +export default installFromSelectFileDialogInjectable; diff --git a/src/renderer/components/+extensions/install-from-select-file-dialog/install-from-select-file-dialog.injectable.ts b/src/renderer/components/+extensions/install-from-select-file-dialog/install-from-select-file-dialog.injectable.ts deleted file mode 100644 index 8ea2d9b1a4..0000000000 --- a/src/renderer/components/+extensions/install-from-select-file-dialog/install-from-select-file-dialog.injectable.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ -import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable"; -import { installFromSelectFileDialog } from "./install-from-select-file-dialog"; -import attemptInstallsInjectable from "../attempt-installs/attempt-installs.injectable"; -import directoryForDownloadsInjectable from "../../../../common/app-paths/directory-for-downloads/directory-for-downloads.injectable"; - -const installFromSelectFileDialogInjectable = getInjectable({ - instantiate: (di) => - installFromSelectFileDialog({ - attemptInstalls: di.inject(attemptInstallsInjectable), - directoryForDownloads: di.inject(directoryForDownloadsInjectable), - }), - - lifecycle: lifecycleEnum.singleton, -}); - -export default installFromSelectFileDialogInjectable; diff --git a/src/renderer/components/+extensions/install-from-select-file-dialog/install-from-select-file-dialog.ts b/src/renderer/components/+extensions/install-from-select-file-dialog/install-from-select-file-dialog.ts deleted file mode 100644 index de98b5a7ec..0000000000 --- a/src/renderer/components/+extensions/install-from-select-file-dialog/install-from-select-file-dialog.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ -import { dialog } from "../../../remote-helpers"; -import { supportedExtensionFormats } from "../supported-extension-formats"; - -interface Dependencies { - attemptInstalls: (filePaths: string[]) => Promise - directoryForDownloads: string -} - -export const installFromSelectFileDialog = - ({ attemptInstalls, directoryForDownloads }: Dependencies) => - async () => { - const { canceled, filePaths } = await dialog.showOpenDialog({ - defaultPath: directoryForDownloads, - properties: ["openFile", "multiSelections"], - message: `Select extensions to install (formats: ${supportedExtensionFormats.join( - ", ", - )}), `, - buttonLabel: "Use configuration", - filters: [{ name: "tarball", extensions: supportedExtensionFormats }], - }); - - if (!canceled) { - await attemptInstalls(filePaths); - } - }; diff --git a/src/renderer/components/+preferences/add-helm-repo-dialog.tsx b/src/renderer/components/+preferences/add-helm-repo-dialog.tsx index bd25940c84..eb3d255987 100644 --- a/src/renderer/components/+preferences/add-helm-repo-dialog.tsx +++ b/src/renderer/components/+preferences/add-helm-repo-dialog.tsx @@ -19,7 +19,7 @@ import { SubTitle } from "../layout/sub-title"; import { Icon } from "../icon"; import { Notifications } from "../notifications"; import { HelmRepo, HelmRepoManager } from "../../../main/helm/helm-repo-manager"; -import { dialog } from "../../remote-helpers"; +import { requestOpenFilePickingDialog } from "../../ipc"; interface Props extends Partial { onAddRepo: Function @@ -73,7 +73,7 @@ export class AddHelmRepoDialog extends React.Component { } async selectFileDialog(type: FileType, fileFilter: FileFilter) { - const { canceled, filePaths } = await dialog.showOpenDialog({ + const { canceled, filePaths } = await requestOpenFilePickingDialog({ defaultPath: this.getFilePath(type), properties: ["openFile", "showHiddenFiles"], message: `Select file`, diff --git a/src/renderer/components/+workloads-pods/__tests__/pod-tolerations.test.tsx b/src/renderer/components/+workloads-pods/__tests__/pod-tolerations.test.tsx index 79deef7dcb..69102ca38b 100644 --- a/src/renderer/components/+workloads-pods/__tests__/pod-tolerations.test.tsx +++ b/src/renderer/components/+workloads-pods/__tests__/pod-tolerations.test.tsx @@ -10,8 +10,7 @@ import type { IToleration } from "../../../../common/k8s-api/workload-kube-objec import { PodTolerations } from "../pod-tolerations"; import { getDiForUnitTesting } from "../../../getDiForUnitTesting"; import { DiRender, renderFor } from "../../test-utils/renderFor"; -import directoryForLensLocalStorageInjectable - from "../../../../common/directory-for-lens-local-storage/directory-for-lens-local-storage.injectable"; +import directoryForLensLocalStorageInjectable from "../../../../common/directory-for-lens-local-storage/directory-for-lens-local-storage.injectable"; jest.mock("electron", () => ({ app: { diff --git a/src/renderer/components/input/input.tsx b/src/renderer/components/input/input.tsx index 36461fd684..9e961201b4 100644 --- a/src/renderer/components/input/input.tsx +++ b/src/renderer/components/input/input.tsx @@ -353,6 +353,7 @@ export class Input extends React.Component { dirty: _dirty, // excluded from passing to input-element defaultValue, trim, + blurOnEnter, ...inputProps } = this.props; const { focused, dirty, valid, validating, errors } = this.state; diff --git a/src/renderer/components/layout/top-bar/top-bar-win-linux.test.tsx b/src/renderer/components/layout/top-bar/top-bar-win-linux.test.tsx index c9eebff850..8834213165 100644 --- a/src/renderer/components/layout/top-bar/top-bar-win-linux.test.tsx +++ b/src/renderer/components/layout/top-bar/top-bar-win-linux.test.tsx @@ -7,17 +7,18 @@ import React from "react"; import { fireEvent } from "@testing-library/react"; import "@testing-library/jest-dom/extend-expect"; import { TopBar } from "./top-bar"; -import { IpcMainWindowEvents, broadcastMessage, requestMain } from "../../../../common/ipc"; +import { IpcMainWindowEvents, broadcastMessage } from "../../../../common/ipc"; import * as vars from "../../../../common/vars"; import { getDiForUnitTesting } from "../../../getDiForUnitTesting"; import { DiRender, renderFor } from "../../test-utils/renderFor"; -import directoryForUserDataInjectable - from "../../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable"; +import directoryForUserDataInjectable from "../../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable"; import mockFs from "mock-fs"; +import { requestWindowAction } from "../../../ipc"; const mockConfig = vars as { isWindows: boolean; isLinux: boolean }; jest.mock("../../../../common/ipc"); +jest.mock("../../../ipc"); jest.mock("../../../../common/vars", () => { const SemVer = require("semver").SemVer; @@ -89,12 +90,12 @@ describe(" in Windows and Linux", () => { expect(broadcastMessage).toHaveBeenCalledWith(IpcMainWindowEvents.OPEN_CONTEXT_MENU); fireEvent.click(minimize); - expect(requestMain).toHaveBeenCalledWith(IpcMainWindowEvents.WINDOW_ACTION, "minimize"); + expect(requestWindowAction).toHaveBeenCalledWith("minimize"); fireEvent.click(maximize); - expect(requestMain).toHaveBeenCalledWith(IpcMainWindowEvents.WINDOW_ACTION, "toggleMaximize"); + expect(requestWindowAction).toHaveBeenCalledWith("toggle-maximize"); fireEvent.click(close); - expect(requestMain).toHaveBeenCalledWith(IpcMainWindowEvents.WINDOW_ACTION, "close"); + expect(requestWindowAction).toHaveBeenCalledWith("close"); }); });