Fix logic detecting unreleased versions
When partitioning version constants into released and unreleased versions, today we have a bug in finding the last unreleased version. Namely, consider the following version constants on the 6.x branch: ..., 5.6.3, 5.6.4, 6.0.0-alpha1, ..., 6.0.0-rc1, 6.0.0-rc2, 6.0.0, 6.1.0. In this case, our convention dictates that: 5.6.4, 6.0.0, and 6.1.0 are unreleased. Today we correctly detect that 6.0.0 and 6.1.0 are unreleased, and then we say the previous patch version is unreleased too. The problem is the logic to remove that previous patch version is broken, it does not skip alphas/betas/RCs which have been released. This commit fixes this by skipping backwards over pre-release versions when finding the previous patch version to remove. Relates #27206
This commit is contained in:
parent
99aca9cdfc
commit
d6d830ff0b
|
@ -100,9 +100,17 @@ public class VersionUtils {
|
||||||
|
|
||||||
Version unreleased = versions.remove(unreleasedIndex);
|
Version unreleased = versions.remove(unreleasedIndex);
|
||||||
if (unreleased.revision == 0) {
|
if (unreleased.revision == 0) {
|
||||||
/* If the last unreleased version is itself a patch release then gradle enforces
|
/*
|
||||||
* that there is yet another unreleased version before that. */
|
* If the last unreleased version is itself a patch release then Gradle enforces that there is yet another unreleased version
|
||||||
|
* before that. However, we have to skip alpha/betas/RCs too (e.g., consider when the version constants are ..., 5.6.3, 5.6.4,
|
||||||
|
* 6.0.0-alpha1, ..., 6.0.0-rc1, 6.0.0-rc2, 6.0.0, 6.1.0 on the 6.x branch. In this case, we will have pruned 6.0.0 and 6.1.0 as
|
||||||
|
* unreleased versions, but we also need to prune 5.6.4. At this point though, unreleasedIndex will be pointing to 6.0.0-rc2, so
|
||||||
|
* we have to skip backwards until we find a non-alpha/beta/RC again. Then we can prune that version as an unreleased version
|
||||||
|
* too.
|
||||||
|
*/
|
||||||
|
do {
|
||||||
unreleasedIndex--;
|
unreleasedIndex--;
|
||||||
|
} while (versions.get(unreleasedIndex).isRelease() == false);
|
||||||
Version earlierUnreleased = versions.remove(unreleasedIndex);
|
Version earlierUnreleased = versions.remove(unreleasedIndex);
|
||||||
return new Tuple<>(unmodifiableList(versions), unmodifiableList(Arrays.asList(earlierUnreleased, unreleased, current)));
|
return new Tuple<>(unmodifiableList(versions), unmodifiableList(Arrays.asList(earlierUnreleased, unreleased, current)));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue