From e1591dfcdba353a1b1d7b1a283c565fb88e3f63c Mon Sep 17 00:00:00 2001 From: Sonishi Izuka Date: Wed, 24 May 2023 17:34:38 +0900 Subject: [PATCH] Add a test to get the correct global bin installation path on Windows --- __test__/common.spec.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/__test__/common.spec.js b/__test__/common.spec.js index 612f793..805a297 100644 --- a/__test__/common.spec.js +++ b/__test__/common.spec.js @@ -9,16 +9,16 @@ jest.mock('mkdirp'); describe('common', () => { describe('getInstallationPath()', () => { - let callback, env; + let callback, _process; beforeEach(() => { callback = jest.fn(); - env = { ...process.env }; + _process = { ...global.process, env: { ...process.env } }; }); afterEach(() => { - process.env = env; + global.process = _process; }); it('should get binaries path from `npm bin`', () => { @@ -29,9 +29,21 @@ describe('common', () => { expect(callback).toHaveBeenCalledWith(null, path.sep + path.join('usr', 'local', 'bin')); }); - it('should get binaries path from env', () => { + it('should get binaries path from env on windows platform', () => { + childProcess.exec.mockImplementationOnce((_cmd, cb) => cb(new Error())); + + process.platform = 'win32'; + process.env.npm_config_prefix = String.raw`C:\Users\John Smith\AppData\npm`; + + common.getInstallationPath(callback); + + expect(callback).toHaveBeenCalledWith(null, path.win32.join('C:', 'Users', 'John Smith', 'AppData', 'npm')); + }); + + it('should get binaries path from env on platform different than windows', () => { childProcess.exec.mockImplementationOnce((_cmd, cb) => cb(new Error())); + process.platform = 'linux'; process.env.npm_config_prefix = '/usr/local'; common.getInstallationPath(callback);