diff --git a/lib/manager/git-submodules/update.spec.ts b/lib/manager/git-submodules/update.spec.ts index ad45dab18a7ee2ebbb7470b344bdaeb88f5a3c14..e07bb92f785f36092c95ce4ab5c4235e63159f72 100644 --- a/lib/manager/git-submodules/update.spec.ts +++ b/lib/manager/git-submodules/update.spec.ts @@ -1,5 +1,6 @@ import _simpleGit from 'simple-git'; import { dir } from 'tmp-promise'; +import { Upgrade } from '../common'; import updateDependency from './update'; @@ -8,28 +9,35 @@ const simpleGit: any = _simpleGit; describe('manager/git-submodules/update', () => { describe('updateDependency', () => { + let upgrade: Upgrade; + beforeAll(async () => { + const tmpDir = await dir(); + upgrade = { localDir: tmpDir.path, depName: 'renovate' }; + }); it('returns null on error', async () => { simpleGit.mockReturnValue({ - raw() { + submoduleUpdate() { throw new Error(); }, }); const update = await updateDependency({ fileContent: '', - upgrade: {}, + upgrade, }); expect(update).toBeNull(); }); it('returns content on update', async () => { - const tmpDir = await dir(); simpleGit.mockReturnValue({ - raw() { + submoduleUpdate() { + return Promise.resolve(); + }, + checkout() { return Promise.resolve(); }, }); const update = await updateDependency({ fileContent: '', - upgrade: { localDir: tmpDir.path }, + upgrade, }); expect(update).toEqual(''); }); diff --git a/lib/manager/git-submodules/update.ts b/lib/manager/git-submodules/update.ts index 50ba37201283ee7f7ce2c7479bff445b9c13fcd2..58a4d1209a918897fad9ef03cccbe32fbf2084cc 100644 --- a/lib/manager/git-submodules/update.ts +++ b/lib/manager/git-submodules/update.ts @@ -1,4 +1,5 @@ import Git from 'simple-git'; +import upath from 'upath'; import { UpdateDependencyConfig } from '../common'; @@ -7,15 +8,11 @@ export default async function updateDependency({ upgrade, }: UpdateDependencyConfig): Promise<string | null> { const git = Git(upgrade.localDir); + const submoduleGit = Git(upath.join(upgrade.localDir, upgrade.depName)); try { - await git.raw([ - 'submodule', - 'update', - '--init', - '--remote', - upgrade.depName, - ]); + await git.submoduleUpdate(['--init', upgrade.depName]); + await submoduleGit.checkout([upgrade.newVersion]); return fileContent; } catch (err) { return null;