@electron-forge/test-utils 7.6.0 → 7.7.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
@@ -2,6 +2,12 @@ export declare function runNPMInstall(dir: string, ...args: string[]): Promise<v
2
2
  export declare function ensureModulesInstalled(dir: string, deps: string[], devDeps: string[]): Promise<void>;
3
3
  export declare function ensureTestDirIsNonexistent(): Promise<string>;
4
4
  export declare function expectLintToPass(dir: string): Promise<void>;
5
- export declare function expectProjectPathExists(dir: string, subPath: string, pathType: string, exists?: boolean): Promise<void>;
6
- export declare function expectProjectPathNotExists(dir: string, subPath: string, pathType: string): Promise<void>;
5
+ /**
6
+ * Helper function to mock CommonJS `require` calls with Vitest.
7
+ *
8
+ * @see https://github.com/vitest-dev/vitest/discussions/3134
9
+ * @param mockedUri - mocked module URI
10
+ * @param stub - stub function to assign to mock
11
+ */
12
+ export declare function mockRequire(mockedUri: string, stub: any): Promise<void>;
7
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,iBAEjE;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1G;AAID,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC,CAMlE;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUjE;AAED,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1H;AAED,wBAAsB,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9G"}
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,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1G;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"}
package/dist/index.js CHANGED
@@ -1,14 +1,36 @@
1
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
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
5
28
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.expectProjectPathNotExists = exports.expectProjectPathExists = exports.expectLintToPass = exports.ensureTestDirIsNonexistent = exports.ensureModulesInstalled = exports.runNPMInstall = void 0;
7
- const os_1 = __importDefault(require("os"));
8
- const path_1 = __importDefault(require("path"));
29
+ exports.mockRequire = exports.expectLintToPass = exports.ensureTestDirIsNonexistent = exports.ensureModulesInstalled = exports.runNPMInstall = void 0;
30
+ const node_fs_1 = __importDefault(require("node:fs"));
31
+ const node_os_1 = __importDefault(require("node:os"));
32
+ const node_path_1 = __importDefault(require("node:path"));
9
33
  const cross_spawn_promise_1 = require("@malept/cross-spawn-promise");
10
- const chai_1 = require("chai");
11
- const fs_extra_1 = __importDefault(require("fs-extra"));
12
34
  async function runNPM(dir, ...args) {
13
35
  await (0, cross_spawn_promise_1.spawn)('npm', args, { cwd: dir });
14
36
  }
@@ -23,9 +45,9 @@ async function ensureModulesInstalled(dir, deps, devDeps) {
23
45
  exports.ensureModulesInstalled = ensureModulesInstalled;
24
46
  let dirID = Date.now();
25
47
  async function ensureTestDirIsNonexistent() {
26
- const dir = path_1.default.resolve(os_1.default.tmpdir(), `electron-forge-test-${dirID}`);
48
+ const dir = node_path_1.default.resolve(node_os_1.default.tmpdir(), `electron-forge-test-${dirID}`);
27
49
  dirID += 1;
28
- await fs_extra_1.default.remove(dir);
50
+ await node_fs_1.default.promises.rm(dir, { recursive: true, force: true });
29
51
  return dir;
30
52
  }
31
53
  exports.ensureTestDirIsNonexistent = ensureTestDirIsNonexistent;
@@ -42,12 +64,25 @@ async function expectLintToPass(dir) {
42
64
  }
43
65
  }
44
66
  exports.expectLintToPass = expectLintToPass;
45
- async function expectProjectPathExists(dir, subPath, pathType, exists = true) {
46
- (0, chai_1.expect)(await fs_extra_1.default.pathExists(path_1.default.resolve(dir, subPath)), `the ${subPath} ${pathType} should exist`).to.equal(exists);
47
- }
48
- exports.expectProjectPathExists = expectProjectPathExists;
49
- async function expectProjectPathNotExists(dir, subPath, pathType) {
50
- await expectProjectPathExists(dir, subPath, pathType, false);
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
+ };
51
86
  }
