From 87fc22a4ce93a6fb637ebc64e898c5bfafad984d Mon Sep 17 00:00:00 2001 From: Yun Lai <ylai@squareup.com> Date: Fri, 5 Aug 2022 19:21:54 +1000 Subject: [PATCH] fix: fix failed hermit binary source tests due to findUp module acts differently in windows (#16985) * fix: fix failed hermit binary source tests due to findUp module acts differently in windows * fix: set localDir in GlobalConfig in getHermitEnvs test * Apply suggestions from code review Co-authored-by: Michael Kriese <michael.kriese@visualon.de> * fix: added two more mockResolvedValueOnce for extra test case and remove mockResolvedValueOnce('') Co-authored-by: Rhys Arkins <rhys@arkins.net> Co-authored-by: Michael Kriese <michael.kriese@visualon.de> --- lib/util/exec/hermit.spec.ts | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/lib/util/exec/hermit.spec.ts b/lib/util/exec/hermit.spec.ts index f5b82c2c4a..62761c2bc5 100644 --- a/lib/util/exec/hermit.spec.ts +++ b/lib/util/exec/hermit.spec.ts @@ -1,10 +1,15 @@ -import tmp, { DirectoryResult } from 'tmp-promise'; +import _findUp from 'find-up'; +import upath from 'upath'; import { mockExecAll } from '../../../test/exec-util'; +import { mockedFunction } from '../../../test/util'; import { GlobalConfig } from '../../config/global'; -import { writeLocalFile } from '../fs'; import { findHermitCwd, getHermitEnvs, isHermit } from './hermit'; import type { RawExecOptions } from './types'; +jest.mock('find-up'); +const findUp = mockedFunction(_findUp); +const localDir = '/tmp/renovate/repository/project-a'; + describe('util/exec/hermit', () => { describe('isHermit', () => { it('should return true when binarySource is hermit', () => { @@ -16,29 +21,21 @@ describe('util/exec/hermit', () => { }); describe('findHermitCwd', () => { - let localDirResult: DirectoryResult; - let localDir: string; - - beforeEach(async () => { - localDirResult = await tmp.dir({ unsafeCleanup: true }); - localDir = localDirResult.path; - + beforeEach(() => { GlobalConfig.set({ localDir }); }); - afterEach(async () => { - await localDirResult?.cleanup(); - }); - it('should find the closest hermit cwd to the given path', async () => { - await writeLocalFile('nested/bin/hermit', 'foo'); - await writeLocalFile('bin/hermit', 'bar'); - + findUp.mockResolvedValueOnce(upath.join(localDir, 'nested/bin/hermit')); const nestedCwd = 'nested/other/directory'; expect(await findHermitCwd(nestedCwd)).toBe(`${localDir}/nested/bin`); + findUp.mockResolvedValueOnce(upath.join(localDir, 'nested/bin/hermit')); expect(await findHermitCwd('nested')).toBe(`${localDir}/nested/bin`); + + findUp.mockResolvedValueOnce(upath.join(localDir, 'bin/hermit')); expect(await findHermitCwd('')).toBe(`${localDir}/bin`); + findUp.mockResolvedValueOnce(upath.join(localDir, 'bin/hermit')); expect(await findHermitCwd('other/directory')).toBe(`${localDir}/bin`); }); @@ -50,8 +47,12 @@ describe('util/exec/hermit', () => { }); describe('getHermitEnvs', () => { + beforeEach(() => { + GlobalConfig.set({ localDir }); + }); + it('should return hermit environment variables when hermit env returns successfully', async () => { - await writeLocalFile('bin/hermit', 'bar'); + findUp.mockResolvedValueOnce(upath.join(localDir, 'bin/hermit')); mockExecAll({ stdout: `GOBIN=/usr/src/app/repository-a/.hermit/go/bin PATH=/usr/src/app/repository-a/bin -- GitLab