@@ -23,23 +23,29 @@ import io.kotest.core.spec.style.WordSpec
2323import io.kotest.matchers.shouldBe
2424
2525import org.ossreviewtoolkit.model.CuratedPackage
26+ import org.ossreviewtoolkit.model.Identifier
2627import org.ossreviewtoolkit.model.LicenseSource
28+ import org.ossreviewtoolkit.model.OrtResult
2729import org.ossreviewtoolkit.model.Package
2830import org.ossreviewtoolkit.model.licenses.ResolvedLicense
2931import org.ossreviewtoolkit.model.licenses.ResolvedOriginalExpression
32+ import org.ossreviewtoolkit.utils.spdx.SpdxConstants
33+ import org.ossreviewtoolkit.utils.spdx.SpdxExpression.Strictness
3034import org.ossreviewtoolkit.utils.spdx.SpdxLicenseIdExpression
3135import org.ossreviewtoolkit.utils.spdx.SpdxSingleLicenseExpression
36+ import org.ossreviewtoolkit.utils.spdx.toSpdx
3237
3338class PackageRuleTest : WordSpec () {
34- private val ruleSet = ruleSet(ortResult)
39+ private fun createPackageRule (pkg : Package ): PackageRule {
40+ val ruleSet = ruleSet(ortResult.addPackage(pkg))
3541
36- private fun createPackageRule (pkg : Package ) =
37- PackageRule (
42+ return PackageRule (
3843 ruleSet = ruleSet,
3944 name = " test" ,
4045 pkg = CuratedPackage (pkg),
4146 resolvedLicenseInfo = ruleSet.licenseInfoResolver.resolveLicenseInfo(pkg.id)
4247 )
48+ }
4349
4450 private fun PackageRule.createLicenseRule (license : SpdxSingleLicenseExpression , licenseSource : LicenseSource ) =
4551 LicenseRule (
@@ -98,6 +104,32 @@ class PackageRuleTest : WordSpec() {
98104 }
99105 }
100106
107+ " hasConcludedLicense()" should {
108+ " return true if the concluded license is a license expression" {
109+ val rule = createPackageRule(packageWithConcludedLicense(" MIT" ))
110+
111+ rule.hasConcludedLicense().matches() shouldBe true
112+ }
113+
114+ " return true if the concluded license is ${SpdxConstants .NONE } " {
115+ val rule = createPackageRule(packageWithConcludedLicense(SpdxConstants .NONE ))
116+
117+ rule.hasConcludedLicense().matches() shouldBe true
118+ }
119+
120+ " return false if the concluded license is ${SpdxConstants .NOASSERTION } " {
121+ val rule = createPackageRule(packageWithConcludedLicense(SpdxConstants .NOASSERTION ))
122+
123+ rule.hasConcludedLicense().matches() shouldBe false
124+ }
125+
126+ " return false if the concluded license is null" {
127+ val rule = createPackageRule(packageWithConcludedLicense(null ))
128+
129+ rule.hasConcludedLicense().matches() shouldBe false
130+ }
131+ }
132+
101133 " isExcluded()" should {
102134 " return true if the package is excluded" {
103135 val rule = createPackageRule(packageExcluded)
@@ -243,3 +275,22 @@ class PackageRuleTest : WordSpec() {
243275 }
244276 }
245277}
278+
279+ private fun packageWithConcludedLicense (license : String? ): Package =
280+ Package .EMPTY .copy(
281+ id = Identifier (" Maven:some:package:0.0.1" ),
282+ concludedLicense = license?.toSpdx(Strictness .ALLOW_ANY )
283+ )
284+
285+ private fun OrtResult.addPackage (pkg : Package ): OrtResult {
286+ val analyzerResult = analyzer?.result ? : return this
287+ if (pkg in analyzerResult.packages) return this
288+
289+ return copy(
290+ analyzer = analyzer!! .copy(
291+ result = analyzerResult.copy(
292+ packages = analyzerResult.packages + pkg
293+ )
294+ )
295+ )
296+ }
0 commit comments