52
- exports.expectProjectPathNotExists = expectProjectPathNotExists;
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUV4QixxRUFBK0Q7QUFDL0QsK0JBQThCO0FBQzlCLHdEQUEwQjtBQUUxQixLQUFLLFVBQVUsTUFBTSxDQUFDLEdBQVcsRUFBRSxHQUFHLElBQWM7SUFDbEQsTUFBTSxJQUFBLDJCQUFLLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFTSxLQUFLLFVBQVUsYUFBYSxDQUFDLEdBQVcsRUFBRSxHQUFHLElBQWM7SUFDaEUsTUFBTSxNQUFNLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFGRCxzQ0FFQztBQUVNLEtBQUssVUFBVSxzQkFBc0IsQ0FBQyxHQUFXLEVBQUUsSUFBYyxFQUFFLE9BQWlCO0lBQ3pGLE1BQU0sYUFBYSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sYUFBYSxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBSEQsd0RBR0M7QUFFRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFFaEIsS0FBSyxVQUFVLDBCQUEwQjtJQUM5QyxNQUFNLEdBQUcsR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLFlBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSx1QkFBdUIsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN0RSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ1gsTUFBTSxrQkFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVyQixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFORCxnRUFNQztBQUVNLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxHQUFXO0lBQ2hELElBQUk7UUFDRixNQUFNLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ2xDO0lBQUMsT0FBTyxHQUFHLEVBQUU7UUFDWixJQUFJLEdBQUcsWUFBWSwrQkFBUyxFQUFFO1lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDakQ7UUFDRCxNQUFNLEdBQUcsQ0FBQztLQUNYO0FBQ0gsQ0FBQztBQVZELDRDQVVDO0FBRU0sS0FBSyxVQUFVLHVCQUF1QixDQUFDLEdBQVcsRUFBRSxPQUFlLEVBQUUsUUFBZ0IsRUFBRSxNQUFNLEdBQUcsSUFBSTtJQUN6RyxJQUFBLGFBQU0sRUFBQyxNQUFNLGtCQUFFLENBQUMsVUFBVSxDQUFDLGNBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsT0FBTyxPQUFPLElBQUksUUFBUSxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RILENBQUM7QUFGRCwwREFFQztBQUVNLEtBQUssVUFBVSwwQkFBMEIsQ0FBQyxHQUFXLEVBQUUsT0FBZSxFQUFFLFFBQWdCO0lBQzdGLE1BQU0sdUJBQXVCLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUZELGdFQUVDIn0=
87
+ exports.mockRequire = mockRequire;
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBeUI7QUFDekIsc0RBQXlCO0FBQ3pCLDBEQUE2QjtBQUU3QixxRUFBK0Q7QUFFL0QsS0FBSyxVQUFVLE1BQU0sQ0FBQyxHQUFXLEVBQUUsR0FBRyxJQUFjO0lBQ2xELE1BQU0sSUFBQSwyQkFBSyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRU0sS0FBSyxVQUFVLGFBQWEsQ0FBQyxHQUFXLEVBQUUsR0FBRyxJQUFjO0lBQ2hFLE1BQU0sTUFBTSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRkQsc0NBRUM7QUFFTSxLQUFLLFVBQVUsc0JBQXNCLENBQUMsR0FBVyxFQUFFLElBQWMsRUFBRSxPQUFpQjtJQUN6RixNQUFNLGFBQWEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNsQyxNQUFNLGFBQWEsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUhELHdEQUdDO0FBRUQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBRWhCLEtBQUssVUFBVSwwQkFBMEI7SUFDOUMsTUFBTSxHQUFHLEdBQUcsbUJBQUksQ0FBQyxPQUFPLENBQUMsaUJBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSx1QkFBdUIsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN0RSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ1gsTUFBTSxpQkFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUU1RCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFORCxnRUFNQztBQUVNLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxHQUFXO0lBQ2hELElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLEdBQUcsWUFBWSwrQkFBUyxFQUFFLENBQUM7WUFDN0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsTUFBTSxHQUFHLENBQUM7SUFDWixDQUFDO0FBQ0gsQ0FBQztBQVZELDRDQVVDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsOERBQThEO0FBQ3ZELEtBQUssVUFBVSxXQUFXLENBQUMsU0FBaUIsRUFBRSxJQUFTO0lBQzVELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyx3REFBYSxRQUFRLEdBQUMsQ0FBQztJQUUxQyx5Q0FBeUM7SUFDekMsTUFBTSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ3JDLHlDQUF5QztJQUN6QyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQzdCLElBQUksR0FBRyxLQUFLLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNuQyx5Q0FBeUM7UUFDekMsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUM7QUFDSixDQUFDO0FBWEQsa0NBV0MifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@electron-forge/test-utils",
3
- "version": "7.6.0",
3
+ "version": "7.7.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,9 +8,7 @@
8
8
  "main": "dist/index.js",
