diff --git a/lib/manager/git-submodules/extract.spec.ts b/lib/manager/git-submodules/extract.spec.ts index 3304fad5ec19f4f6794ed359248f76c35651914a..4cbd77f9c0bc8ae2958fcc5e66929ded3fe6818c 100644 --- a/lib/manager/git-submodules/extract.spec.ts +++ b/lib/manager/git-submodules/extract.spec.ts @@ -1,29 +1,35 @@ import _simpleGit from 'simple-git/promise'; import extractPackageFile from './extract'; +import { PackageFile } from '../common'; jest.mock('simple-git/promise'); -const simpleGit: any = _simpleGit; -const Git = jest.requireActual('simple-git/promise'); +const simpleGit: jest.Mock<Partial<_simpleGit.SimpleGit>> = _simpleGit as never; +const Git: typeof _simpleGit = jest.requireActual('simple-git/promise'); const localDir = `${__dirname}/__fixtures__`; describe('lib/manager/gitsubmodules/extract', () => { beforeAll(() => { - simpleGit.mockReturnValue({ - subModule() { - return Promise.resolve('4b825dc642cb6eb9a060e54bf8d69288fbee4904'); - }, - raw(options: string[]) { - if (options.includes('remote.origin.url')) { - return 'https://github.com/renovatebot/renovate.git'; - } - return Git().raw(options); - }, + simpleGit.mockImplementation((basePath?: string) => { + const git = Git(basePath); + return { + subModule() { + return Promise.resolve('4b825dc642cb6eb9a060e54bf8d69288fbee4904'); + }, + raw(options: string | string[]): Promise<string> { + if (options.includes('remote.origin.url')) { + return Promise.resolve( + 'https://github.com/renovatebot/renovate.git' + ); + } + return git.raw(options); + }, + }; }); }); describe('extractPackageFile()', () => { it('extracts submodules', async () => { - let res; + let res: PackageFile; expect( await extractPackageFile('', '.gitmodules.1', { localDir }) ).toBeNull(); diff --git a/lib/manager/git-submodules/extract.ts b/lib/manager/git-submodules/extract.ts index 1753278c46d488202ac10497c77a3a52290b904d..b08ce2b591fab39170b752a26a531f9d1d0d713a 100644 --- a/lib/manager/git-submodules/extract.ts +++ b/lib/manager/git-submodules/extract.ts @@ -23,8 +23,8 @@ async function getUrl( '--get', `submodule.${submoduleName}.url`, ]) - ).trim(); - if (!path.startsWith('../')) { + )?.trim(); + if (!path?.startsWith('../')) { return path; } const remoteUrl = ( @@ -59,7 +59,7 @@ async function getModules( gitModulesPath, '--get-regexp', 'path', - ])) || '' + ])) ?? /* istanbul ignore next: should never happen */ '' ) .trim() .split(/\n/) @@ -76,7 +76,7 @@ async function getModules( } export default async function extractPackageFile( - content: string, + _content: string, fileName: string, config: ManagerConfig ): Promise<PackageFile | null> {