From bed43346181b9f3b9ca978778629d2e6b3e286ba Mon Sep 17 00:00:00 2001 From: Erick Zhao Date: Mon, 24 Nov 2025 17:19:14 -0800 Subject: [PATCH 1/3] test(fuses): use `portal:` protocol for local modules --- .gitignore | 2 +- .../fuses/spec/FusesPlugin.slow.spec.ts | 40 ++++++------------- .../plugin/fuses/spec/fixture/.yarnrc.yml | 9 +++++ .../fuses/spec/fixture/app/package.json | 18 --------- .../fuses/spec/fixture/app/package.json.tmpl | 18 --------- .../spec/fixture/{app => }/forge.config.ts | 18 +++++++-- .../plugin/fuses/spec/fixture/package.json | 15 +++++++ .../fuses/spec/fixture/{app => }/src/main.js | 0 8 files changed, 51 insertions(+), 69 deletions(-) create mode 100644 packages/plugin/fuses/spec/fixture/.yarnrc.yml delete mode 100644 packages/plugin/fuses/spec/fixture/app/package.json delete mode 100644 packages/plugin/fuses/spec/fixture/app/package.json.tmpl rename packages/plugin/fuses/spec/fixture/{app => }/forge.config.ts (67%) create mode 100644 packages/plugin/fuses/spec/fixture/package.json rename packages/plugin/fuses/spec/fixture/{app => }/src/main.js (100%) diff --git a/.gitignore b/.gitignore index 4b1ba76cbd..0a7d77dea1 100644 --- a/.gitignore +++ b/.gitignore @@ -24,7 +24,7 @@ packages/**/.swc .webpack packages/api/core/spec/fixture/app-with-scoped-name/out/make packages/plugin/webpack/spec/fixtures/apps/native-modules/package-lock.json -packages/plugin/fuses/spec/fixture/app +packages/plugin/fuses/spec/fixture/out .links reports packages/**/typedoc.json diff --git a/packages/plugin/fuses/spec/FusesPlugin.slow.spec.ts b/packages/plugin/fuses/spec/FusesPlugin.slow.spec.ts index 52dabe5038..8ac310701a 100644 --- a/packages/plugin/fuses/spec/FusesPlugin.slow.spec.ts +++ b/packages/plugin/fuses/spec/FusesPlugin.slow.spec.ts @@ -1,59 +1,43 @@ import fs from 'node:fs'; import path from 'node:path'; -import { PACKAGE_MANAGERS } from '@electron-forge/core-utils'; -import { CrossSpawnOptions, spawn } from '@malept/cross-spawn-promise'; -import { afterAll, beforeAll, describe, expect, it } from 'vitest'; +import { spawn } from '@malept/cross-spawn-promise'; +import { afterAll, describe, expect, it } from 'vitest'; -import { initLink } from '../../../api/core/src/api/init-scripts/init-link'; +import packageAPI from '../../../api/core/src/api/package'; import { getElectronExecutablePath } from '../src/util/getElectronExecutablePath'; describe('FusesPlugin', () => { - const appPath = path.join(__dirname, 'fixture', 'app'); - - const spawnOptions: CrossSpawnOptions = { - cwd: appPath, - shell: true, - }; + const appPath = path.join(__dirname, 'fixture'); const packageJSON = JSON.parse( - fs.readFileSync(path.join(appPath, 'package.json.tmpl'), { + fs.readFileSync(path.join(appPath, 'package.json'), { encoding: 'utf-8', }), ); const { name: appName } = packageJSON; - const outDir = path.join(appPath, 'out', 'fuses-test-app'); - - beforeAll(async () => { - delete process.env.TS_NODE_PROJECT; - await fs.promises.copyFile( - path.join(appPath, 'package.json.tmpl'), - path.join(appPath, 'package.json'), - ); - - // Use initLink to set up dependencies with local forge packages - // This will copy .yarnrc.yml, link local packages, and run install - process.env.LINK_FORGE_DEPENDENCIES_ON_INIT = '1'; - await initLink(PACKAGE_MANAGERS['yarn'], appPath); - delete process.env.LINK_FORGE_DEPENDENCIES_ON_INIT; - }); + const outDir = path.join(appPath, 'out'); afterAll(async () => { - await fs.promises.rm(path.resolve(outDir, '../'), { + await fs.promises.rm(outDir, { recursive: true, force: true, }); }); it('should flip Fuses', async () => { - await spawn('yarn', ['package'], spawnOptions); + await packageAPI({ + dir: appPath, + interactive: false, + }); const electronExecutablePath = getElectronExecutablePath({ appName, basePath: path.join( outDir, + 'fuses-test-app', ...(process.platform === 'darwin' ? [`${appName}.app`, 'Contents'] : []), diff --git a/packages/plugin/fuses/spec/fixture/.yarnrc.yml b/packages/plugin/fuses/spec/fixture/.yarnrc.yml new file mode 100644 index 0000000000..801f57d0b8 --- /dev/null +++ b/packages/plugin/fuses/spec/fixture/.yarnrc.yml @@ -0,0 +1,9 @@ +nodeLinker: node-modules + +npmMinimalAgeGate: 10080 + +npmPreapprovedPackages: + - '@electron/*' + - '@electron-forge/*' + - electron + - node-abi diff --git a/packages/plugin/fuses/spec/fixture/app/package.json b/packages/plugin/fuses/spec/fixture/app/package.json deleted file mode 100644 index 4dd149db47..0000000000 --- a/packages/plugin/fuses/spec/fixture/app/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "fuses-test-app", - "version": "1.0.0", - "main": "./src/main.js", - "scripts": { - "package": "electron-forge package" - }, - "dependencies": { - "@electron/fuses": "^1.6.1", - "fs-extra": "^10.0.0" - }, - "devDependencies": { - "@electron-forge/cli": "6.4.0", - "@electron-forge/plugin-fuses": "6.4.0", - "@electron-forge/shared-types": "6.4.0", - "electron": "35.7.5" - } -} diff --git a/packages/plugin/fuses/spec/fixture/app/package.json.tmpl b/packages/plugin/fuses/spec/fixture/app/package.json.tmpl deleted file mode 100644 index e8821a5ce4..0000000000 --- a/packages/plugin/fuses/spec/fixture/app/package.json.tmpl +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "fuses-test-app", - "version": "1.0.0", - "main": "./src/main.js", - "scripts": { - "package": "electron-forge package" - }, - "dependencies": { - "@electron/fuses": "^1.6.1", - "fs-extra": "^10.0.0" - }, - "devDependencies": { - "@electron-forge/cli": "6.4.0", - "@electron-forge/plugin-fuses": "6.4.0", - "@electron-forge/shared-types": "6.4.0", - "electron": "34.0.0" - } -} diff --git a/packages/plugin/fuses/spec/fixture/app/forge.config.ts b/packages/plugin/fuses/spec/fixture/forge.config.ts similarity index 67% rename from packages/plugin/fuses/spec/fixture/app/forge.config.ts rename to packages/plugin/fuses/spec/fixture/forge.config.ts index 6499572dd7..9637261eb8 100644 --- a/packages/plugin/fuses/spec/fixture/app/forge.config.ts +++ b/packages/plugin/fuses/spec/fixture/forge.config.ts @@ -9,11 +9,21 @@ const forgeConfig: ForgeConfig = { packagerConfig: { afterComplete: [ // makes tests a bit simpler by having a single output directory in every platform/arch - async (packagedAppLocation, _electronVersion, _targetPlatform, _targetArch, done) => { + async ( + packagedAppLocation, + _electronVersion, + _targetPlatform, + _targetArch, + done, + ) => { const parentDir = path.resolve(packagedAppLocation, '..'); - await fsExtra.move(packagedAppLocation, path.join(parentDir, 'fuses-test-app'), { - overwrite: true, - }); + await fsExtra.move( + packagedAppLocation, + path.join(parentDir, 'fuses-test-app'), + { + overwrite: true, + }, + ); done(); }, diff --git a/packages/plugin/fuses/spec/fixture/package.json b/packages/plugin/fuses/spec/fixture/package.json new file mode 100644 index 0000000000..608c616c80 --- /dev/null +++ b/packages/plugin/fuses/spec/fixture/package.json @@ -0,0 +1,15 @@ +{ + "name": "fuses-test-app", + "version": "1.0.0", + "main": "./src/main.js", + "dependencies": { + "@electron/fuses": "^1.6.1", + "fs-extra": "^10.0.0" + }, + "devDependencies": { + "@electron-forge/cli": "portal:../../../../api/cli", + "@electron-forge/plugin-fuses": "portal:../..", + "@electron-forge/shared-types": "portal:../../../../utils/types", + "electron": "39.2.3" + } +} diff --git a/packages/plugin/fuses/spec/fixture/app/src/main.js b/packages/plugin/fuses/spec/fixture/src/main.js similarity index 100% rename from packages/plugin/fuses/spec/fixture/app/src/main.js rename to packages/plugin/fuses/spec/fixture/src/main.js From 2b660d10c7cd49efce3b5b48ec4273d77de87540 Mon Sep 17 00:00:00 2001 From: Erick Zhao Date: Mon, 24 Nov 2025 17:30:15 -0800 Subject: [PATCH 2/3] just import these locally? --- packages/plugin/fuses/spec/fixture/forge.config.ts | 5 +++-- packages/plugin/fuses/spec/fixture/package.json | 3 --- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/plugin/fuses/spec/fixture/forge.config.ts b/packages/plugin/fuses/spec/fixture/forge.config.ts index 9637261eb8..32861a9463 100644 --- a/packages/plugin/fuses/spec/fixture/forge.config.ts +++ b/packages/plugin/fuses/spec/fixture/forge.config.ts @@ -1,10 +1,11 @@ import path from 'path'; import { FuseV1Options, FuseVersion } from '@electron/fuses'; -import { FusesPlugin } from '@electron-forge/plugin-fuses'; -import { ForgeConfig } from '@electron-forge/shared-types'; import fsExtra from 'fs-extra'; +import { ForgeConfig } from '../../../../utils/types/src/index'; +import { FusesPlugin } from '../../src/FusesPlugin'; + const forgeConfig: ForgeConfig = { packagerConfig: { afterComplete: [ diff --git a/packages/plugin/fuses/spec/fixture/package.json b/packages/plugin/fuses/spec/fixture/package.json index 608c616c80..ec11d1bb1b 100644 --- a/packages/plugin/fuses/spec/fixture/package.json +++ b/packages/plugin/fuses/spec/fixture/package.json @@ -7,9 +7,6 @@ "fs-extra": "^10.0.0" }, "devDependencies": { - "@electron-forge/cli": "portal:../../../../api/cli", - "@electron-forge/plugin-fuses": "portal:../..", - "@electron-forge/shared-types": "portal:../../../../utils/types", "electron": "39.2.3" } } From 015b5eaa22780762b59669c203ce24e502aa4bf5 Mon Sep 17 00:00:00 2001 From: Erick Zhao Date: Mon, 24 Nov 2025 17:39:08 -0800 Subject: [PATCH 3/3] add folder --- packages/plugin/fuses/spec/fixture/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/plugin/fuses/spec/fixture/package.json b/packages/plugin/fuses/spec/fixture/package.json index ec11d1bb1b..05695ccba5 100644 --- a/packages/plugin/fuses/spec/fixture/package.json +++ b/packages/plugin/fuses/spec/fixture/package.json @@ -7,6 +7,7 @@ "fs-extra": "^10.0.0" }, "devDependencies": { - "electron": "39.2.3" + "electron": "39.2.3", + "@electron-forge/core": "portal:../../../../api/core" } }