From d80e956870ddfd775806963464d2353053e65215 Mon Sep 17 00:00:00 2001 From: Jari Kolehmainen Date: Sat, 11 Apr 2020 17:48:29 +0300 Subject: [PATCH] Fix use of bundled kubectl (#241) Signed-off-by: Jari Kolehmainen --- __mocks__/electron.js | 14 ++++++++++++++ package.json | 3 ++- spec/src/main/kubectl_spec.ts | 17 +++++++++++++++++ src/common/__mocks__/user-store.ts | 9 +++++++++ src/main/kubectl.ts | 5 +++-- 5 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 __mocks__/electron.js create mode 100644 spec/src/main/kubectl_spec.ts create mode 100644 src/common/__mocks__/user-store.ts diff --git a/__mocks__/electron.js b/__mocks__/electron.js new file mode 100644 index 0000000000..f07751b346 --- /dev/null +++ b/__mocks__/electron.js @@ -0,0 +1,14 @@ +module.exports = { + require: jest.fn(), + match: jest.fn(), + app: { + getVersion: jest.fn().mockReturnValue("3.0.0"), + getPath: jest.fn().mockReturnValue("/foo/bar") + }, + remote: { + app: { + getPath: jest.fn() + } + }, + dialog: jest.fn() +}; diff --git a/package.json b/package.json index 436af15513..2f3094dd92 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "version": "3.2.0", "main": "main.ts", "config": { - "bundledKubectlVersion": "1.17.3", + "bundledKubectlVersion": "1.17.4", "bundledHelmVersion": "3.1.2" }, "engines": { @@ -99,6 +99,7 @@ "collectCoverage": true, "testRegex": "spec/.*_(spec)\\.[jt]sx?$", "verbose": true, + "testEnvironment": "node", "transform": { "^.+\\.tsx?$": "ts-jest" } diff --git a/spec/src/main/kubectl_spec.ts b/spec/src/main/kubectl_spec.ts new file mode 100644 index 0000000000..1f0d5881cc --- /dev/null +++ b/spec/src/main/kubectl_spec.ts @@ -0,0 +1,17 @@ +jest.mock("electron") +jest.mock("../../../src/common/user-store") + +import { Kubectl, bundledKubectl } from "../../../src/main/kubectl" + +describe("kubectlVersion", () => { + + it("returns bundled version if exactly same version used", async () => { + const kubectl = new Kubectl(bundledKubectl.kubectlVersion) + expect(kubectl.kubectlVersion).toBe(bundledKubectl.kubectlVersion) + }) + + it("returns bundled version if same major.minor version is used", async () => { + const kubectl = new Kubectl("1.17.0") + expect(kubectl.kubectlVersion).toBe(bundledKubectl.kubectlVersion) + }) +}) diff --git a/src/common/__mocks__/user-store.ts b/src/common/__mocks__/user-store.ts new file mode 100644 index 0000000000..21fc8355f8 --- /dev/null +++ b/src/common/__mocks__/user-store.ts @@ -0,0 +1,9 @@ +const userStore = { + getPreferences: jest.fn(() => { + return { + downloadMirror: "default" + } + }) +} + +export { userStore }; diff --git a/src/main/kubectl.ts b/src/main/kubectl.ts index 162a613d69..f72bcb5336 100644 --- a/src/main/kubectl.ts +++ b/src/main/kubectl.ts @@ -11,6 +11,7 @@ import * as lockFile from "proper-lockfile" import { helmCli } from "./helm-cli" import { userStore } from "../common/user-store" +const bundledVersion = require("../../package.json").config.bundledKubectlVersion const kubectlMap: Map = new Map([ ["1.7", "1.8.15"], ["1.8", "1.9.10"], @@ -22,7 +23,7 @@ const kubectlMap: Map = new Map([ ["1.14", "1.14.10"], ["1.15", "1.15.11"], ["1.16", "1.16.8"], - ["1.17", "1.17.4"], + ["1.17", bundledVersion], ["1.18", "1.18.0"] ]) @@ -54,7 +55,7 @@ export class Kubectl { public static readonly kubectlDir = path.join((app || remote.app).getPath("userData"), "binaries", "kubectl") public static readonly bundledKubectlPath = bundledPath - public static readonly bundledKubectlVersion: string = require("../../package.json").config.bundledKubectlVersion + public static readonly bundledKubectlVersion: string = bundledVersion private static bundledInstance: Kubectl; // Returns the single bundled Kubectl instance