Skip to content

Commit 9b03c9d

Browse files
unit test add for extract lowest version method
1 parent e981617 commit 9b03c9d

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

detectable/src/main/java/com/blackduck/integration/detectable/detectables/npm/packagejson/PackageJsonExtractor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ private Dependency entryToDependency(String key, String value) {
8585
return new Dependency(externalId);
8686
}
8787

88-
private String extractLowestVersion(String value) {
88+
public String extractLowestVersion(String value) {
8989
SemVerComparator semVerComparator = new SemVerComparator();
9090

9191
// Split the value into parts by spaces, "||", or "-".
@@ -96,7 +96,7 @@ private String extractLowestVersion(String value) {
9696
// Remove npm version selection characters that the KB won't match on
9797
.map(part -> part.replaceAll("[>=<~^]", ""))
9898
// Filter out parts that don't match the version pattern
99-
.filter(part -> isProbableVersion(part))
99+
.filter(this::isProbableVersion)
100100
// Use compareSemVerVersions method to find smallest version in each value
101101
.min(semVerComparator)
102102
// If no part matches the version pattern, return the original value.

detectable/src/test/java/com/blackduck/integration/detectable/detectables/npm/packagejson/unit/PackageJsonExtractorTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,27 @@ void extractWithNonNumericalCharacters() {
109109
graphAssert.hasRootSize(7);
110110
}
111111

112+
@Test
113+
void shouldExtractLowestSemVerCorrectly() {
114+
PackageJsonExtractor extractor = createExtractor();
115+
116+
assertEquals("1.0.0", extractor.extractLowestVersion("1.0.0 - 2.9999.9999"));
117+
assertEquals("1.0.2", extractor.extractLowestVersion( ">=1.0.2 <2.1.2"));
118+
assertEquals("1.0.0", extractor.extractLowestVersion("<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"));
119+
assertEquals("1.2.0", extractor.extractLowestVersion("~1.2.0"));
120+
assertEquals("3.3.0", extractor.extractLowestVersion("3.3.x"));
121+
assertEquals("1.0.0", extractor.extractLowestVersion("1.0.0-SNAPSHOT"));
122+
assertEquals("1.2.3", extractor.extractLowestVersion( "^1.2.3"));
123+
assertEquals("1.2.3", extractor.extractLowestVersion("1.2.3-alpha"));
124+
assertEquals("17.0.0", extractor.extractLowestVersion( "17.0.0-1551262265873"));
125+
assertEquals("3.2.0", extractor.extractLowestVersion("^3.2.0 || 4.0.1"));
126+
assertEquals("1.2.0", extractor.extractLowestVersion("~1.2.x"));
127+
assertEquals("1.2.3", extractor.extractLowestVersion("1.2.3-beta.2"));
128+
assertEquals("5.0.0", extractor.extractLowestVersion( "5.0.0-alpha+build.1"));
129+
assertEquals("3.0.0", extractor.extractLowestVersion("3.0.0-abc123"));
130+
assertEquals("10.0.0", extractor.extractLowestVersion("10.0.0-0000000000123"));
131+
}
132+
112133
private CombinedPackageJson createPackageJson() {
113134
CombinedPackageJson combinedPackageJson = new CombinedPackageJson();
114135

0 commit comments

Comments
 (0)