From 11c3d38154e2db6f28edb5747fbb105e5c1914cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20M=C3=B6sl?= <christian.moesl@live.at> Date: Thu, 5 Aug 2021 15:09:20 +0200 Subject: [PATCH] fix(cargo): use lockupName to specify updated package in cmd (#11048) --- .../__snapshots__/artifacts.spec.ts.snap | 23 +++++++++++++++++++ lib/manager/cargo/artifacts.spec.ts | 22 ++++++++++++++++++ lib/manager/cargo/artifacts.ts | 2 +- 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/lib/manager/cargo/__snapshots__/artifacts.spec.ts.snap b/lib/manager/cargo/__snapshots__/artifacts.spec.ts.snap index 466774fff1..a5b226ee83 100644 --- a/lib/manager/cargo/__snapshots__/artifacts.spec.ts.snap +++ b/lib/manager/cargo/__snapshots__/artifacts.spec.ts.snap @@ -137,3 +137,26 @@ Array [ }, ] `; + +exports[`.updateArtifacts() updates Cargo.lock based on the lookupName, when given 1`] = ` +Array [ + Object { + "cmd": "cargo update --manifest-path Cargo.toml --package dep1", + "options": Object { + "cwd": "/tmp/github/some/repo", + "encoding": "utf-8", + "env": Object { + "HOME": "/home/user", + "HTTPS_PROXY": "https://example.com", + "HTTP_PROXY": "http://example.com", + "LANG": "en_US.UTF-8", + "LC_ALL": "en_US", + "NO_PROXY": "localhost", + "PATH": "/tmp/path", + }, + "maxBuffer": 10485760, + "timeout": 900000, + }, + }, +] +`; diff --git a/lib/manager/cargo/artifacts.spec.ts b/lib/manager/cargo/artifacts.spec.ts index c65ee47d8e..1e480556c0 100644 --- a/lib/manager/cargo/artifacts.spec.ts +++ b/lib/manager/cargo/artifacts.spec.ts @@ -107,6 +107,28 @@ describe('.updateArtifacts()', () => { expect(execSnapshots).toMatchSnapshot(); }); + it('updates Cargo.lock based on the lookupName, when given', async () => { + fs.stat.mockResolvedValueOnce({ name: 'Cargo.lock' } as any); + git.getFile.mockResolvedValueOnce('Old Cargo.lock'); + const execSnapshots = mockExecAll(exec); + fs.readFile.mockResolvedValueOnce('New Cargo.lock' as any); + const updatedDeps = [ + { + depName: 'renamedDep1', + lookupName: 'dep1', + }, + ]; + expect( + await cargo.updateArtifacts({ + packageFileName: 'Cargo.toml', + updatedDeps, + newPackageFileContent: '{}', + config, + }) + ).not.toBeNull(); + expect(execSnapshots).toMatchSnapshot(); + }); + it('returns updated workspace Cargo.lock', async () => { fs.stat.mockRejectedValueOnce(new Error('crates/one/Cargo.lock not found')); fs.stat.mockRejectedValueOnce(new Error('crates/Cargo.lock not found')); diff --git a/lib/manager/cargo/artifacts.ts b/lib/manager/cargo/artifacts.ts index 351bdb3de4..02a3562dc7 100644 --- a/lib/manager/cargo/artifacts.ts +++ b/lib/manager/cargo/artifacts.ts @@ -86,7 +86,7 @@ export async function updateArtifacts({ const dep = updatedDeps[i]; // Update dependency `${dep}` in Cargo.lock file corresponding to Cargo.toml file located // at ${localPackageFileName} path - await cargoUpdate(packageFileName, dep.depName); + await cargoUpdate(packageFileName, dep.lookupName ?? dep.depName); } if (isLockFileMaintenance) { await cargoUpdate(packageFileName); -- GitLab