Skip to content

Commit

Permalink
fix(workers/repository): Pass proper lockFiles in lockFileMaintenance (
Browse files Browse the repository at this point in the history
…#27319)

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
Co-authored-by: Rhys Arkins <rhys@arkins.net>
  • Loading branch information
3 people committed Feb 27, 2024
1 parent 752d252 commit 3f315fb
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 1 deletion.
37 changes: 37 additions & 0 deletions lib/workers/repository/update/branch/get-updated.spec.ts
Expand Up @@ -8,6 +8,7 @@ import * as _helmv3 from '../../../../modules/manager/helmv3';
import * as _npm from '../../../../modules/manager/npm';
import * as _pep621 from '../../../../modules/manager/pep621';
import * as _poetry from '../../../../modules/manager/poetry';
import type { PackageFile } from '../../../../modules/manager/types';
import type { BranchConfig, BranchUpgradeConfig } from '../../../types';
import * as _autoReplace from './auto-replace';
import { getUpdatedPackageFiles } from './get-updated';
Expand Down Expand Up @@ -204,6 +205,42 @@ describe('workers/repository/update/branch/get-updated', () => {
});
});

it('for lockFileMaintenance passes proper lockFiles', async () => {
config.upgrades.push({
manager: 'composer',
updateType: 'lockFileMaintenance',
packageFile: 'composer.json',
branchName: 'some-branch',
} satisfies BranchUpgradeConfig);
config.lockFiles = ['different.lock'];
config.packageFiles = {
composer: [
{
packageFile: 'composer.json',
lockFiles: ['composer.lock'],
deps: [],
},
] satisfies PackageFile[],
};
composer.updateArtifacts.mockResolvedValueOnce([
{
file: {
type: 'addition',
path: 'composer.json',
contents: 'some contents',
},
},
]);
await getUpdatedPackageFiles(config);
expect(composer.updateArtifacts).toHaveBeenCalledWith(

Check failure on line 235 in lib/workers/repository/update/branch/get-updated.spec.ts

View workflow job for this annotation

GitHub Actions / test (11/16)

workers/repository/update/branch/get-updated › getUpdatedPackageFiles() › for lockFileMaintenance passes proper lockFiles

expect(jest.fn()).toHaveBeenCalledWith(...expected) Expected: ObjectContaining {"config": ObjectContaining {"lockFiles": ["composer.lock"]}} Received: {"config": {"baseBranch": "base-branch", "branchName": "renovate/pin", "lockFiles": ["different.lock"], "manager": "some-manager", "packageFiles": {"composer": [{"deps": [], "lockFiles": ["composer.lock"], "packageFile": "composer.json"}]}, "upgrades": [{"branchName": "some-branch", "manager": "composer", "packageFile": "composer.json", "updateType": "lockFileMaintenance"}]}, "newPackageFileContent": undefined, "packageFileName": "composer.json", "updatedDeps": []} Number of calls: 1 at Object.<anonymous> (lib/workers/repository/update/branch/get-updated.spec.ts:235:40)

Check failure on line 235 in lib/workers/repository/update/branch/get-updated.spec.ts

View workflow job for this annotation

GitHub Actions / test-windows (6/8)

workers/repository/update/branch/get-updated › getUpdatedPackageFiles() › for lockFileMaintenance passes proper lockFiles

expect(jest.fn()).toHaveBeenCalledWith(...expected) Expected: ObjectContaining {"config": ObjectContaining {"lockFiles": ["composer.lock"]}} Received: {"config": {"baseBranch": "base-branch", "branchName": "renovate/pin", "lockFiles": ["different.lock"], "manager": "some-manager", "packageFiles": {"composer": [{"deps": [], "lockFiles": ["composer.lock"], "packageFile": "composer.json"}]}, "upgrades": [{"branchName": "some-branch", "manager": "composer", "packageFile": "composer.json", "updateType": "lockFileMaintenance"}]}, "newPackageFileContent": undefined, "packageFileName": "composer.json", "updatedDeps": []} Number of calls: 1 at Object.<anonymous> (lib/workers/repository/update/branch/get-updated.spec.ts:235:40)

Check failure on line 235 in lib/workers/repository/update/branch/get-updated.spec.ts

View workflow job for this annotation

GitHub Actions / test-macos (3/4)

workers/repository/update/branch/get-updated › getUpdatedPackageFiles() › for lockFileMaintenance passes proper lockFiles

expect(jest.fn()).toHaveBeenCalledWith(...expected) Expected: ObjectContaining {"config": ObjectContaining {"lockFiles": ["composer.lock"]}} Received: {"config": {"baseBranch": "base-branch", "branchName": "renovate/pin", "lockFiles": ["different.lock"], "manager": "some-manager", "packageFiles": {"composer": [{"deps": [], "lockFiles": ["composer.lock"], "packageFile": "composer.json"}]}, "upgrades": [{"branchName": "some-branch", "manager": "composer", "packageFile": "composer.json", "updateType": "lockFileMaintenance"}]}, "newPackageFileContent": undefined, "packageFileName": "composer.json", "updatedDeps": []} Number of calls: 1 at Object.<anonymous> (lib/workers/repository/update/branch/get-updated.spec.ts:235:40)

Check failure on line 235 in lib/workers/repository/update/branch/get-updated.spec.ts

View workflow job for this annotation

GitHub Actions / test (11/16)

workers/repository/update/branch/get-updated › getUpdatedPackageFiles() › for lockFileMaintenance passes proper lockFiles

expect(jest.fn()).toHaveBeenCalledWith(...expected) Expected: ObjectContaining {"config": ObjectContaining {"lockFiles": ["composer.lock"]}} Received: {"config": {"baseBranch": "base-branch", "branchName": "renovate/pin", "lockFiles": ["different.lock"], "manager": "some-manager", "packageFiles": {"composer": [{"deps": [], "lockFiles": ["composer.lock"], "packageFile": "composer.json"}]}, "upgrades": [{"branchName": "some-branch", "manager": "composer", "packageFile": "composer.json", "updateType": "lockFileMaintenance"}]}, "newPackageFileContent": undefined, "packageFileName": "composer.json", "updatedDeps": []} Number of calls: 1 at Object.<anonymous> (lib/workers/repository/update/branch/get-updated.spec.ts:235:40)

Check failure on line 235 in lib/workers/repository/update/branch/get-updated.spec.ts

View workflow job for this annotation

GitHub Actions / test-windows (6/8)

workers/repository/update/branch/get-updated › getUpdatedPackageFiles() › for lockFileMaintenance passes proper lockFiles

expect(jest.fn()).toHaveBeenCalledWith(...expected) Expected: ObjectContaining {"config": ObjectContaining {"lockFiles": ["composer.lock"]}} Received: {"config": {"baseBranch": "base-branch", "branchName": "renovate/pin", "lockFiles": ["different.lock"], "manager": "some-manager", "packageFiles": {"composer": [{"deps": [], "lockFiles": ["composer.lock"], "packageFile": "composer.json"}]}, "upgrades": [{"branchName": "some-branch", "manager": "composer", "packageFile": "composer.json", "updateType": "lockFileMaintenance"}]}, "newPackageFileContent": undefined, "packageFileName": "composer.json", "updatedDeps": []} Number of calls: 1 at Object.<anonymous> (lib/workers/repository/update/branch/get-updated.spec.ts:235:40)

Check failure on line 235 in lib/workers/repository/update/branch/get-updated.spec.ts

View workflow job for this annotation

GitHub Actions / test-macos (3/4)

workers/repository/update/branch/get-updated › getUpdatedPackageFiles() › for lockFileMaintenance passes proper lockFiles

expect(jest.fn()).toHaveBeenCalledWith(...expected) Expected: ObjectContaining {"config": ObjectContaining {"lockFiles": ["composer.lock"]}} Received: {"config": {"baseBranch": "base-branch", "branchName": "renovate/pin", "lockFiles": ["different.lock"], "manager": "some-manager", "packageFiles": {"composer": [{"deps": [], "lockFiles": ["composer.lock"], "packageFile": "composer.json"}]}, "upgrades": [{"branchName": "some-branch", "manager": "composer", "packageFile": "composer.json", "updateType": "lockFileMaintenance"}]}, "newPackageFileContent": undefined, "packageFileName": "composer.json", "updatedDeps": []} Number of calls: 1 at Object.<anonymous> (lib/workers/repository/update/branch/get-updated.spec.ts:235:40)
expect.objectContaining({
config: expect.objectContaining({
lockFiles: ['composer.lock'],
}),
}),
);
});

