diff --git a/lib/workers/repository/updates/branch-name.spec.ts b/lib/workers/repository/updates/branch-name.spec.ts index ff816d07f18c6fe1afb0fb18e3e4865b0faecf75..115b60c7b1263cf31e08ba141a809348c8537f11 100644 --- a/lib/workers/repository/updates/branch-name.spec.ts +++ b/lib/workers/repository/updates/branch-name.spec.ts @@ -225,11 +225,11 @@ describe(getName(), () => { }, { upgrade: { branchName: 'renovate/bad-branch-^-name3' }, - expectedBranchName: 'renovate/bad-branch---name3', + expectedBranchName: 'renovate/bad-branch-name3', }, { upgrade: { branchName: 'renovate/bad-branch-name : 4' }, - expectedBranchName: 'renovate/bad-branch-name---4', + expectedBranchName: 'renovate/bad-branch-name-4', }, { upgrade: { branchName: 'renovate/bad-branch-name5/' }, @@ -251,6 +251,14 @@ describe(getName(), () => { upgrade: { branchName: 'renovate/bad-branch-name9.' }, expectedBranchName: 'renovate/bad-branch-name9', }, + { + upgrade: { branchName: 'renovate/bad-branch--name10' }, + expectedBranchName: 'renovate/bad-branch-name10', + }, + { + upgrade: { branchName: 'renovate/bad--branch---name11' }, + expectedBranchName: 'renovate/bad-branch-name11', + }, ]; fixtures.forEach((fixture) => { generateBranchName(fixture.upgrade); diff --git a/lib/workers/repository/updates/branch-name.ts b/lib/workers/repository/updates/branch-name.ts index 78454f101fa26395ca05ce08cef2166d1e611564..e56e2da710fee664638ba40c2b368cd58e563a66 100644 --- a/lib/workers/repository/updates/branch-name.ts +++ b/lib/workers/repository/updates/branch-name.ts @@ -7,6 +7,7 @@ import * as template from '../../../util/template'; const MIN_HASH_LENGTH = 6; +const RE_MULTIPLE_DASH = /--+/g; /** * Clean git branch name * @@ -14,12 +15,14 @@ const MIN_HASH_LENGTH = 6; * - leading dot/leading dot after slash * - trailing dot * - whitespace + * - chained dashes(breaks markdown comments) are replaced by single dash */ function cleanBranchName(branchName: string): string { return cleanGitRef(branchName) .replace(/^\.|\.$/, '') // leading or trailing dot .replace(/\/\./g, '/') // leading dot after slash - .replace(/\s/g, ''); // whitespace + .replace(/\s/g, '') // whitespace + .replace(RE_MULTIPLE_DASH, '-'); // chained dashes } /* eslint-disable no-param-reassign */