[platform] making UpdateStrategy app-independent

GitOrigin-RevId: d58d9b084beaaba9342d601f4ba052388e92b920
This commit is contained in:
Roman Shevchenko
2021-04-06 21:32:19 +00:00
committed by intellij-monorepo-bot
parent e12f266e86
commit 97bfe1ab3a
2 changed files with 14 additions and 9 deletions
@@ -4,22 +4,26 @@ package com.intellij.openapi.updateSettings.impl
import com.intellij.openapi.updateSettings.UpdateStrategyCustomization
import com.intellij.openapi.util.BuildNumber
import com.intellij.util.containers.MultiMap
import com.intellij.util.graph.GraphAlgorithms
import com.intellij.util.graph.InboundSemiGraph
import com.intellij.util.graph.impl.ShortestPathFinder
import org.jetbrains.annotations.ApiStatus
import java.util.*
private val NUMBER = Regex("\\d+")
class UpdateStrategy(private val currentBuild: BuildNumber, private val product: Product?, private val settings: UpdateSettings) {
class UpdateStrategy(private val currentBuild: BuildNumber,
private val product: Product?,
private val settings: UpdateSettings,
private val customization: UpdateStrategyCustomization) {
constructor(currentBuild: BuildNumber, product: Product?, settings: UpdateSettings) :
this(currentBuild, product, settings, UpdateStrategyCustomization.getInstance())
@Deprecated("Please use `UpdateStrategy(BuildNumber, Product, UpdateSettings)` instead")
@ApiStatus.ScheduledForRemoval(inVersion = "2022.2")
@Suppress("DEPRECATION")
constructor(currentBuild: BuildNumber, updates: UpdatesInfo, settings: UpdateSettings) :
this(currentBuild, updates.product, settings)
private val customization = UpdateStrategyCustomization.getInstance()
enum class State {
LOADED, CONNECTION_ERROR, NOTHING_LOADED
}
@@ -84,7 +88,7 @@ class UpdateStrategy(private val currentBuild: BuildNumber, private val product:
override fun getNodes() = upgrades.keySet() + upgrades.values()
override fun getIn(n: BuildNumber) = upgrades[n].iterator()
}
val path = GraphAlgorithms.getInstance().findShortestPath(graph, from.withoutProductCode(), newBuild.number.withoutProductCode())
val path = ShortestPathFinder(graph).findPath(from.withoutProductCode(), newBuild.number.withoutProductCode())
if (path == null || path.size <= 2) return null
var total = 0
@@ -1,16 +1,16 @@
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.ide.updates
import com.intellij.openapi.updateSettings.UpdateStrategyCustomization
import com.intellij.openapi.updateSettings.impl.*
import com.intellij.openapi.util.BuildNumber
import com.intellij.openapi.util.JDOMUtil
import com.intellij.testFramework.fixtures.BareTestFixtureTestCase
import org.assertj.core.api.Assertions.assertThat
import org.junit.Assert.*
import org.junit.Test
// unless stated otherwise, the behavior described in cases is true for 162+
class UpdateStrategyTest : BareTestFixtureTestCase() {
class UpdateStrategyTest {
@Test fun `channel contains no builds`() {
val result = check("IU-145.258", ChannelStatus.RELEASE, """<channel id="IDEA_Release" status="release" licensing="release"/>""")
assertNull(result.newBuild)
@@ -286,7 +286,8 @@ class UpdateStrategyTest : BareTestFixtureTestCase() {
val settings = UpdateSettings()
settings.selectedChannelStatus = selectedChannel
settings.ignoredBuildNumbers += ignoredBuilds
val result = UpdateStrategy(BuildNumber.fromString(currentBuild)!!, product, settings).checkForUpdates()
val customization = UpdateStrategyCustomization()
val result = UpdateStrategy(BuildNumber.fromString(currentBuild)!!, product, settings, customization).checkForUpdates()
assertEquals(UpdateStrategy.State.LOADED, result.state)
return result
}