From da96776b73d35278e8b34a53d940281355adf51c Mon Sep 17 00:00:00 2001 From: Roman Date: Fri, 14 Aug 2020 12:42:50 +0300 Subject: [PATCH] fix: skip redefining global `__static` in tests Signed-off-by: Roman --- src/common/utils/defineGlobal.ts | 12 ++++++++++++ src/common/vars.ts | 6 +++--- 2 files changed, 15 insertions(+), 3 deletions(-) create mode 100755 src/common/utils/defineGlobal.ts diff --git a/src/common/utils/defineGlobal.ts b/src/common/utils/defineGlobal.ts new file mode 100755 index 0000000000..29e2e60ea0 --- /dev/null +++ b/src/common/utils/defineGlobal.ts @@ -0,0 +1,12 @@ +// Setup variable in global scope (top-level object) +// Global type definition must be added separately to `mocks.d.ts` in form: +// declare const __globalName: any; + +export function defineGlobal(propName: string, descriptor: PropertyDescriptor) { + const scope = typeof global !== "undefined" ? global : window; + if (scope.hasOwnProperty(propName)) { + console.info(`Global variable "${propName}" already exists. Skipping.`) + return; + } + Object.defineProperty(scope, propName, descriptor); +} diff --git a/src/common/vars.ts b/src/common/vars.ts index 8dc9831898..1df1e0f5df 100644 --- a/src/common/vars.ts +++ b/src/common/vars.ts @@ -1,6 +1,7 @@ // App's common configuration for any process (main, renderer, build pipeline, etc.) -import packageInfo from "../../package.json" import path from "path"; +import packageInfo from "../../package.json" +import { defineGlobal } from "./utils/defineGlobal"; export const isMac = process.platform === "darwin" export const isWindows = process.platform === "win32" @@ -21,8 +22,7 @@ export const htmlTemplate = path.resolve(rendererDir, "template.html"); export const sassCommonVars = path.resolve(rendererDir, "components/vars.scss"); // Special runtime paths -const globScope = typeof global !== "undefined" ? global : window; -Object.defineProperty(globScope, "__static", { +defineGlobal("__static", { get() { if (isDevelopment) { return path.resolve(contextDir, "static");