problem with suggesting patch when eap channel and release channel builds are available

This commit is contained in:
Maxim.Mossienko
2014-12-16 17:25:00 +01:00
parent 0b089ed265
commit 1089eca2ac
4 changed files with 60 additions and 3 deletions
@@ -101,9 +101,13 @@ public class BuildInfo implements Comparable<BuildInfo> {
@Nullable
public PatchInfo findPatchForCurrentBuild() {
BuildNumber currentBuild = ApplicationInfo.getInstance().getBuild();
return findPatchForBuild(ApplicationInfo.getInstance().getBuild());
}
@Nullable
public PatchInfo findPatchForBuild(BuildNumber currentBuild) {
for (PatchInfo each : myPatches) {
if (each.isAvailable() && each.getFromBuild().asStringWithoutProductCode().equals(currentBuild.asStringWithoutProductCode()))
if (each.isAvailable() && each.getFromBuild().asStringWithoutProductCode().equals(currentBuild.asStringWithoutProductCode()))
return each;
}
return null;
@@ -89,7 +89,11 @@ public class UpdateStrategy {
for (UpdateChannel channel : channels) {
if ((channel.getMajorVersion() == myMajorVersion && channel.getStatus().compareTo(myChannelStatus) >= 0) ||
(channel.getMajorVersion() > myMajorVersion && channel.getStatus() == ChannelStatus.EAP && myChannelStatus == ChannelStatus.EAP)) {
result.add(channel);
if (channel.getMajorVersion() == myMajorVersion && channel.getStatus().compareTo(myChannelStatus) == 0) {
result.add(0, channel); // prefer channel that has same status as our selected channel status
} else {
result.add(channel);
}
}
}
return result;
@@ -116,4 +116,16 @@ public class UpdateStrategyTest extends TestCase {
Assert.assertEquals("IDEA10EAP", newChannel.getId());
Assert.assertEquals("IntelliJ IDEA X EAP", newChannel.getName());
}
public void testChannelWithCurrentStatusPreferred() {
final TestUpdateSettings settings = new TestUpdateSettings(ChannelStatus.EAP);
BuildNumber currentBuild = BuildNumber.fromString("IU-139.658");
UpdateStrategy strategy = new UpdateStrategy(14, currentBuild, UpdatesInfoXppParserTest.InfoReader.read("idea-patchAvailable.xml"), settings);
final CheckForUpdateResult result = strategy.checkForUpdates();
Assert.assertEquals(UpdateStrategy.State.LOADED, result.getState());
Assert.assertEquals(result.getUpdatedChannel().getStatus(), ChannelStatus.EAP);
Assert.assertNotNull(result.getNewBuildInSelectedChannel().findPatchForBuild(currentBuild));
}
}
@@ -0,0 +1,37 @@
<products>
<product name="IntelliJ IDEA">
<code>IU</code>
<code>IC</code>
<channel id="IDEA14" name="IntelliJ IDEA 14" status="release"
url="http://www.jetbrains.com/idea/download"
feedback="http://youtrack.jetbrains.net"
majorVersion="14">
<build number="139.659" version="14.0.2" releaseDate="20141103">
<message>IntelliJ IDEA 14.0.2 build 139.659 is available.</message>
<button name="Download" url="http://www.jetbrains.com/idea/download" download="true"/>
<button name="What's New" url="http://www.jetbrains.com/idea/whatsnew/index.html"/>
<button name="Release Notes" url="http://confluence.jetbrains.com/display/IDEADEV/IntelliJ+IDEA+14.0.2+Release+Notes"/>
<patch from="139.224" size="30" />
<patch from="139.225" size="30" />
</build>
</channel>
<channel id="IDEA_14_EAP" name="IntelliJ IDEA 14 EAP" status="eap"
url="http://confluence.jetbrains.com/display/IDEADEV/IDEA+14+EAP"
feedback="http://youtrack.jetbrains.net"
majorVersion="14">
<build number="139.659" version="14.0.2" releaseDate="20141103">
<message>IntelliJ IDEA 14.0.2 build 139.659 is available.</message>
<button name="Download" url="http://confluence.jetbrains.com/display/IDEADEV/IDEA+14+EAP" download="true"/>
<button name="Release Notes" url="http://confluence.jetbrains.com/display/IDEADEV/IntelliJ+IDEA+14+139.659.2+Release+Notes"/>
<patch from="139.658" size="10" />
<patch from="139.224" size="30" />
<patch from="139.225" size="30" />
</build>
</channel>
</product>
</products>