it('handles isRemediation success', async () => {
config.upgrades.push({
manager: 'npm',
Expand Down
27 changes: 26 additions & 1 deletion lib/workers/repository/update/branch/get-updated.ts
Expand Up @@ -6,6 +6,7 @@ import { get } from '../../../../modules/manager';
import type {
ArtifactError,
PackageDependency,
PackageFile,
UpdateArtifact,
UpdateArtifactsResult,
} from '../../../../modules/manager/types';
Expand Down Expand Up @@ -342,7 +343,11 @@ export async function getUpdatedPackageFiles(
packageFileName,
updatedDeps: [],
newPackageFileContent: contents!,
config,
config: patchConfigForArtifactsUpdate(
config,
manager,
packageFileName,
),
});
processUpdateArtifactResults(
results,
Expand All @@ -361,6 +366,26 @@ export async function getUpdatedPackageFiles(
};
}

// workaround, see #27319
function patchConfigForArtifactsUpdate(
config: BranchConfig,
manager: string,
packageFileName: string,
): BranchConfig {
const updatedConfig = { ...config };
if (is.nonEmptyArray(updatedConfig.packageFiles?.[manager])) {
const managerPackageFiles: PackageFile[] =
updatedConfig.packageFiles?.[manager];
const packageFile = managerPackageFiles.find(
(p) => p.packageFile === packageFileName,
);
if (packageFile) {
updatedConfig.lockFiles ??= packageFile.lockFiles;
}
}
return updatedConfig;
}

async function managerUpdateArtifacts(
manager: string,
updateArtifact: UpdateArtifact,
Expand Down

0 comments on commit 3f315fb

Please sign in to comment.