@electron-forge/test-utils 7.10.2 → 7.11.0

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
@@ -1,3 +1,10 @@
1
+ export type PackageJSON = Record<string, unknown> & {
2
+ config?: {
3
+ forge?: Record<string, unknown>;
4
+ };
5
+ dependencies?: Record<string, string>;
6
+ devDependencies?: Record<string, string>;
7
+ };
1
8
  export declare function runNPMInstall(dir: string, ...args: string[]): Promise<void>;
2
9
  export declare function ensureModulesInstalled(dir: string, deps: string[], devDeps: string[]): Promise<void>;
3
10
  export declare function ensureTestDirIsNonexistent(): Promise<string>;
@@ -10,4 +17,14 @@ export declare function expectLintToPass(dir: string): Promise<void>;
10
17
  * @param stub - stub function to assign to mock
11
18
  */
12
19
  export declare function mockRequire(mockedUri: string, stub: any): Promise<void>;
20
+ /**
21
+ * Mutates the `package.json` file in a directory.
22
+ * Use the return value to later restore the original `package.json` value
23
+ * in a subsequent call of this function.
24
+ *
25
+ * @param dir - The target directory containing the `package.json` file
26
+ * @param callback - A callback function that returns the value of the new `package.json` to be applied
27
+ * @returns The original `package.json` prior to mutation
28
+ */
29
+ export declare function updatePackageJSON(dir: string, callback: (packageJSON: PackageJSON) => Promise<PackageJSON>): Promise<any>;
13
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,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"}
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"}
package/dist/index.js CHANGED
@@ -26,11 +26,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.mockRequire = exports.expectLintToPass = exports.ensureTestDirIsNonexistent = exports.ensureModulesInstalled = exports.runNPMInstall = void 0;
30
- const node_fs_1 = __importDefault(require("node:fs"));
29
+ exports.updatePackageJSON = exports.mockRequire = exports.expectLintToPass = exports.ensureTestDirIsNonexistent = exports.ensureModulesInstalled = exports.runNPMInstall = void 0;
31
30
  const node_os_1 = __importDefault(require("node:os"));
32
31
  const node_path_1 = __importDefault(require("node:path"));
33
32
  const cross_spawn_promise_1 = require("@malept/cross-spawn-promise");
33
+ const fs_extra_1 = __importDefault(require("fs-extra"));
34
34
  async function runNPM(dir, ...args) {
35
35
  await (0, cross_spawn_promise_1.spawn)('npm', args, { cwd: dir });
36
36
  }
@@ -47,7 +47,7 @@ let dirID = Date.now();
47
47
  async function ensureTestDirIsNonexistent() {
48
48
  const dir = node_path_1.default.resolve(node_os_1.default.tmpdir(), `electron-forge-test-${dirID}`);
49
49
  dirID += 1;
50
- await node_fs_1.default.promises.rm(dir, { recursive: true, force: true });
50
+ await fs_extra_1.default.promises.rm(dir, { recursive: true, force: true });
51
51
  return dir;
52
52
  }
53
53
  exports.ensureTestDirIsNonexistent = ensureTestDirIsNonexistent;
@@ -85,4 +85,20 @@ async function mockRequire(mockedUri, stub) {
85
85
  };
86
86
  }
