2
0
Fork 0
mirror of https://github.com/ethauvin/bld.git synced 2025-04-26 08:37:11 -07:00

Preserve the project's version as a semantic version number. Created two version of parsing version string, one falls back to generic version, the other returns VersionNumber.UNKNOWN when parsing fails like in previous bld versions.

This commit is contained in:
Geert Bevin 2024-07-20 02:44:51 -04:00
parent fa0ac43828
commit d605ac1242
17 changed files with 169 additions and 60 deletions

View file

@ -45,16 +45,16 @@ public class TestDependencySet {
@Test
void testAddAll() {
var set1 = new DependencySet()
.include(new Dependency("org.eclipse.jetty", "jetty-server", VersionNumber.parse("11.0.14")))
.include(new Dependency("org.eclipse.jetty.toolchain", "jetty-jakarta-servlet-api", VersionNumber.parse("5.0.2")))
.include(new Dependency("org.eclipse.jetty", "jetty-http", VersionNumber.parse("11.0.14")))
.include(new Dependency("org.eclipse.jetty", "jetty-io", VersionNumber.parse("11.0.14")))
.include(new Dependency("org.eclipse.jetty", "jetty-util", VersionNumber.parse("11.0.14")))
.include(new Dependency("org.slf4j", "slf4j-api", VersionNumber.parse("2.0.5")));
.include(new Dependency("org.eclipse.jetty", "jetty-server", Version.parse("11.0.14")))
.include(new Dependency("org.eclipse.jetty.toolchain", "jetty-jakarta-servlet-api", Version.parse("5.0.2")))
.include(new Dependency("org.eclipse.jetty", "jetty-http", Version.parse("11.0.14")))
.include(new Dependency("org.eclipse.jetty", "jetty-io", Version.parse("11.0.14")))
.include(new Dependency("org.eclipse.jetty", "jetty-util", Version.parse("11.0.14")))
.include(new Dependency("org.slf4j", "slf4j-api", Version.parse("2.0.5")));
var set2 = new DependencySet()
.include(new Dependency("org.slf4j", "slf4j-simple", VersionNumber.parse("2.0.6")))
.include(new Dependency("org.slf4j", "slf4j-api", VersionNumber.parse("2.0.6")));
.include(new Dependency("org.slf4j", "slf4j-simple", Version.parse("2.0.6")))
.include(new Dependency("org.slf4j", "slf4j-api", Version.parse("2.0.6")));
var set_union1 = new DependencySet(set1);
set_union1.addAll(set2);

View file

@ -0,0 +1,73 @@
/*
* Copyright 2001-2023 Geert Bevin (gbevin[remove] at uwyn dot com)
* Licensed under the Apache License, Version 2.0 (the "License")
*/
package rife.bld.dependencies;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class TestVersion {
@Test
void testParsing() {
assertEquals(Version.parse("1"), new VersionNumber(1, 0, 0, null));
assertEquals(Version.parse("1.0"), new VersionNumber(1, 0, 0, null));
assertEquals(Version.parse("1.0.0"), new VersionNumber(1, 0, 0, null));
assertEquals(Version.parse("1.2"), new VersionNumber(1, 2, 0, null));
assertEquals(Version.parse("1.2.3"), new VersionNumber(1, 2, 3, null));
assertEquals(Version.parse("1-rc1-SNAPSHOT"), new VersionNumber(1, 0, 0, "rc1-SNAPSHOT"));
assertEquals(Version.parse("1.2-rc1-SNAPSHOT"), new VersionNumber(1, 2, 0, "rc1-SNAPSHOT"));
assertEquals(Version.parse("1.2.3-rc1-SNAPSHOT"), new VersionNumber(1, 2, 3, "rc1-SNAPSHOT"));
assertEquals(Version.parse("11.22"), new VersionNumber(11, 22, 0, null));
assertEquals(Version.parse("11.22.33"), new VersionNumber(11, 22, 33, null));
assertEquals(Version.parse("11.22.33-eap"), new VersionNumber(11, 22, 33, "eap"));
assertEquals(Version.parse("11.fortyfour"), new VersionNumber(11, 0, 0, "fortyfour"));
assertEquals(Version.parse("1.0.0.0"), new VersionNumber(1, 0, 0, "0"));
assertEquals(Version.parse("1.0.0.0.0.0.0"), new VersionNumber(1, 0, 0, "0.0.0.0"));
assertEquals(Version.parse("1.2.3.4-rc1-SNAPSHOT"), new VersionNumber(1, 2, 3, "4-rc1-SNAPSHOT"));
assertEquals(Version.parse("1.2.3.4.rc1-SNAPSHOT"), new VersionNumber(1, 2, 3, "4.rc1-SNAPSHOT"));
assertEquals(Version.parse("1.2.3_4"), new VersionNumber(1, 2, 0, "3_4"));
assertEquals(Version.parse("1.54b"), new VersionNumber(1, 0, 0, "54b"));
assertEquals(Version.parse("2024-02"), new VersionNumber(2024, null, null, "02"));
assertEquals(Version.parse("2.0-05"), new VersionNumber(2, 0, null, "05"));
assertEquals(Version.parse("2024.02"), new VersionNumber(2024, null, null, "02", "."));
assertEquals(Version.parse("2.0.05"), new VersionNumber(2, 0, null, "05", "."));
assertEquals(Version.parse("v3-rev20240514-2.0.0"), new VersionGeneric("v3-rev20240514-2.0.0"));
}
@Test
void testInvalidParsed() {
assertEquals(Version.parse(null), VersionNumber.UNKNOWN);
assertEquals(Version.parse(""), VersionNumber.UNKNOWN);
assertEquals(Version.parse("foo"), new VersionGeneric("foo"));
assertEquals(Version.parse("1."), new VersionGeneric("1."));
assertEquals(Version.parse("1.2.3-"), new VersionGeneric("1.2.3-"));
assertEquals(Version.parse("."), new VersionGeneric("."));
assertEquals(Version.parse("_"), new VersionGeneric("_"));
assertEquals(Version.parse("-"), new VersionGeneric("-"));
assertEquals(Version.parse(".1"), new VersionGeneric(".1"));
assertEquals(Version.parse("a.1"), new VersionGeneric("a.1"));
assertEquals(Version.parse("1_2"), new VersionGeneric("1_2"));
assertEquals(Version.parse("1_2_2"), new VersionGeneric("1_2_2"));
}
@Test
void testStringRepresentation() {
assertEquals(Version.parse("1.0").toString(), "1.0");
assertEquals(Version.parse("1.2.3").toString(), "1.2.3");
assertEquals(Version.parse("1.2.3-4").toString(), "1.2.3-4");
assertEquals(Version.parse("1.2.3.4").toString(), "1.2.3.4");
assertEquals(Version.parse("1-rc-1").toString(), "1-rc-1");
assertEquals(Version.parse("1.2.3-rc-1").toString(), "1.2.3-rc-1");
assertEquals(Version.parse("1.2.3.rc-1").toString(), "1.2.3.rc-1");
}
}

View file

@ -70,16 +70,16 @@ public class TestVersionNumber {
void testInvalidParsed() {
assertEquals(VersionNumber.parse(null), VersionNumber.UNKNOWN);
assertEquals(VersionNumber.parse(""), VersionNumber.UNKNOWN);
assertEquals(VersionNumber.parse("foo"), new VersionGeneric("foo"));
assertEquals(VersionNumber.parse("1."), new VersionGeneric("1."));
assertEquals(VersionNumber.parse("1.2.3-"), new VersionGeneric("1.2.3-"));
assertEquals(VersionNumber.parse("."), new VersionGeneric("."));
assertEquals(VersionNumber.parse("_"), new VersionGeneric("_"));
assertEquals(VersionNumber.parse("-"), new VersionGeneric("-"));
assertEquals(VersionNumber.parse(".1"), new VersionGeneric(".1"));
assertEquals(VersionNumber.parse("a.1"), new VersionGeneric("a.1"));
assertEquals(VersionNumber.parse("1_2"), new VersionGeneric("1_2"));
assertEquals(VersionNumber.parse("1_2_2"), new VersionGeneric("1_2_2"));
assertEquals(VersionNumber.parse("foo"), VersionNumber.UNKNOWN);
assertEquals(VersionNumber.parse("1."), VersionNumber.UNKNOWN);
assertEquals(VersionNumber.parse("1.2.3-"), VersionNumber.UNKNOWN);
assertEquals(VersionNumber.parse("."), VersionNumber.UNKNOWN);
assertEquals(VersionNumber.parse("_"), VersionNumber.UNKNOWN);
assertEquals(VersionNumber.parse("-"), VersionNumber.UNKNOWN);
assertEquals(VersionNumber.parse(".1"), VersionNumber.UNKNOWN);
assertEquals(VersionNumber.parse("a.1"), VersionNumber.UNKNOWN);
assertEquals(VersionNumber.parse("1_2"), VersionNumber.UNKNOWN);
assertEquals(VersionNumber.parse("1_2_2"), VersionNumber.UNKNOWN);
}
@Test

View file

@ -150,13 +150,13 @@ public class TestDependencyTreeOperation {
.include(new Dependency("org.eclipse.jetty", "jetty-servlet", new VersionNumber(11,0,15)).exclude("*", "jetty-jakarta-servlet-api"))
.include(new Dependency("org.apache.tomcat.embed", "tomcat-embed-core", new VersionNumber(10,1,12)))
.include(new Dependency("org.apache.tomcat.embed", "tomcat-embed-jasper", new VersionNumber(10,1,12)))
.include(new Dependency("net.imagej", "ij", VersionNumber.parse("1.54d")));
.include(new Dependency("net.imagej", "ij", Version.parse("1.54d")));
operation.dependencies().scope(Scope.test)
.include(new Dependency("org.jsoup", "jsoup", new VersionNumber(1,16,1)))
.include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(5,0,0)))
.include(new Dependency("org.eclipse.jetty", "jetty-server", new VersionNumber(11,0,15)).exclude("*", "jetty-jakarta-servlet-api"))
.include(new Dependency("org.eclipse.jetty", "jetty-servlet", new VersionNumber(11,0,15)).exclude("*", "jetty-jakarta-servlet-api"))
.include(new Dependency("net.imagej", "ij", VersionNumber.parse("1.54d")));
.include(new Dependency("net.imagej", "ij", Version.parse("1.54d")));
operation.execute();
@ -306,13 +306,13 @@ public class TestDependencyTreeOperation {
.include(new Dependency("org.eclipse.jetty", "jetty-servlet", new VersionNumber(11,0,15)).exclude("*", "jetty-jakarta-servlet-api"))
.include(new Dependency("org.apache.tomcat.embed", "tomcat-embed-core", new VersionNumber(10,1,12)))
.include(new Dependency("org.apache.tomcat.embed", "tomcat-embed-jasper", new VersionNumber(10,1,12)))
.include(new Dependency("net.imagej", "ij", VersionNumber.parse("1.54d")));
.include(new Dependency("net.imagej", "ij", Version.parse("1.54d")));
project.dependencies().scope(Scope.test)
.include(new Dependency("org.jsoup", "jsoup", new VersionNumber(1,16,1)))
.include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(5,0,0)))
.include(new Dependency("org.eclipse.jetty", "jetty-server", new VersionNumber(11,0,15)).exclude("*", "jetty-jakarta-servlet-api"))
.include(new Dependency("org.eclipse.jetty", "jetty-servlet", new VersionNumber(11,0,15)).exclude("*", "jetty-jakarta-servlet-api"))
.include(new Dependency("net.imagej", "ij", VersionNumber.parse("1.54d")));
.include(new Dependency("net.imagej", "ij", Version.parse("1.54d")));
var operation = new DependencyTreeOperation()
.fromProject(project);
@ -405,13 +405,13 @@ public class TestDependencyTreeOperation {
.include(new Dependency("org.eclipse.jetty", "jetty-servlet", new VersionNumber(11,0,15)).exclude("*", "jetty-jakarta-servlet-api"))
.include(new Dependency("org.apache.tomcat.embed", "tomcat-embed-core", new VersionNumber(10,1,12)))
.include(new Dependency("org.apache.tomcat.embed", "tomcat-embed-jasper", new VersionNumber(10,1,12)))
.include(new Dependency("net.imagej", "ij", VersionNumber.parse("1.54d")));
.include(new Dependency("net.imagej", "ij", Version.parse("1.54d")));
project.dependencies().scope(Scope.test)
.include(new Dependency("org.jsoup", "jsoup", new VersionNumber(1,16,1)))
.include(new Dependency("jakarta.servlet", "jakarta.servlet-api", new VersionNumber(5,0,0)))
.include(new Dependency("org.eclipse.jetty", "jetty-server", new VersionNumber(11,0,15)).exclude("*", "jetty-jakarta-servlet-api"))
.include(new Dependency("org.eclipse.jetty", "jetty-servlet", new VersionNumber(11,0,15)).exclude("*", "jetty-jakarta-servlet-api"))
.include(new Dependency("net.imagej", "ij", VersionNumber.parse("1.54d")));
.include(new Dependency("net.imagej", "ij", Version.parse("1.54d")));
var operation = new DependencyTreeOperation()
.fromProject(project);

View file

@ -41,7 +41,7 @@ public class TestMetadataBuilder {
.info(new PublishInfo()
.groupId("com.example")
.artifactId("myapp")
.version(VersionNumber.parse("1.2.3-SNAPSHOT")));
.version(Version.parse("1.2.3-SNAPSHOT")));
assertEquals("""
<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1.0">
@ -100,7 +100,7 @@ public class TestMetadataBuilder {
.info(new PublishInfo()
.groupId("com.example")
.artifactId("myapp")
.version(VersionNumber.parse("1.2.3-SNAPSHOT")))
.version(Version.parse("1.2.3-SNAPSHOT")))
.otherVersions(List.of(new VersionNumber(6,0,1), new VersionNumber(3,0,2), new VersionNumber(1,0,3), new VersionNumber(3,0,2)))
.updated(ZonedDateTime.of(2023, 3, 27, 8, 56, 17, 123, ZoneId.of("America/New_York")));
assertEquals("""
@ -129,7 +129,7 @@ public class TestMetadataBuilder {
.info(new PublishInfo()
.groupId("com.example")
.artifactId("myapp")
.version(VersionNumber.parse("1.2.3-SNAPSHOT")))
.version(Version.parse("1.2.3-SNAPSHOT")))
.snapshot(ZonedDateTime.of(2023, 3, 27, 8, 56, 17, 123, ZoneId.of("America/New_York")), 5);
assertEquals("""
<?xml version="1.0" encoding="UTF-8"?>
@ -156,7 +156,7 @@ public class TestMetadataBuilder {
.info(new PublishInfo()
.groupId("com.example")
.artifactId("myapp")
.version(VersionNumber.parse("1.2.3-SNAPSHOT")))
.version(Version.parse("1.2.3-SNAPSHOT")))
.snapshot(moment, 5)
.snapshotVersions(List.of(
new SnapshotVersion("classifier1", "ext1", "123", moment2),
@ -207,7 +207,7 @@ public class TestMetadataBuilder {
.info(new PublishInfo()
.groupId("com.example")
.artifactId("myapp")
.version(VersionNumber.parse("1.2.3-SNAPSHOT")))
.version(Version.parse("1.2.3-SNAPSHOT")))
.snapshotLocal()
.snapshotVersions(List.of(
new SnapshotVersion("classifier1", "ext1", "123", moment2),

View file

@ -5,10 +5,7 @@
package rife.bld.publish;
import org.junit.jupiter.api.Test;
import rife.bld.dependencies.Dependency;
import rife.bld.dependencies.DependencyScopes;
import rife.bld.dependencies.Scope;
import rife.bld.dependencies.VersionNumber;
import rife.bld.dependencies.*;
import rife.tools.StringUtils;
import java.io.File;
@ -50,7 +47,7 @@ public class TestPomBuilder {
.info(new PublishInfo()
.groupId("com.example")
.artifactId("myapp")
.version(VersionNumber.parse("1.2.3-SNAPSHOT"))
.version(Version.parse("1.2.3-SNAPSHOT"))
.name("the thing")
.description("the thing but longer")
.url("https://the.thing"));
@ -227,7 +224,7 @@ public class TestPomBuilder {
.info(new PublishInfo()
.groupId("com.example")
.artifactId("myapp")
.version(VersionNumber.parse("1.2.3-SNAPSHOT"))
.version(Version.parse("1.2.3-SNAPSHOT"))
.name("the thing")
.description("the thing but longer")
.url("https://the.thing")
@ -533,7 +530,7 @@ public class TestPomBuilder {
.info(new PublishInfo()
.groupId("com.example")
.artifactId("myapp")
.version(VersionNumber.parse("1.2.3-SNAPSHOT"))
.version(Version.parse("1.2.3-SNAPSHOT"))
.name("the thing")
.description("the thing but longer")
.url("https://the.thing")