diff --git a/__mocks__/styleMock.ts b/__mocks__/styleMock.ts new file mode 100644 index 0000000000..a099545376 --- /dev/null +++ b/__mocks__/styleMock.ts @@ -0,0 +1 @@ +module.exports = {}; \ No newline at end of file diff --git a/package.json b/package.json index efcf47fed8..9983c3eb66 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,9 @@ "testEnvironment": "node", "transform": { "^.+\\.tsx?$": "ts-jest" + }, + "moduleNameMapper": { + "\\.(css|scss)$": "/__mocks__/styleMock.ts" } }, "build": { diff --git a/src/common/kube-helpers.ts b/src/common/kube-helpers.ts index 3df03a8211..3709f0ac94 100644 --- a/src/common/kube-helpers.ts +++ b/src/common/kube-helpers.ts @@ -16,7 +16,7 @@ function resolveTilde(filePath: string) { export function loadConfig(pathOrContent?: string): KubeConfig { const kc = new KubeConfig(); - + if (fse.pathExistsSync(pathOrContent)) { kc.loadFromFile(path.resolve(resolveTilde(pathOrContent))); } else { @@ -160,7 +160,7 @@ export async function getKubeConfigLocal(): Promise { const file = await readFile(configFile, "utf8"); const obj = yaml.safeLoad(file); if (obj.contexts) { - obj.contexts = obj.context.filter((ctx: any) => ctx?.context?.cluster && ctx?.name) + obj.contexts = obj.contexts.filter((ctx: any) => ctx?.context?.cluster && ctx?.name) } return yaml.safeDump(obj); } catch (err) { diff --git a/src/main/index.ts b/src/main/index.ts index f608490ed1..73a5843840 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -30,7 +30,7 @@ if (app.commandLine.getSwitchValue("proxy-server") !== "") { } async function main() { - shellSync(app.getLocale()); + await shellSync(); const workingDir = path.join(app.getPath("appData"), appName); app.setName(appName); diff --git a/src/main/kubectl.ts b/src/main/kubectl.ts index 6a2d18e864..ee1c0efdc7 100644 --- a/src/main/kubectl.ts +++ b/src/main/kubectl.ts @@ -289,7 +289,7 @@ export class Kubectl { } protected getDownloadMirror() { - const mirror = packageMirrors.get(userStore.preferences.downloadMirror) + const mirror = packageMirrors.get(userStore.preferences?.downloadMirror) if (mirror) { return mirror } diff --git a/src/main/port.ts b/src/main/port.ts index a938ff4ae3..b253d3590a 100644 --- a/src/main/port.ts +++ b/src/main/port.ts @@ -6,7 +6,8 @@ import logger from "./logger" export async function getFreePort(): Promise { logger.debug("Lookup new free port.."); return new Promise((resolve, reject) => { - const server = net.createServer().unref().listen({ port: 0 }); + const server = net.createServer() + server.unref() server.on("listening", () => { const port = (server.address() as AddressInfo).port server.close(() => resolve(port)); @@ -16,5 +17,6 @@ export async function getFreePort(): Promise { logger.error(`Can't resolve new port: "${error}"`); reject(error); }); + server.listen({ host: "127.0.0.1", port: 0 }) }) } diff --git a/src/main/shell-sync.ts b/src/main/shell-sync.ts index 101fd46bc9..373d0a36ba 100644 --- a/src/main/shell-sync.ts +++ b/src/main/shell-sync.ts @@ -1,5 +1,7 @@ import shellEnv from "shell-env" import os from "os"; +import { app } from "electron"; +import logger from "./logger"; interface Env { [key: string]: string; @@ -9,14 +11,21 @@ interface Env { * shellSync loads what would have been the environment if this application was * run from the command line, into the process.env object. This is especially * useful on macos where this always needs to be done. - * @param locale Should be electron's `app.getLocale()` */ -export function shellSync(locale: string) { +export async function shellSync() { const { shell } = os.userInfo(); - const env: Env = JSON.parse(JSON.stringify(shellEnv.sync(shell))) + + let envVars = {}; + try { + envVars = await shellEnv(shell); + } catch (error) { + logger.error(`shellEnv: ${error}`) + } + + const env: Env = JSON.parse(JSON.stringify(envVars)); if (!env.LANG) { // the LANG env var expects an underscore instead of electron's dash - env.LANG = `${locale.replace('-', '_')}.UTF-8`; + env.LANG = `${app.getLocale().replace('-', '_')}.UTF-8`; } else if (!env.LANG.endsWith(".UTF-8")) { env.LANG += ".UTF-8" }