From a3cfc3824db3a5a33489d5d6b20d2aaffca45ebf Mon Sep 17 00:00:00 2001 From: Gary O'Neall Date: Mon, 19 Aug 2024 14:42:27 -0700 Subject: [PATCH] Allow x.y.z format in license list version Closes #247 Signed-off-by: Gary O'Neall --- src/main/java/org/spdx/library/SpdxConstants.java | 2 +- .../spdx/library/model/SpdxCreatorInformation.java | 2 +- .../library/model/SpdxCreatorInformationTest.java | 13 +++++++++++++ .../library/model/license/ListedLicensesTest.java | 10 ---------- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/spdx/library/SpdxConstants.java b/src/main/java/org/spdx/library/SpdxConstants.java index b883cb725..4d7d3e09b 100644 --- a/src/main/java/org/spdx/library/SpdxConstants.java +++ b/src/main/java/org/spdx/library/SpdxConstants.java @@ -373,7 +373,7 @@ public class SpdxConstants { // License list version Format - public static final Pattern LICENSE_LIST_VERSION_PATTERN = Pattern.compile("^[a-zA-Z0-9]+\\.[a-zA-Z0-9]+"); + public static final Pattern LICENSE_LIST_VERSION_PATTERN = Pattern.compile("^[a-zA-Z0-9]+\\.[a-zA-Z0-9]+(\\.[a-zA-Z0-9]+)?"); // Standard value strings public static String NONE_VALUE = "NONE"; public static String NOASSERTION_VALUE = "NOASSERTION"; diff --git a/src/main/java/org/spdx/library/model/SpdxCreatorInformation.java b/src/main/java/org/spdx/library/model/SpdxCreatorInformation.java index a452330b6..bc91e98f7 100644 --- a/src/main/java/org/spdx/library/model/SpdxCreatorInformation.java +++ b/src/main/java/org/spdx/library/model/SpdxCreatorInformation.java @@ -260,7 +260,7 @@ protected List _verify(Set verifiedIds, String specVersion) { if (SpdxConstants.LICENSE_LIST_VERSION_PATTERN.matcher(version).matches()) { return null; } else { - return "License list version does not match the pattern M.N"; + return "License list version does not match the pattern M.N or M.N.P"; } } } diff --git a/src/test/java/org/spdx/library/model/SpdxCreatorInformationTest.java b/src/test/java/org/spdx/library/model/SpdxCreatorInformationTest.java index 14cf87f6d..07f2c4ec4 100644 --- a/src/test/java/org/spdx/library/model/SpdxCreatorInformationTest.java +++ b/src/test/java/org/spdx/library/model/SpdxCreatorInformationTest.java @@ -69,6 +69,19 @@ public void testGetSetCreators() throws InvalidSPDXAnalysisException { assertEquals(0, ci.verify().size()); } + public void testSemVerLicenseListVersion() throws InvalidSPDXAnalysisException { + List creators = new ArrayList<>(Arrays.asList(new String[] {"Person: me"})); + DateFormat format = new SimpleDateFormat(SpdxConstants.SPDX_DATE_FORMAT); + String date = format.format(new Date()); + SpdxCreatorInformation ci = gmo.createCreationInfo(creators, date); + String licenseVersion = "1.1"; + ci.setLicenseListVersion(licenseVersion); + assertEquals(0, ci.verify().size()); + licenseVersion = "1.1.2"; + ci.setLicenseListVersion(licenseVersion); + assertEquals(0, ci.verify().size()); + } + public void testGetSetLicenseListVersion() throws InvalidSPDXAnalysisException { List creators = new ArrayList<>(Arrays.asList(new String[] {"Person: me"})); DateFormat format = new SimpleDateFormat(SpdxConstants.SPDX_DATE_FORMAT); diff --git a/src/test/java/org/spdx/library/model/license/ListedLicensesTest.java b/src/test/java/org/spdx/library/model/license/ListedLicensesTest.java index 93e573a11..2e59b67e9 100644 --- a/src/test/java/org/spdx/library/model/license/ListedLicensesTest.java +++ b/src/test/java/org/spdx/library/model/license/ListedLicensesTest.java @@ -1,11 +1,9 @@ package org.spdx.library.model.license; -import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.Optional; -import org.apache.commons.lang3.StringUtils; import org.spdx.library.InvalidSPDXAnalysisException; import org.spdx.library.SpdxConstants; @@ -54,14 +52,6 @@ protected void setUp() throws Exception { protected void tearDown() throws Exception { super.tearDown(); } - - public void testLicenseListVersionFormat() { - String licenseListversion = ListedLicenses.getListedLicenses().getLicenseListVersion(); - - assertEquals("Expected one point in license list version. ", 1, StringUtils.countMatches(licenseListversion, ".")); - assertTrue("Number expected before the point in license list version (" + licenseListversion + ")", StringUtils.isNumeric(StringUtils.substringBefore(licenseListversion, "."))); - assertTrue("Number expected after the point in license list version (" + licenseListversion + ")", StringUtils.isNumeric(StringUtils.substringAfter(licenseListversion, "."))); - } /** * Test method for {@link org.spdx.library.model.license.ListedLicenses#isSpdxListedLicenseId(java.lang.String)}.