9
9
  "typings": "dist/index.d.ts",
10
10
  "dependencies": {
11
- "@malept/cross-spawn-promise": "^2.0.0",
12
- "chai": "^4.3.3",
13
- "fs-extra": "^10.0.0"
11
+ "@malept/cross-spawn-promise": "^2.0.0"
14
12
  },
15
13
  "engines": {
16
14
  "node": ">= 16.4.0"
@@ -22,5 +20,5 @@
22
20
  "dist",
23
21
  "src"
24
22
  ],
25
- "gitHead": "37a66f2a42e2ea74a30d168a32aff69c90cc20b9"
23
+ "gitHead": "6a88c47b5916a39ee9f993d98d420c6c857de54c"
26
24
  }
package/src/index.ts CHANGED
@@ -1,9 +1,8 @@
1
- import os from 'os';
2
- import path from 'path';
1
+ import fs from 'node:fs';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
3
4
 
4
5
  import { ExitError, spawn } from '@malept/cross-spawn-promise';
5
- import { expect } from 'chai';
6
- import fs from 'fs-extra';
7
6
 
8
7
  async function runNPM(dir: string, ...args: string[]) {
9
8
  await spawn('npm', args, { cwd: dir });
@@ -23,7 +22,7 @@ let dirID = Date.now();
23
22
  export async function ensureTestDirIsNonexistent(): Promise<string> {
24
23
  const dir = path.resolve(os.tmpdir(), `electron-forge-test-${dirID}`);
25
24
  dirID += 1;
26
- await fs.remove(dir);
25
+ await fs.promises.rm(dir, { recursive: true, force: true });
27
26
 
28
27
  return dir;
29
28
  }
@@ -40,10 +39,23 @@ export async function expectLintToPass(dir: string): Promise<void> {
40
39
  }
41
40
  }
42
41
 
43
- export async function expectProjectPathExists(dir: string, subPath: string, pathType: string, exists = true): Promise<void> {
44
- expect(await fs.pathExists(path.resolve(dir, subPath)), `the ${subPath} ${pathType} should exist`).to.equal(exists);
45
- }
46
-
47
- export async function expectProjectPathNotExists(dir: string, subPath: string, pathType: string): Promise<void> {
48
- await expectProjectPathExists(dir, subPath, pathType, false);
42
+ /**
43
+ * Helper function to mock CommonJS `require` calls with Vitest.
44
+ *
45
+ * @see https://github.com/vitest-dev/vitest/discussions/3134
46
+ * @param mockedUri - mocked module URI
47
+ * @param stub - stub function to assign to mock
48
+ */
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ export async function mockRequire(mockedUri: string, stub: any) {
51
+ const { Module } = await import('module');
52
+
53
+ //@ts-expect-error undocumented functions
54
+ Module._load_original = Module._load;
55
+ //@ts-expect-error undocumented functions
56
+ Module._load = (uri, parent) => {
57
+ if (uri === mockedUri) return stub;
58
+ //@ts-expect-error undocumented functions
59
+ return Module._load_original(uri, parent);
60
+ };
49
61
  }