87
87
  exports.mockRequire = mockRequire;
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBeUI7QUFDekIsc0RBQXlCO0FBQ3pCLDBEQUE2QjtBQUU3QixxRUFBK0Q7QUFFL0QsS0FBSyxVQUFVLE1BQU0sQ0FBQyxHQUFXLEVBQUUsR0FBRyxJQUFjO0lBQ2xELE1BQU0sSUFBQSwyQkFBSyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRU0sS0FBSyxVQUFVLGFBQWEsQ0FBQyxHQUFXLEVBQUUsR0FBRyxJQUFjO0lBQ2hFLE1BQU0sTUFBTSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRkQsc0NBRUM7QUFFTSxLQUFLLFVBQVUsc0JBQXNCLENBQzFDLEdBQVcsRUFDWCxJQUFjLEVBQ2QsT0FBaUI7SUFFakIsTUFBTSxhQUFhLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbEMsTUFBTSxhQUFhLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFQRCx3REFPQztBQUVELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUVoQixLQUFLLFVBQVUsMEJBQTBCO0lBQzlDLE1BQU0sR0FBRyxHQUFHLG1CQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsdUJBQXVCLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdEUsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNYLE1BQU0saUJBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFNUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBTkQsZ0VBTUM7QUFFTSxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsR0FBVztJQUNoRCxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxHQUFHLFlBQVksK0JBQVMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELE1BQU0sR0FBRyxDQUFDO0lBQ1osQ0FBQztBQUNILENBQUM7QUFWRCw0Q0FVQztBQUVEOzs7Ozs7R0FNRztBQUNILDhEQUE4RDtBQUN2RCxLQUFLLFVBQVUsV0FBVyxDQUFDLFNBQWlCLEVBQUUsSUFBUztJQUM1RCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsd0RBQWEsUUFBUSxHQUFDLENBQUM7SUFFMUMseUNBQXlDO0lBQ3pDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUNyQyx5Q0FBeUM7SUFDekMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUM3QixJQUFJLEdBQUcsS0FBSyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDbkMseUNBQXlDO1FBQ3pDLE9BQU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQVhELGtDQVdDIn0=
88
+ /**
89
+ * Mutates the `package.json` file in a directory.
90
+ * Use the return value to later restore the original `package.json` value
91
+ * in a subsequent call of this function.
92
+ *
93
+ * @param dir - The target directory containing the `package.json` file
94
+ * @param callback - A callback function that returns the value of the new `package.json` to be applied
95
+ * @returns The original `package.json` prior to mutation
96
+ */
97
+ async function updatePackageJSON(dir, callback) {
98
+ const packageJSON = await fs_extra_1.default.readJson(node_path_1.default.resolve(dir, 'package.json'));
99
+ 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');
101
+ return packageJSON;
102
+ }
103
+ exports.updatePackageJSON = updatePackageJSON;
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBeUI7QUFDekIsMERBQTZCO0FBRTdCLHFFQUErRDtBQUMvRCx3REFBMEI7QUFVMUIsS0FBSyxVQUFVLE1BQU0sQ0FBQyxHQUFXLEVBQUUsR0FBRyxJQUFjO0lBQ2xELE1BQU0sSUFBQSwyQkFBSyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRU0sS0FBSyxVQUFVLGFBQWEsQ0FBQyxHQUFXLEVBQUUsR0FBRyxJQUFjO0lBQ2hFLE1BQU0sTUFBTSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRkQsc0NBRUM7QUFFTSxLQUFLLFVBQVUsc0JBQXNCLENBQzFDLEdBQVcsRUFDWCxJQUFjLEVBQ2QsT0FBaUI7SUFFakIsTUFBTSxhQUFhLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbEMsTUFBTSxhQUFhLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFQRCx3REFPQztBQUVELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUVoQixLQUFLLFVBQVUsMEJBQTBCO0lBQzlDLE1BQU0sR0FBRyxHQUFHLG1CQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsdUJBQXVCLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdEUsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNYLE1BQU0sa0JBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFNUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBTkQsZ0VBTUM7QUFFTSxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsR0FBVztJQUNoRCxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxHQUFHLFlBQVksK0JBQVMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELE1BQU0sR0FBRyxDQUFDO0lBQ1osQ0FBQztBQUNILENBQUM7QUFWRCw0Q0FVQztBQUVEOzs7Ozs7R0FNRztBQUNILDhEQUE4RDtBQUN2RCxLQUFLLFVBQVUsV0FBVyxDQUFDLFNBQWlCLEVBQUUsSUFBUztJQUM1RCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsd0RBQWEsUUFBUSxHQUFDLENBQUM7SUFFMUMseUNBQXlDO0lBQ3pDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUNyQyx5Q0FBeUM7SUFDekMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUM3QixJQUFJLEdBQUcsS0FBSyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDbkMseUNBQXlDO1FBQ3pDLE9BQU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQVhELGtDQVdDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLEdBQVcsRUFDWCxRQUE0RDtJQUU1RCxNQUFNLFdBQVcsR0FBRyxNQUFNLGtCQUFFLENBQUMsUUFBUSxDQUFDLG1CQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLE1BQU0sT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsTUFBTSxrQkFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQ3pCLG1CQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsRUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUNoQyxPQUFPLENBQ1IsQ0FBQztJQUNGLE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFaRCw4Q0FZQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@electron-forge/test-utils",
3
- "version": "7.10.2",
3
+ "version": "7.11.0",
4
4
  "description": "Helper utilities for the Electron Forge testsuite",
5
5
  "repository": "https://github.com/electron/forge",
6
6
  "author": "Mark Lee",
@@ -8,7 +8,8 @@
8
8
  "main": "dist/index.js",
9
9
  "typings": "dist/index.d.ts",
10
10
  "dependencies": {
11
- "@malept/cross-spawn-promise": "^2.0.0"
11
+ "@malept/cross-spawn-promise": "^2.0.0",
12
+ "fs-extra": "^10.0.0"
12
13
  },
13
14
  "engines": {
14
15
  "node": ">= 16.4.0"
@@ -20,5 +21,5 @@
20
21
  "dist",
21
22
  "src"
22
23
  ],
23
- "gitHead": "af12ba0c7b0a43c272ada44c73cc377ee768f4fe"
24
+ "gitHead": "55ddb0b5d9eba8e6e15c43315b5c21aa5ed11077"
24
25
  }
package/src/index.ts CHANGED
@@ -1,8 +1,16 @@
1
- import fs from 'node:fs';
2
1
  import os from 'node:os';
3
2
  import path from 'node:path';
4
3
 
5
4
  import { ExitError, spawn } from '@malept/cross-spawn-promise';
5
+ import fs from 'fs-extra';
6
+
7
+ export type PackageJSON = Record<string, unknown> & {
8
+ config?: {
9
+ forge?: Record<string, unknown>;
10
+ };
11
+ dependencies?: Record<string, string>;
12
+ devDependencies?: Record<string, string>;
13
+ };
6
14
 
7
15
  async function runNPM(dir: string, ...args: string[]) {
8
16
  await spawn('npm', args, { cwd: dir });
@@ -63,3 +71,26 @@ export async function mockRequire(mockedUri: string, stub: any) {
63
71
  return Module._load_original(uri, parent);
64
72
  };
65
73
  }
74
+
75
+ /**
76
+ * Mutates the `package.json` file in a directory.
77
+ * Use the return value to later restore the original `package.json` value
78
+ * in a subsequent call of this function.
79
+ *
80
+ * @param dir - The target directory containing the `package.json` file
81
+ * @param callback - A callback function that returns the value of the new `package.json` to be applied
82
+ * @returns The original `package.json` prior to mutation
83
+ */
84
+ export async function updatePackageJSON(
85
+ dir: string,
86
+ callback: (packageJSON: PackageJSON) => Promise<PackageJSON>,
87
+ ) {
88
+ const packageJSON = await fs.readJson(path.resolve(dir, 'package.json'));
89
+ const mutated = await callback(JSON.parse(JSON.stringify(packageJSON)));
90
+ await fs.promises.writeFile(
91
+ path.resolve(dir, 'package.json'),
92
+ JSON.stringify(mutated, null, 2),
93
+ 'utf-8',
94
+ );
95
+ return packageJSON;
96
+ }