Skip to content

Commit 508fa0c

Browse files
committed
Update BaseUpgradeTest to use local enlistment version
1 parent 899810b commit 508fa0c

4 files changed

Lines changed: 69 additions & 7 deletions

File tree

src/org/labkey/test/TestProperties.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.labkey.serverapi.reader.Readers;
2121
import org.labkey.test.util.CspLogUtil;
2222
import org.labkey.test.util.TestLogger;
23+
import org.labkey.test.util.Version;
2324
import org.openqa.selenium.Dimension;
2425

2526
import java.io.File;
@@ -73,6 +74,31 @@ public abstract class TestProperties
7374
TestLogger.error("Failed to load " + propFile.getName() + " file. Running with hard-coded defaults");
7475
ioe.printStackTrace(System.err);
7576
}
77+
78+
final List<String> gradleProperties = List.of("labkeyVersion");
79+
final File serverPropFile = new File(TestFileUtils.getLabKeyRoot(), "gradle.properties");
80+
if (serverPropFile.exists())
81+
{
82+
try (Reader propReader = Readers.getReader(serverPropFile))
83+
{
84+
TestLogger.log("Loading properties from " + serverPropFile.getName());
85+
Properties properties = new Properties();
86+
properties.load(propReader);
87+
for (String key : gradleProperties)
88+
{
89+
if (properties.containsKey(key))
90+
{
91+
System.setProperty(key, properties.getProperty(key));
92+
}
93+
}
94+
}
95+
catch (IOException ioe)
96+
{
97+
TestLogger.error("Failed to load " + serverPropFile.getName() + " file.");
98+
ioe.printStackTrace(System.err);
99+
}
100+
}
101+
76102
}
77103

78104
private static ZoneId browserZoneId = null;
@@ -83,6 +109,19 @@ public static void load()
83109
CspLogUtil.init();
84110
}
85111

112+
/// Get the local enlistment version, stripping everything past the minor version.
113+
/// - `"25.11.0"` -> `"25.11"`
114+
/// - `"25.11-SNAPSHOT"` -> `"25.11"`
115+
/// @return Enlistment Version or `null` if unable to determine
116+
public static Version getProductVersion()
117+
{
118+
Version version = new Version(System.getProperty("labkeyVersion", "1"));
119+
if (version.size() >= 2)
120+
return version.trim(2);
121+
else
122+
return null;
123+
}
124+
86125
public static boolean isTestCleanupSkipped()
87126
{
88127
return !getBooleanProperty("clean", false);

src/org/labkey/test/tests/upgrade/BaseUpgradeTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public abstract class BaseUpgradeTest extends BaseWebDriverTest
3636

3737
protected static final boolean isUpgradeSetupPhase = TestProperties.getBooleanProperty("webtest.upgradeSetup", true);
3838
protected static final Version previousVersion = Optional.ofNullable(trimToNull(System.getProperty("webtest.upgradePreviousVersion")))
39-
.map(Version::new).orElse(null);
39+
.map(Version::new).orElse(TestProperties.getProductVersion());
4040

4141
@Override
4242
protected boolean skipCleanup(boolean afterTest)
@@ -114,7 +114,7 @@ private static class UpgradeVersionCheck implements TestRule
114114
@Override
115115
public void evaluate() throws Throwable
116116
{
117-
Assume.assumeTrue("Test doesn't support upgrading from version: " + previousVersion,
117+
Assume.assumeTrue("Test not valid when upgrading from version: " + previousVersion,
118118
VersionRange.versionRange(earliestVersion, latestVersion).contains(previousVersion)
119119
);
120120
base.evaluate();

src/org/labkey/test/util/Version.java

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,32 @@ public class Version implements Comparable<Version>
1515
{
1616
private final List<Integer> _version;
1717

18-
public Version(Integer... version)
18+
private Version(List<Integer> version)
1919
{
2020
_version = validate(version);
2121
}
2222

23+
public Version(Integer... version)
24+
{
25+
this(List.of(version));
26+
}
27+
2328
public Version(String version)
2429
{
25-
this(Arrays.stream(version.split("\\.")).map(Integer::parseInt).toArray(Integer[]::new));
30+
this(Arrays.stream(version
31+
.split("-", 2)[0] // Remove snapshot suffix
32+
.split("\\.")) // Split the version into major, minor, patch, etc. parts
33+
.map(Integer::parseInt).toList());
2634
}
2735

2836
public Version(Double version)
2937
{
3038
this(version.toString());
3139
}
3240

33-
private static List<Integer> validate(Integer... versionParts)
41+
private static List<Integer> validate(List<Integer> versionParts)
3442
{
35-
List<Integer> partList = List.of(versionParts);
43+
List<Integer> partList = List.copyOf(versionParts);
3644
if (partList.isEmpty())
3745
{
3846
throw new IllegalArgumentException("Version must have at least one part");
@@ -47,6 +55,19 @@ private static List<Integer> validate(Integer... versionParts)
4755
return partList;
4856
}
4957

58+
public Version trim(int maxParts)
59+
{
60+
if (maxParts == _version.size())
61+
return this;
62+
else
63+
return new Version(_version.subList(0, maxParts));
64+
}
65+
66+
public int size()
67+
{
68+
return _version.size();
69+
}
70+
5071
@Override
5172
public int compareTo(@NotNull Version o)
5273
{

src/org/labkey/test/util/VersionRange.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ public static VersionRange until(String version)
2323

2424
public static VersionRange versionRange(String earliestVersion, String latestVersion)
2525
{
26-
return new VersionRange(new Version(earliestVersion), new Version(latestVersion));
26+
Version earliest = earliestVersion == null ? null : new Version(earliestVersion);
27+
Version latest = latestVersion == null ? null : new Version(latestVersion);
28+
return new VersionRange(earliest, latest);
2729
}
2830

2931
public boolean contains(Version version)

0 commit comments

Comments
 (0)