@electron-forge/test-utils 7.11.2 → 8.0.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -9,14 +9,7 @@ export declare function runNPMInstall(dir: string, ...args: string[]): Promise<v
9
9
  export declare function ensureModulesInstalled(dir: string, deps: string[], devDeps: string[]): Promise<void>;
10
10
  export declare function ensureTestDirIsNonexistent(): Promise<string>;
11
11
  export declare function expectLintToPass(dir: string): Promise<void>;
12
- /**
13
- * Helper function to mock CommonJS `require` calls with Vitest.
14
- *
15
- * @see https://github.com/vitest-dev/vitest/discussions/3134
16
- * @param mockedUri - mocked module URI
17
- * @param stub - stub function to assign to mock
18
- */
19
- export declare function mockRequire(mockedUri: string, stub: any): Promise<void>;
12
+ export declare function expectTypecheckToPass(dir: string): Promise<void>;
20
13
  /**
21
14
  * Mutates the `package.json` file in a directory.
22
15
  * Use the return value to later restore the original `package.json` value
@@ -27,4 +20,4 @@ export declare function mockRequire(mockedUri: string, stub: any): Promise<void>
27
20
  * @returns The original `package.json` prior to mutation
28
21
  */
29
22
  export declare function updatePackageJSON(dir: string, callback: (packageJSON: PackageJSON) => Promise<PackageJSON>): Promise<any>;
30
- //# sourceMappingURL=index.d.ts.map
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUc7SUFDbEQsTUFBTSxDQUFDLEVBQUU7UUFDUCxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ2pDLENBQUM7SUFDRixZQUFZLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLGVBQWUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7Q0FDMUMsQ0FBQztBQU1GLHdCQUFzQixhQUFhLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksRUFBRSxNQUFNLEVBQUUsaUJBRWpFO0FBRUQsd0JBQXNCLHNCQUFzQixDQUMxQyxHQUFHLEVBQUUsTUFBTSxFQUNYLElBQUksRUFBRSxNQUFNLEVBQUUsRUFDZCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHZjtBQUlELHdCQUFzQiwwQkFBMEIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBTWxFO0FBRUQsd0JBQXNCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQVVqRTtBQUVELHdCQUFzQixxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FVdEU7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixpQkFBaUIsQ0FDckMsR0FBRyxFQUFFLE1BQU0sRUFDWCxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxLQUFLLE9BQU8sQ0FBQyxXQUFXLENBQUMsZ0JBWTdEIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAClD,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACjC,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C,CAAC;AAMF,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,iBAEjE;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,IAAI,CAAC,CAGf;AAID,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC,CAMlE;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUjE;AAED;;;;;;GAMG;AAEH,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,iBAW7D;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,gBAU7D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAClD,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACjC,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C,CAAC;AAMF,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,iBAEjE;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,IAAI,CAAC,CAGf;AAID,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC,CAMlE;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUjE;AAED,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUtE;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,gBAY7D"}
package/dist/index.js CHANGED
@@ -1,90 +1,48 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.updatePackageJSON = exports.mockRequire = exports.expectLintToPass = exports.ensureTestDirIsNonexistent = exports.ensureModulesInstalled = exports.runNPMInstall = void 0;
30
- const node_os_1 = __importDefault(require("node:os"));
31
- const node_path_1 = __importDefault(require("node:path"));
32
- const cross_spawn_promise_1 = require("@malept/cross-spawn-promise");
33
- const fs_extra_1 = __importDefault(require("fs-extra"));
1
+ import fs from 'node:fs/promises';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ import { ExitError, spawn } from '@malept/cross-spawn-promise';
34
5
  async function runNPM(dir, ...args) {
35
- await (0, cross_spawn_promise_1.spawn)('npm', args, { cwd: dir });
6
+ await spawn('npm', args, { cwd: dir });
36
7
  }
