diff --git a/lib/workers/repository/dependency-dashboard.spec.ts b/lib/workers/repository/dependency-dashboard.spec.ts index 8fb40454cde2b9504f4c0d793303d9bb7f239e6f..2deacf4f168860be48cd6631bd35635597196133 100644 --- a/lib/workers/repository/dependency-dashboard.spec.ts +++ b/lib/workers/repository/dependency-dashboard.spec.ts @@ -10,23 +10,54 @@ import { } from '../../../test/util'; import { GlobalConfig } from '../../config/global'; import { PlatformId } from '../../constants'; +import type { + PackageDependency, + PackageFile, +} from '../../modules/manager/types'; import type { Platform } from '../../modules/platform'; +import { massageMarkdown } from '../../modules/platform/github'; import { BranchConfig, BranchResult, BranchUpgradeConfig } from '../types'; import * as dependencyDashboard from './dependency-dashboard'; import { PackageFiles } from './package-files'; type PrUpgrade = BranchUpgradeConfig; +const massageMdSpy = jest.spyOn(platform, 'massageMarkdown'); let config: RenovateConfig; beforeEach(() => { jest.clearAllMocks(); + massageMdSpy.mockImplementation(massageMarkdown); config = getConfig(); config.platform = PlatformId.Github; config.errors = []; config.warnings = []; }); +function genRandString(length: number): string { + let result = ''; + const chars = 'abcdefghijklmnopqrstuvwxyz'; + const charsLen = chars.length; + for (let i = 0; i < length; i++) { + result += chars.charAt(Math.floor(Math.random() * charsLen)); + } + return result; +} + +function genRandPackageFile( + depsNum: number, + depNameLen: number +): Record<string, PackageFile[]> { + const deps: PackageDependency[] = []; + for (let i = 0; i < depsNum; i++) { + deps.push({ + depName: genRandString(depNameLen), + currentVersion: '1.0.0', + }); + } + return { npm: [{ packageFile: 'package.json', deps }] }; +} + async function dryRun( branches: BranchConfig[], platform: jest.Mocked<Platform>, @@ -666,6 +697,21 @@ describe('workers/repository/dependency-dashboard', () => { // same with dry run await dryRun(branches, platform); }); + + it('truncates the body of a really big repo', async () => { + const branches: BranchConfig[] = []; + const truncatedLength = 60000; + const packageFilesBigRepo = genRandPackageFile(100, 700); + PackageFiles.add('main', packageFilesBigRepo); + await dependencyDashboard.ensureDependencyDashboard(config, branches); + expect(platform.ensureIssue).toHaveBeenCalledTimes(1); + expect(platform.ensureIssue.mock.calls[0][0].body).toHaveLength( + truncatedLength + ); + + // same with dry run + await dryRun(branches, platform); + }); }); }); }); diff --git a/lib/workers/repository/dependency-dashboard.ts b/lib/workers/repository/dependency-dashboard.ts index 7289c6b79ec61c712b0190d4cfaa653cec7ecfca..6aea032c04c99c47cdc3d9389c91fbf2ab61c08b 100644 --- a/lib/workers/repository/dependency-dashboard.ts +++ b/lib/workers/repository/dependency-dashboard.ts @@ -358,7 +358,7 @@ export async function ensureDependencyDashboard( await platform.ensureIssue({ title: config.dependencyDashboardTitle!, reuseTitle, - body: issueBody, + body: platform.massageMarkdown(issueBody), labels: config.dependencyDashboardLabels, confidential: config.confidential, });