Skip to content

Commit 002be85

Browse files
committed
Document current license SPDX behaviour
As a step towards resolving #6966, we should document how SPDX SBOM generation works with a single string license or license expression.
1 parent e91d5c6 commit 002be85

File tree

2 files changed

+106
-0
lines changed

2 files changed

+106
-0
lines changed

tap-snapshots/test/lib/utils/sbom-spdx.js.test.cjs

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,3 +504,93 @@ exports[`test/lib/utils/sbom-spdx.js TAP single node - with integrity > must mat
504504
]
505505
}
506506
`
507+
508+
exports[`test/lib/utils/sbom-spdx.js TAP single node - with license expression > must match snapshot 1`] = `
509+
{
510+
"spdxVersion": "SPDX-2.3",
511+
"dataLicense": "CC0-1.0",
512+
"SPDXID": "SPDXRef-DOCUMENT",
513+
"name": "[email protected]",
514+
"documentNamespace": "docns",
515+
"creationInfo": {
516+
"created": "2020-01-01T00:00:00.000Z",
517+
"creators": [
518+
"Tool: npm/cli-10.0.0 "
519+
]
520+
},
521+
"documentDescribes": [
522+
"SPDXRef-Package-root-1.0.0"
523+
],
524+
"packages": [
525+
{
526+
"name": "root",
527+
"SPDXID": "SPDXRef-Package-root-1.0.0",
528+
"versionInfo": "1.0.0",
529+
"packageFileName": "",
530+
"downloadLocation": "NOASSERTION",
531+
"filesAnalyzed": false,
532+
"homepage": "NOASSERTION",
533+
"licenseDeclared": "(MIT OR Apache-2.0)",
534+
"externalRefs": [
535+
{
536+
"referenceCategory": "PACKAGE-MANAGER",
537+
"referenceType": "purl",
538+
"referenceLocator": "pkg:npm/[email protected]"
539+
}
540+
]
541+
}
542+
],
543+
"relationships": [
544+
{
545+
"spdxElementId": "SPDXRef-DOCUMENT",
546+
"relatedSpdxElement": "SPDXRef-Package-root-1.0.0",
547+
"relationshipType": "DESCRIBES"
548+
}
549+
]
550+
}
551+
`
552+
553+
exports[`test/lib/utils/sbom-spdx.js TAP single node - with single license > must match snapshot 1`] = `
554+
{
555+
"spdxVersion": "SPDX-2.3",
556+
"dataLicense": "CC0-1.0",
557+
"SPDXID": "SPDXRef-DOCUMENT",
558+
"name": "[email protected]",
559+
"documentNamespace": "docns",
560+
"creationInfo": {
561+
"created": "2020-01-01T00:00:00.000Z",
562+
"creators": [
563+
"Tool: npm/cli-10.0.0 "
564+
]
565+
},
566+
"documentDescribes": [
567+
"SPDXRef-Package-root-1.0.0"
568+
],
569+
"packages": [
570+
{
571+
"name": "root",
572+
"SPDXID": "SPDXRef-Package-root-1.0.0",
573+
"versionInfo": "1.0.0",
574+
"packageFileName": "",
575+
"downloadLocation": "NOASSERTION",
576+
"filesAnalyzed": false,
577+
"homepage": "NOASSERTION",
578+
"licenseDeclared": "ISC",
579+
"externalRefs": [
580+
{
581+
"referenceCategory": "PACKAGE-MANAGER",
582+
"referenceType": "purl",
583+
"referenceLocator": "pkg:npm/[email protected]"
584+
}
585+
]
586+
}
587+
],
588+
"relationships": [
589+
{
590+
"spdxElementId": "SPDXRef-DOCUMENT",
591+
"relatedSpdxElement": "SPDXRef-Package-root-1.0.0",
592+
"relationshipType": "DESCRIBES"
593+
}
594+
]
595+
}
596+
`

test/lib/utils/sbom-spdx.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,22 @@ t.test('single node - application package type', t => {
109109
t.end()
110110
})
111111

112+
t.test('single node - with single license', t => {
113+
const pkg = { ...rootPkg, license: 'ISC' }
114+
const node = { ...root, package: pkg }
115+
const res = spdxOutput({ npm, nodes: [node] })
116+
t.matchSnapshot(JSON.stringify(res))
117+
t.end()
118+
})
119+
120+
t.test('single node - with license expression', t => {
121+
const pkg = { ...rootPkg, license: '(MIT OR Apache-2.0)' }
122+
const node = { ...root, package: pkg }
123+
const res = spdxOutput({ npm, nodes: [node] })
124+
t.matchSnapshot(JSON.stringify(res))
125+
t.end()
126+
})
127+
112128
t.test('single node - with description', t => {
113129
const pkg = { ...rootPkg, description: 'Package description' }
114130
const node = { ...root, package: pkg }

0 commit comments

Comments
 (0)