From e2f9bec932c5d9950abbf742a23ce4a81b9cc33f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8D=89=E9=9E=8B=E6=B2=A1=E5=8F=B7?= <308487730@qq.com> Date: Mon, 1 Jan 2024 11:47:58 +0800 Subject: [PATCH] fix(plugin-vite): util/package test --- packages/plugin/vite/test/fixture/.gitignore | 4 + .../vite/test/fixture/package/package.json | 7 ++ .../plugin/vite/test/util/package_spec.ts | 78 +++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 packages/plugin/vite/test/fixture/.gitignore create mode 100644 packages/plugin/vite/test/fixture/package/package.json create mode 100644 packages/plugin/vite/test/util/package_spec.ts diff --git a/packages/plugin/vite/test/fixture/.gitignore b/packages/plugin/vite/test/fixture/.gitignore new file mode 100644 index 0000000000..2f0cb5a3b2 --- /dev/null +++ b/packages/plugin/vite/test/fixture/.gitignore @@ -0,0 +1,4 @@ +# lockfile +package-lock.json +pnpm-lock.yaml +yarn.lock diff --git a/packages/plugin/vite/test/fixture/package/package.json b/packages/plugin/vite/test/fixture/package/package.json new file mode 100644 index 0000000000..5186d39673 --- /dev/null +++ b/packages/plugin/vite/test/fixture/package/package.json @@ -0,0 +1,7 @@ +{ + "name": "@electron-forge/plugin-vite-test-util-package", + "version": "0.1.0", + "dependencies": { + "electron-squirrel-startup": "^1.0.0" + } +} diff --git a/packages/plugin/vite/test/util/package_spec.ts b/packages/plugin/vite/test/util/package_spec.ts new file mode 100644 index 0000000000..5ed9d9f3de --- /dev/null +++ b/packages/plugin/vite/test/util/package_spec.ts @@ -0,0 +1,78 @@ +import { exec } from 'node:child_process'; +import fs from 'node:fs'; +import path from 'node:path'; +import { promisify } from 'node:util'; + +import { expect } from 'chai'; + +import { getFlatDependencies, lookupNodeModulesPaths, readPackageJson, resolveDependencies } from '../../src/util/package'; + +const execPromise = promisify(exec); +const packageRoot = path.join(__dirname, '../fixture/package'); +const packageJson = JSON.parse(fs.readFileSync(path.join(packageRoot, 'package.json'), 'utf8')); +const depsTree = [ + { + name: 'electron-squirrel-startup', + path: { + src: path.join(packageRoot, 'node_modules', 'electron-squirrel-startup'), + dest: path.join('node_modules', 'electron-squirrel-startup'), + }, + dependencies: [ + { + name: 'debug', + path: { + src: path.join(packageRoot, 'node_modules', 'debug'), + dest: path.join('node_modules', 'debug'), + }, + dependencies: [ + { + name: 'ms', + path: { + src: path.join(packageRoot, 'node_modules', 'ms'), + dest: path.join('node_modules', 'ms'), + }, + dependencies: [], + }, + ], + }, + ], + }, +]; +const depsFlat = [ + { + src: path.join(packageRoot, 'node_modules', 'electron-squirrel-startup'), + dest: path.join('node_modules', 'electron-squirrel-startup'), + }, + { + src: path.join(packageRoot, 'node_modules', 'debug'), + dest: path.join('node_modules', 'debug'), + }, + { + src: path.join(packageRoot, 'node_modules', 'ms'), + dest: path.join('node_modules', 'ms'), + }, +]; + +describe('package', () => { + before(async () => { + await execPromise('npm install', { cwd: packageRoot }); + }); + + it('package.json is loaded correct', async () => { + const packageJson2 = await readPackageJson(packageRoot); + expect(typeof packageJson2).equal('object'); + expect(packageJson2).deep.equal(packageJson); + }); + + it('dependencies of package.json is resolved correct', async () => { + const depsT = await resolveDependencies(packageRoot); + const depsF = await getFlatDependencies(packageRoot); + expect(depsTree).deep.equal(depsT); + expect(depsFlat).deep.equal(depsF); + }); + + it('node_modules paths is lookup correct', async () => { + const paths = await lookupNodeModulesPaths(packageRoot); + expect(paths.length).gt(0); + }); +});