37
- async function runNPMInstall(dir, ...args) {
8
+ export async function runNPMInstall(dir, ...args) {
38
9
  await runNPM(dir, 'install', ...args);
39
10
  }
40
- exports.runNPMInstall = runNPMInstall;
41
- async function ensureModulesInstalled(dir, deps, devDeps) {
11
+ export async function ensureModulesInstalled(dir, deps, devDeps) {
42
12
  await runNPMInstall(dir, ...deps);
43
13
  await runNPMInstall(dir, '--save-dev', ...devDeps);
44
14
  }
45
- exports.ensureModulesInstalled = ensureModulesInstalled;
46
15
  let dirID = Date.now();
47
- async function ensureTestDirIsNonexistent() {
48
- const dir = node_path_1.default.resolve(node_os_1.default.tmpdir(), `electron-forge-test-${dirID}`);
16
+ export async function ensureTestDirIsNonexistent() {
17
+ const dir = path.resolve(os.tmpdir(), `electron-forge-test-${dirID}`);
49
18
  dirID += 1;
50
- await fs_extra_1.default.promises.rm(dir, { recursive: true, force: true });
19
+ await fs.rm(dir, { recursive: true, force: true });
51
20
  return dir;
52
21
  }
53
- exports.ensureTestDirIsNonexistent = ensureTestDirIsNonexistent;
54
- async function expectLintToPass(dir) {
22
+ export async function expectLintToPass(dir) {
55
23
  try {
56
24
  await runNPM(dir, 'run', 'lint');
57
25
  }
58
26
  catch (err) {
59
- if (err instanceof cross_spawn_promise_1.ExitError) {
27
+ if (err instanceof ExitError) {
60
28
  console.error('STDOUT:', err.stdout.toString());
61
29
  console.error('STDERR:', err.stderr.toString());
62
30
  }
63
31
  throw err;
64
32
  }
65
33
  }
66
- exports.expectLintToPass = expectLintToPass;
67
- /**
68
- * Helper function to mock CommonJS `require` calls with Vitest.
69
- *
70
- * @see https://github.com/vitest-dev/vitest/discussions/3134
71
- * @param mockedUri - mocked module URI
72
- * @param stub - stub function to assign to mock
73
- */
74
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
- async function mockRequire(mockedUri, stub) {
76
- const { Module } = await Promise.resolve().then(() => __importStar(require('module')));
77
- //@ts-expect-error undocumented functions
78
- Module._load_original = Module._load;
79
- //@ts-expect-error undocumented functions
80
- Module._load = (uri, parent) => {
81
- if (uri === mockedUri)
82
- return stub;
83
- //@ts-expect-error undocumented functions
84
- return Module._load_original(uri, parent);
85
- };
34
+ export async function expectTypecheckToPass(dir) {
35
+ try {
36
+ await runNPM(dir, 'run', 'typecheck');
37
+ }
38
+ catch (err) {
39
+ if (err instanceof ExitError) {
40
+ console.error('STDOUT:', err.stdout.toString());
41
+ console.error('STDERR:', err.stderr.toString());
42
+ }
43
+ throw err;
44
+ }
86
45
  }
87
- exports.mockRequire = mockRequire;
88
46
  /**
89
47
  * Mutates the `package.json` file in a directory.
90
48
  * Use the return value to later restore the original `package.json` value
@@ -94,11 +52,10 @@ exports.mockRequire = mockRequire;
94
52
  * @param callback - A callback function that returns the value of the new `package.json` to be applied
95
53
  * @returns The original `package.json` prior to mutation
96
54
  */
97
- async function updatePackageJSON(dir, callback) {
98
- const packageJSON = await fs_extra_1.default.readJson(node_path_1.default.resolve(dir, 'package.json'));
55
+ export async function updatePackageJSON(dir, callback) {
56
+ const packageJSON = JSON.parse(await fs.readFile(path.resolve(dir, 'package.json'), 'utf8'));
99
57
  const mutated = await callback(JSON.parse(JSON.stringify(packageJSON)));
100
- await fs_extra_1.default.promises.writeFile(node_path_1.default.resolve(dir, 'package.json'), JSON.stringify(mutated, null, 2), 'utf-8');
58
+ await fs.writeFile(path.resolve(dir, 'package.json'), JSON.stringify(mutated, null, 2), 'utf-8');
101
59
  return packageJSON;
102
60
  }
103
- exports.updatePackageJSON = updatePackageJSON;
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBeUI7QUFDekIsMERBQTZCO0FBRTdCLHFFQUErRDtBQUMvRCx3REFBMEI7QUFVMUIsS0FBSyxVQUFVLE1BQU0sQ0FBQyxHQUFXLEVBQUUsR0FBRyxJQUFjO0lBQ2xELE1BQU0sSUFBQSwyQkFBSyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRU0sS0FBSyxVQUFVLGFBQWEsQ0FBQyxHQUFXLEVBQUUsR0FBRyxJQUFjO0lBQ2hFLE1BQU0sTUFBTSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRkQsc0NBRUM7QUFFTSxLQUFLLFVBQVUsc0JBQXNCLENBQzFDLEdBQVcsRUFDWCxJQUFjLEVBQ2QsT0FBaUI7SUFFakIsTUFBTSxhQUFhLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbEMsTUFBTSxhQUFhLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFQRCx3REFPQztBQUVELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUVoQixLQUFLLFVBQVUsMEJBQTBCO0lBQzlDLE1BQU0sR0FBRyxHQUFHLG1CQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsdUJBQXVCLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdEUsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNYLE1BQU0sa0JBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFNUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBTkQsZ0VBTUM7QUFFTSxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsR0FBVztJQUNoRCxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxHQUFHLFlBQVksK0JBQVMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELE1BQU0sR0FBRyxDQUFDO0lBQ1osQ0FBQztBQUNILENBQUM7QUFWRCw0Q0FVQztBQUVEOzs7Ozs7R0FNRztBQUNILDhEQUE4RDtBQUN2RCxLQUFLLFVBQVUsV0FBVyxDQUFDLFNBQWlCLEVBQUUsSUFBUztJQUM1RCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsd0RBQWEsUUFBUSxHQUFDLENBQUM7SUFFMUMseUNBQXlDO0lBQ3pDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUNyQyx5Q0FBeUM7SUFDekMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUM3QixJQUFJLEdBQUcsS0FBSyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDbkMseUNBQXlDO1FBQ3pDLE9BQU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQVhELGtDQVdDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLEdBQVcsRUFDWCxRQUE0RDtJQUU1RCxNQUFNLFdBQVcsR0FBRyxNQUFNLGtCQUFFLENBQUMsUUFBUSxDQUFDLG1CQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLE1BQU0sT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsTUFBTSxrQkFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQ3pCLG1CQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsRUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUNoQyxPQUFPLENBQ1IsQ0FBQztJQUNGLE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFaRCw4Q0FZQyJ9
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEMsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pCLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUU3QixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBVS9ELEtBQUssVUFBVSxNQUFNLENBQUMsR0FBVyxFQUFFLEdBQUcsSUFBYztJQUNsRCxNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsYUFBYSxDQUFDLEdBQVcsRUFBRSxHQUFHLElBQWM7SUFDaEUsTUFBTSxNQUFNLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLHNCQUFzQixDQUMxQyxHQUFXLEVBQ1gsSUFBYyxFQUNkLE9BQWlCO0lBRWpCLE1BQU0sYUFBYSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sYUFBYSxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBRUQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBRXZCLE1BQU0sQ0FBQyxLQUFLLFVBQVUsMEJBQTBCO0lBQzlDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLHVCQUF1QixLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDWCxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUVuRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLGdCQUFnQixDQUFDLEdBQVc7SUFDaEQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksR0FBRyxZQUFZLFNBQVMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELE1BQU0sR0FBRyxDQUFDO0lBQ1osQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLHFCQUFxQixDQUFDLEdBQVc7SUFDckQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksR0FBRyxZQUFZLFNBQVMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELE1BQU0sR0FBRyxDQUFDO0lBQ1osQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLEdBQVcsRUFDWCxRQUE0RDtJQUU1RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUM1QixNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQzdELENBQUM7SUFDRixNQUFNLE9BQU8sR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLEVBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFDaEMsT0FBTyxDQUNSLENBQUM7SUFDRixPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDIn0=
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@electron-forge/test-utils",
3
- "version": "7.11.2",
3
+ "version": "8.0.0-alpha.10",
4
+ "type": "module",
4
5
  "description": "Helper utilities for the Electron Forge testsuite",
5
6
  "repository": "https://github.com/electron/forge",
6
7
  "author": "Mark Lee",
7
8
  "license": "MIT",
8
- "main": "dist/index.js",
9
+ "exports": "./dist/index.js",
9
10
  "typings": "dist/index.d.ts",
10
11
  "dependencies": {
11
- "@malept/cross-spawn-promise": "^2.0.0",
12
- "fs-extra": "^10.0.0"
12
+ "@malept/cross-spawn-promise": "^2.0.0"
13
13
  },
14
14
  "engines": {
15
- "node": ">= 16.4.0"
15
+ "node": ">= 22.12.0"
16
16
  },
17
17
  "publishConfig": {
18
18
  "access": "public"
@@ -21,5 +21,5 @@
21
21
  "dist",
22
22
  "src"
23
23
  ],
24
- "gitHead": "f2a3ec8aa9c836aff95fcd83ce9c99842f0cda8a"
24
+ "gitHead": "a0421393534b06d1cb60698ceebc4e8061e49a03"
25
25
  }
package/src/index.ts CHANGED
@@ -1,8 +1,8 @@
1
+ import fs from 'node:fs/promises';
1
2
  import os from 'node:os';
2
3
  import path from 'node:path';
3
4
 
4
5
  import { ExitError, spawn } from '@malept/cross-spawn-promise';
5
- import fs from 'fs-extra';
6
6
 
7
7
  export type PackageJSON = Record<string, unknown> & {
8
8
  config?: {
@@ -34,7 +34,7 @@ let dirID = Date.now();
34
34
  export async function ensureTestDirIsNonexistent(): Promise<string> {
35
35
  const dir = path.resolve(os.tmpdir(), `electron-forge-test-${dirID}`);
36
36
  dirID += 1;
37
- await fs.promises.rm(dir, { recursive: true, force: true });
37
+ await fs.rm(dir, { recursive: true, force: true });
38
38
 
39
39
  return dir;
40
40
  }
@@ -51,25 +51,16 @@ export async function expectLintToPass(dir: string): Promise<void> {
51
51
  }
52
52
  }
53
53
 
54
- /**
55
- * Helper function to mock CommonJS `require` calls with Vitest.
56
- *
57
- * @see https://github.com/vitest-dev/vitest/discussions/3134
58
- * @param mockedUri - mocked module URI
59
- * @param stub - stub function to assign to mock
60
- */
61
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
62
- export async function mockRequire(mockedUri: string, stub: any) {
63
- const { Module } = await import('module');
64
-
65
- //@ts-expect-error undocumented functions
66
- Module._load_original = Module._load;
67
- //@ts-expect-error undocumented functions
68
- Module._load = (uri, parent) => {
69
- if (uri === mockedUri) return stub;
70
- //@ts-expect-error undocumented functions
71
- return Module._load_original(uri, parent);
72
- };
54
+ export async function expectTypecheckToPass(dir: string): Promise<void> {
55
+ try {
56
+ await runNPM(dir, 'run', 'typecheck');
57
+ } catch (err) {
58
+ if (err instanceof ExitError) {
59
+ console.error('STDOUT:', err.stdout.toString());
60
+ console.error('STDERR:', err.stderr.toString());
61
+ }
62
+ throw err;
63
+ }
73
64
  }
74
65
 
75
66
  /**
@@ -85,9 +76,11 @@ export async function updatePackageJSON(
85
76
  dir: string,
86
77
  callback: (packageJSON: PackageJSON) => Promise<PackageJSON>,
87
78
  ) {
88
- const packageJSON = await fs.readJson(path.resolve(dir, 'package.json'));
79
+ const packageJSON = JSON.parse(
80
+ await fs.readFile(path.resolve(dir, 'package.json'), 'utf8'),
81
+ );
89
82
  const mutated = await callback(JSON.parse(JSON.stringify(packageJSON)));
90
- await fs.promises.writeFile(
83
+ await fs.writeFile(
91
84
  path.resolve(dir, 'package.json'),
92
85
  JSON.stringify(mutated, null, 2),
93
86
  'utf-8',