diff --git a/packages/api/core/src/util/electron-executable.ts b/packages/api/core/src/util/electron-executable.ts index d0e7f435bc..d3354231e9 100644 --- a/packages/api/core/src/util/electron-executable.ts +++ b/packages/api/core/src/util/electron-executable.ts @@ -28,6 +28,12 @@ export function pluginCompileExists(packageJSON: PackageJSON): boolean { } export default async function locateElectronExecutable(dir: string, packageJSON: PackageJSON): Promise { + const overrideDist = process.env.ELECTRON_OVERRIDE_DIST_PATH; + if (overrideDist) { + console.info('Using electron dist from ELECTRON_OVERRIDE_DIST_PATH: ' + overrideDist); + return overrideDist; + } + let electronModulePath: string | undefined = await getElectronModulePath(dir, packageJSON); if (electronModulePath?.endsWith('electron-prebuilt-compile') && !pluginCompileExists(packageJSON)) { console.warn( diff --git a/packages/plugin/local-electron/src/LocalElectronPlugin.ts b/packages/plugin/local-electron/src/LocalElectronPlugin.ts index 4995a19b47..649c99ed51 100644 --- a/packages/plugin/local-electron/src/LocalElectronPlugin.ts +++ b/packages/plugin/local-electron/src/LocalElectronPlugin.ts @@ -11,9 +11,15 @@ export default class LocalElectronPlugin extends PluginBase { + if (this.enabled) { + this.checkPlatform(process.platform); + process.env.ELECTRON_OVERRIDE_DIST_PATH = this.config.electronPath; + } + }; + get enabled(): boolean { if (typeof this.config.enabled === 'undefined') { return true; @@ -21,14 +27,6 @@ export default class LocalElectronPlugin extends PluginBase { - if (this.enabled) { - this.checkPlatform(process.platform); - process.env.ELECTRON_OVERRIDE_DIST_PATH = this.config.electronPath; - } - return false; - } - getHooks(): ForgeHookMap { return { packageAfterExtract: this.afterExtract, diff --git a/packages/plugin/local-electron/test/LocalElectronPlugin_spec.ts b/packages/plugin/local-electron/test/LocalElectronPlugin_spec.ts index df547f7691..65c71622fd 100644 --- a/packages/plugin/local-electron/test/LocalElectronPlugin_spec.ts +++ b/packages/plugin/local-electron/test/LocalElectronPlugin_spec.ts @@ -20,30 +20,20 @@ describe('LocalElectronPlugin', () => { it('should set ELECTRON_OVERRIDE_DIST_PATH when enabled', async () => { expect(process.env.ELECTRON_OVERRIDE_DIST_PATH).to.equal(undefined); const p = new LocalElectronPlugin({ electronPath: 'test/foo' }); - await p.startLogic(); + p.init(); expect(process.env.ELECTRON_OVERRIDE_DIST_PATH).to.equal('test/foo'); }); it('should not set ELECTRON_OVERRIDE_DIST_PATH when disabled', async () => { expect(process.env.ELECTRON_OVERRIDE_DIST_PATH).to.equal(undefined); const p = new LocalElectronPlugin({ enabled: false, electronPath: 'test/foo' }); - await p.startLogic(); + p.init(); expect(process.env.ELECTRON_OVERRIDE_DIST_PATH).to.equal(undefined); }); it("should throw an error if platforms don't match", async () => { const p = new LocalElectronPlugin({ electronPath: 'test/bar', electronPlatform: 'wut' }); - await expect(p.startLogic()).to.eventually.be.rejectedWith( - `Can not use local Electron version, required platform "${process.platform}" but local platform is "wut"` - ); - }); - - it('should always return false', async () => { - let p = new LocalElectronPlugin({ electronPath: 'test/bar' }); - expect(await p.startLogic()).to.equal(false); - - p = new LocalElectronPlugin({ enabled: false, electronPath: 'test/bar' }); - expect(await p.startLogic()).to.equal(false); + expect(p.init).to.throw(`Can not use local Electron version, required platform "${process.platform}" but local platform is "wut"`); }); }); @@ -53,7 +43,11 @@ describe('LocalElectronPlugin', () => { beforeEach(() => { p = new LocalElectronPlugin({ electronPath: 'test/foo' }); // eslint-disable-next-line @typescript-eslint/no-explicit-any - p.init('', {} as any); + p.init(); + }); + + after(() => { + delete process.env.ELECTRON_OVERRIDE_DIST_PATH; }); describe('with afterExtract hook', () => {