diff --git a/__tests__/summary.test.ts b/__tests__/summary.test.ts index 8704190..110ba0f 100644 --- a/__tests__/summary.test.ts +++ b/__tests__/summary.test.ts @@ -1,5 +1,5 @@ import {expect, jest, test} from '@jest/globals' -import {Changes, ConfigurationOptions, Scorecard} from '../src/schemas' +import {Change, Changes, ConfigurationOptions, Scorecard} from '../src/schemas' import * as summary from '../src/summary' import * as core from '@actions/core' import {createTestChange} from './fixtures/create-test-change' @@ -109,6 +109,38 @@ test('prints headline as h1', () => { expect(text).toContain('

Dependency Review

') }) +test('returns minimal summary in case the core.summary is too large for a PR comment', () => { + let changes: Changes = [ + createTestChange({name: 'lodash', version: '1.2.3'}), + createTestChange({name: 'colors', version: '2.3.4'}), + createTestChange({name: '@foo/bar', version: '*'}), + ] + + let minSummary: string = summary.addSummaryToSummary( + changes, + emptyInvalidLicenseChanges, + emptyChanges, + scorecard, + defaultConfig + ) + + // side effect DR report into core.summary as happens in main.ts + summary.addScannedDependencies(changes) + const text = core.summary.stringify() + + expect(text).toContain('

Dependency Review

') + expect(minSummary).toContain('# Dependency Review') + + expect(text).toContain('lodash') + expect(text).toContain('colors') + expect(text).toContain('@foo/bar') + expect(minSummary).not.toContain('lodash') + expect(minSummary).not.toContain('colors') + expect(minSummary).not.toContain('@foo/bar') + + expect(text.length).toBeGreaterThan(minSummary.length) +}) + test('only includes "No vulnerabilities or license issues found"-message if both are configured and nothing was found', () => { summary.addSummaryToSummary( emptyChanges, diff --git a/src/summary.ts b/src/summary.ts index 02e3d26..f9545bc 100644 --- a/src/summary.ts +++ b/src/summary.ts @@ -10,9 +10,9 @@ const icons = { warning: '⚠️' } -// generates the initial DR summmary and applies to the Action's core.summary -// returns a string array of all the formatted values in the event we need -// to replace them in the PR comment due to length restrictions +// generates the DR report summmary and caches it to the Action's core.summary. +// returns the DR summary string, ready to be posted as a PR comment if the +// final DR report is too large export function addSummaryToSummary( vulnerableChanges: Changes, invalidLicenseChanges: InvalidLicenseChanges,