Adds conditional license summary
This commit is contained in:
@@ -212,3 +212,76 @@ test('addChangeVulnerabilitiesToSummary() - does not print severity statment if
|
|||||||
const text = core.summary.stringify()
|
const text = core.summary.stringify()
|
||||||
expect(text).not.toContain('Only included vulnerabilities')
|
expect(text).not.toContain('Only included vulnerabilities')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('addLicensesToSummary() - does not include entire section if no license issues found', () => {
|
||||||
|
summary.addLicensesToSummary(emptyInvalidLicenseChanges, defaultConfig)
|
||||||
|
const text = core.summary.stringify()
|
||||||
|
expect(text).toEqual('')
|
||||||
|
})
|
||||||
|
|
||||||
|
test('addLicensesToSummary() - includes all license issues', () => {
|
||||||
|
const licenseIssues = {
|
||||||
|
forbidden: [createTestChange()],
|
||||||
|
unresolved: [createTestChange(), createTestChange()],
|
||||||
|
unlicensed: [createTestChange(), createTestChange(), createTestChange()]
|
||||||
|
}
|
||||||
|
|
||||||
|
summary.addLicensesToSummary(licenseIssues, defaultConfig)
|
||||||
|
|
||||||
|
const text = core.summary.stringify()
|
||||||
|
expect(text).toContain('<h3>License Issues</h3>')
|
||||||
|
expect(text).toContain('<h4>Incompatible Licenses</h4>')
|
||||||
|
expect(text).toContain('<h4>Unknown Licenses</h4>')
|
||||||
|
expect(text).toContain('<h4>Invalid SPDX License Definitions</h4>')
|
||||||
|
})
|
||||||
|
|
||||||
|
test('addLicensesToSummary() - does not include specific license type sub-section if nothing is found', () => {
|
||||||
|
const licenseIssues = {
|
||||||
|
forbidden: [],
|
||||||
|
unlicensed: [],
|
||||||
|
unresolved: [createTestChange()]
|
||||||
|
}
|
||||||
|
|
||||||
|
summary.addLicensesToSummary(licenseIssues, defaultConfig)
|
||||||
|
|
||||||
|
const text = core.summary.stringify()
|
||||||
|
expect(text).not.toContain('<h4>Incompatible Licenses</h4>')
|
||||||
|
expect(text).not.toContain('<h4>Unknown Licenses</h4>')
|
||||||
|
expect(text).toContain('<h4>Invalid SPDX License Definitions</h4>')
|
||||||
|
})
|
||||||
|
|
||||||
|
test('addLicensesToSummary() - includes list of configured allowed licenses', () => {
|
||||||
|
const licenseIssues = {
|
||||||
|
forbidden: [createTestChange()],
|
||||||
|
unresolved: [],
|
||||||
|
unlicensed: []
|
||||||
|
}
|
||||||
|
|
||||||
|
const config: ConfigurationOptions = {
|
||||||
|
...defaultConfig,
|
||||||
|
allow_licenses: ['MIT', 'Apache-2.0']
|
||||||
|
}
|
||||||
|
|
||||||
|
summary.addLicensesToSummary(licenseIssues, config)
|
||||||
|
|
||||||
|
const text = core.summary.stringify()
|
||||||
|
expect(text).toContain('<strong>Allowed Licenses</strong>: MIT, Apache-2.0')
|
||||||
|
})
|
||||||
|
|
||||||
|
test('addLicensesToSummary() - includes configured denied license', () => {
|
||||||
|
const licenseIssues = {
|
||||||
|
forbidden: [createTestChange()],
|
||||||
|
unresolved: [],
|
||||||
|
unlicensed: []
|
||||||
|
}
|
||||||
|
|
||||||
|
const config: ConfigurationOptions = {
|
||||||
|
...defaultConfig,
|
||||||
|
deny_licenses: ['MIT']
|
||||||
|
}
|
||||||
|
|
||||||
|
summary.addLicensesToSummary(licenseIssues, config)
|
||||||
|
|
||||||
|
const text = core.summary.stringify()
|
||||||
|
expect(text).toContain('<strong>Denied Licenses</strong>: MIT')
|
||||||
|
})
|
||||||
|
|||||||
+21
-44
@@ -10,28 +10,6 @@ const icons = {
|
|||||||
warning: '⚠️'
|
warning: '⚠️'
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createSummary(
|
|
||||||
addedChanges: Changes,
|
|
||||||
invalidLicenseChanges: InvalidLicenseChanges,
|
|
||||||
config: ConfigurationOptions
|
|
||||||
): void {
|
|
||||||
addSummaryToSummary(
|
|
||||||
config.vulnerability_check ? addedChanges : [],
|
|
||||||
config.license_check
|
|
||||||
? invalidLicenseChanges
|
|
||||||
: {unresolved: [], forbidden: [], unlicensed: []},
|
|
||||||
config
|
|
||||||
)
|
|
||||||
|
|
||||||
if (config.vulnerability_check && addedChanges.length > 0) {
|
|
||||||
addChangeVulnerabilitiesToSummary(addedChanges, config.fail_on_severity)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config.license_check && invalidLicenseChanges.unresolved.length > 0) {
|
|
||||||
addLicensesToSummary(invalidLicenseChanges, config)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function addSummaryToSummary(
|
export function addSummaryToSummary(
|
||||||
addedPackages: Changes,
|
addedPackages: Changes,
|
||||||
invalidLicenseChanges: InvalidLicenseChanges,
|
invalidLicenseChanges: InvalidLicenseChanges,
|
||||||
@@ -144,9 +122,13 @@ export function addChangeVulnerabilitiesToSummary(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function addLicensesToSummary(
|
export function addLicensesToSummary(
|
||||||
invalidLicenseChanges: Record<string, Changes>,
|
invalidLicenseChanges: InvalidLicenseChanges,
|
||||||
config: ConfigurationOptions
|
config: ConfigurationOptions
|
||||||
): void {
|
): void {
|
||||||
|
if (countLicenseIssues(invalidLicenseChanges) === 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
core.summary.addHeading('License Issues', 3)
|
core.summary.addHeading('License Issues', 3)
|
||||||
|
|
||||||
if (config.allow_licenses && config.allow_licenses.length > 0) {
|
if (config.allow_licenses && config.allow_licenses.length > 0) {
|
||||||
@@ -160,11 +142,6 @@ export function addLicensesToSummary(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Object.values(invalidLicenseChanges).every(item => item.length === 0)) {
|
|
||||||
core.summary.addQuote('No license violations detected.')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
core.debug(
|
core.debug(
|
||||||
`found ${invalidLicenseChanges.unlicensed.length} unknown licenses`
|
`found ${invalidLicenseChanges.unlicensed.length} unknown licenses`
|
||||||
)
|
)
|
||||||
@@ -184,27 +161,27 @@ export function addLicensesToSummary(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
function printLicenseViolation(heading: string, changes: Changes): void {
|
function printLicenseViolation(heading: string, changes: Changes): void {
|
||||||
core.summary.addHeading(heading, 5).addSeparator()
|
if (changes.length === 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if (changes.length > 0) {
|
core.summary.addHeading(heading, 4).addSeparator()
|
||||||
const rows: SummaryTableRow[] = []
|
|
||||||
const manifests = getManifestsSet(changes)
|
|
||||||
|
|
||||||
for (const manifest of manifests) {
|
const rows: SummaryTableRow[] = []
|
||||||
core.summary.addHeading(`<em>${manifest}</em>`, 4)
|
const manifests = getManifestsSet(changes)
|
||||||
|
|
||||||
for (const change of changes.filter(pkg => pkg.manifest === manifest)) {
|
for (const manifest of manifests) {
|
||||||
rows.push([
|
core.summary.addHeading(`<em>${manifest}</em>`, 4)
|
||||||
renderUrl(change.source_repository_url, change.name),
|
|
||||||
change.version,
|
|
||||||
formatLicense(change.license)
|
|
||||||
])
|
|
||||||
}
|
|
||||||
|
|
||||||
core.summary.addTable([['Package', 'Version', 'License'], ...rows])
|
for (const change of changes.filter(pkg => pkg.manifest === manifest)) {
|
||||||
|
rows.push([
|
||||||
|
renderUrl(change.source_repository_url, change.name),
|
||||||
|
change.version,
|
||||||
|
formatLicense(change.license)
|
||||||
|
])
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
core.summary.addQuote(`No ${heading.toLowerCase()} detected.`)
|
core.summary.addTable([['Package', 'Version', 'License'], ...rows])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user