Skip to content

Commit 51b37cc

Browse files
authored
Update compatibility test and verified version (#7981)
Updates the verified version in perf gradle compatibility test - and adds logic for semVer comparison.
1 parent 1994969 commit 51b37cc

1 file changed

Lines changed: 34 additions & 12 deletions

File tree

firebase-perf-gradle/src/functionalTest/java/com/google/firebase/perf/plugin/transform/InstrumentationApiCompatTest.java

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import okhttp3.OkHttpClient;
3030
import okhttp3.Request;
3131
import okhttp3.Response;
32+
import org.gradle.util.internal.VersionNumber;
3233
import org.junit.jupiter.api.Test;
3334
import org.junit.jupiter.api.extension.RegisterExtension;
3435
import org.junit.jupiter.params.ParameterizedTest;
@@ -51,8 +52,8 @@ public class InstrumentationApiCompatTest {
5152
private static final String GRADLE_RELEASES_URL =
5253
"https://api.github.com/repos/gradle/gradle/releases/latest";
5354
// Latest verified versions. Update these as new versions are released and verified.
54-
private static final String VERIFIED_AGP_VERSION = "9.1.0-alpha03";
55-
private static final String VERIFIED_GRADLE_VERSION = "9.2.1";
55+
private static final String VERIFIED_AGP_VERSION = "9.2.0-alpha05";
56+
private static final String VERIFIED_GRADLE_VERSION = "9.5.0-milestone-5";
5657
private final OkHttpClient client = new OkHttpClient();
5758

5859
@RegisterExtension public GradleBuildProject gradleBuildProject = new GradleBuildProject();
@@ -84,23 +85,22 @@ public void gradleBuildRunsInstrumentationForAllVariants_latestGradleAndAgp() th
8485
String latestGradleVersion = latestGradleVersion();
8586
String latestAgpVersion = latestAgpVersion();
8687

88+
String gradleVersionToTest = versionToTest(VERIFIED_GRADLE_VERSION, latestGradleVersion);
89+
String agpVersionToTest = versionToTest(VERIFIED_AGP_VERSION, latestAgpVersion);
90+
8791
LOGGER.log(Level.INFO, "Latest Gradle Version: {0}", latestGradleVersion);
92+
LOGGER.log(Level.INFO, "Gradle Version to Test: {0}", gradleVersionToTest);
93+
8894
LOGGER.log(Level.INFO, "Latest AGP Version: {0}", latestAgpVersion);
89-
LOGGER.log(Level.WARNING, "If this test fails, please file an issue or a bug");
95+
LOGGER.log(Level.INFO, "AGP Version to test: {0}", agpVersionToTest);
9096

91-
if (latestAgpVersion.equals(VERIFIED_AGP_VERSION)
92-
&& latestGradleVersion.equals(VERIFIED_GRADLE_VERSION)) {
93-
LOGGER.log(
94-
Level.INFO,
95-
"Latest gradle and AGP versions are identical to verified versions. Skipping test.");
96-
return;
97-
}
97+
LOGGER.log(Level.WARNING, "If this test fails, please file an issue or a bug");
9898

9999
GradleBuildResult result =
100100
gradleBuildProject
101101
.getJavaRunnerBuilder()
102-
.withGradleVersion(latestGradleVersion)
103-
.withAndroidGradlePluginVersion(latestAgpVersion)
102+
.withGradleVersion(gradleVersionToTest)
103+
.withAndroidGradlePluginVersion(agpVersionToTest)
104104
.build(GradleBuildVariant.ALL);
105105

106106
result.verifyInstrumentationExecutedFor(GradleBuildVariant.DEBUG);
@@ -110,6 +110,10 @@ public void gradleBuildRunsInstrumentationForAllVariants_latestGradleAndAgp() th
110110
/**
111111
* Fetches the latest Gradle version using OkHttp.
112112
* @return The latest Gradle version as a String.
113+
*
114+
* @implNote : {@GRADLE_RELEASES_URL} doesn't return pre-release versions,
115+
* which can be overridden by updating the {@VERIFIED_GRADLE_VERSION}
116+
*
113117
* @throws RuntimeException if the fetching or parsing fails.
114118
*/
115119
private String latestGradleVersion() {
@@ -158,4 +162,22 @@ private String latestAgpVersion() {
158162
"Failed to fetch or parse latest AGP version: " + e.getMessage(), e);
159163
}
160164
}
165+
166+
/**
167+
* Compares the hardcoded verified version (which can be pre-release)
168+
* with the latest version fetched via API call,
169+
* and returns the latest version.
170+
*
171+
* @return The latest version based on SemVer comparison.
172+
*/
173+
private String versionToTest(String verifiedVersion, String latestVersion) {
174+
VersionNumber comparableVerifiedVersion = VersionNumber.parse(verifiedVersion);
175+
VersionNumber comparableLatestVersion = VersionNumber.parse(latestVersion);
176+
177+
if (comparableLatestVersion.compareTo(comparableVerifiedVersion) > 0) {
178+
return latestVersion;
179+
}
180+
181+
return verifiedVersion;
182+
}
161183
}

0 commit comments

Comments
 (0)