From c4f4934701263d6b07536083a2cbff35bfb8d3c0 Mon Sep 17 00:00:00 2001 From: Adam Setch Date: Wed, 27 Nov 2024 03:54:58 -0500 Subject: [PATCH] fix(bitbucket): source link root path (#32689) Signed-off-by: Adam Setch --- .../repository/update/pr/body/index.spec.ts | 20 ++++++++++++++++++- .../repository/update/pr/body/index.ts | 18 +++++++++++++++-- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/lib/workers/repository/update/pr/body/index.spec.ts b/lib/workers/repository/update/pr/body/index.spec.ts index eb5149a2685a1f..0308e4d8c26562 100644 --- a/lib/workers/repository/update/pr/body/index.spec.ts +++ b/lib/workers/repository/update/pr/body/index.spec.ts @@ -89,12 +89,21 @@ describe('workers/repository/update/pr/body/index', () => { homepage: 'https://example.com', }; + const upgradeBitbucket = { + manager: 'some-manager', + branchName: 'some-branch', + sourceUrl: 'https://bitbucket.org/foo/bar', + sourceDirectory: '/baz', + changelogUrl: 'https://bitbucket.org/foo/bar/src/main/CHANGELOG.md', + homepage: 'https://example.com', + }; + getPrBody( { manager: 'some-manager', baseBranch: 'base', branchName: 'some-branch', - upgrades: [upgrade, upgrade1], + upgrades: [upgrade, upgrade1, upgradeBitbucket], }, { debugData: { @@ -128,6 +137,15 @@ describe('workers/repository/update/pr/body/index', () => { homepage: 'https://example.com', sourceUrl: 'https://github.com/foo/bar', }); + expect(upgradeBitbucket).toMatchObject({ + branchName: 'some-branch', + depNameLinked: + '[undefined](https://example.com) ([source](https://bitbucket.org/foo/bar/src/HEAD/baz), [changelog](https://bitbucket.org/foo/bar/src/main/CHANGELOG.md))', + references: + '[homepage](https://example.com), [source](https://bitbucket.org/foo/bar/src/HEAD/baz), [changelog](https://bitbucket.org/foo/bar/src/main/CHANGELOG.md)', + homepage: 'https://example.com', + sourceUrl: 'https://bitbucket.org/foo/bar', + }); }); it('uses dependencyUrl as primary link', () => { diff --git a/lib/workers/repository/update/pr/body/index.ts b/lib/workers/repository/update/pr/body/index.ts index 1c1e5d8d1f9e88..984a3ff83b9b48 100644 --- a/lib/workers/repository/update/pr/body/index.ts +++ b/lib/workers/repository/update/pr/body/index.ts @@ -1,6 +1,7 @@ import type { RenovateConfig } from '../../../../../config/types'; import type { PrDebugData } from '../../../../../modules/platform'; import { platform } from '../../../../../modules/platform'; +import { detectPlatform } from '../../../../../util/common'; import { regEx } from '../../../../../util/regex'; import { toBase64 } from '../../../../../util/string'; import * as template from '../../../../../util/template'; @@ -31,12 +32,20 @@ function massageUpdateMetadata(config: BranchConfig): void { depNameLinked = `[${depNameLinked}](${primaryLink})`; } + let sourceRootPath = 'tree'; + if (sourceUrl) { + const sourcePlatform = detectPlatform(sourceUrl); + if (sourcePlatform === 'bitbucket') { + sourceRootPath = 'src'; + } + } + const otherLinks = []; if (sourceUrl && (!!sourceDirectory || homepage)) { otherLinks.push( `[source](${ sourceDirectory - ? joinUrlParts(sourceUrl, 'tree/HEAD/', sourceDirectory) + ? joinUrlParts(sourceUrl, sourceRootPath, 'HEAD', sourceDirectory) : sourceUrl })`, ); @@ -55,7 +64,12 @@ function massageUpdateMetadata(config: BranchConfig): void { if (sourceUrl) { let fullUrl = sourceUrl; if (sourceDirectory) { - fullUrl = joinUrlParts(sourceUrl, 'tree/HEAD/', sourceDirectory); + fullUrl = joinUrlParts( + sourceUrl, + sourceRootPath, + 'HEAD', + sourceDirectory, + ); } references.push(`[source](${fullUrl})`); }