Skip to content

Commit 7ec20c4

Browse files
authored
fix(amazonq): Prevent major version while downloading flare artifact (#5760)
1 parent 7cb2b07 commit 7ec20c4

File tree

4 files changed

+25
-2
lines changed

4 files changed

+25
-2
lines changed

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactHelper.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ class ArtifactHelper(private val lspArtifactsPath: Path = DEFAULT_ARTIFACT_PATH,
7171
return localFolders
7272
.mapNotNull { localFolder ->
7373
SemVer.parseFromText(localFolder.fileName.toString())?.let { semVer ->
74-
if (semVer in manifestVersionRanges.startVersion..manifestVersionRanges.endVersion) {
74+
if (semVer >= manifestVersionRanges.startVersion && semVer < manifestVersionRanges.endVersion) {
7575
localFolder to semVer
7676
} else {
7777
null

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactManager.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ class ArtifactManager @NonInjectable internal constructor(private val manifestFe
100100
SemVer.parseFromText(serverVersion)?.let { semVer ->
101101
when {
102102
version.isDelisted != false -> Pair(version, true) // Is deListed
103-
semVer in DEFAULT_VERSION_RANGE.let { it.startVersion..it.endVersion } -> Pair(version, false) // Is in range
103+
(semVer >= DEFAULT_VERSION_RANGE.startVersion && semVer < DEFAULT_VERSION_RANGE.endVersion) -> Pair(version, false) // Is in range
104104
else -> null
105105
}
106106
}

plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactHelperTest.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ class ArtifactHelperTest {
101101
tempDir.resolve("1.0.0").createDirectories()
102102
tempDir.resolve("1.0.1").createDirectories()
103103
tempDir.resolve("1.0.2").createDirectories()
104+
104105
manifestVersionRanges = SupportedManifestVersionRange(
105106
startVersion = SemVer("1.0.0", 1, 0, 0),
106107
endVersion = SemVer("2.0.0", 2, 0, 0)
@@ -112,6 +113,21 @@ class ArtifactHelperTest {
112113
assertThat(actualResult.first().first.fileName.toString()).isEqualTo("1.0.2")
113114
}
114115

116+
@Test
117+
fun `getAllLocalLspArtifactsWithinManifestRange does not return end major version path`() {
118+
tempDir.resolve("1.0.0").createDirectories()
119+
tempDir.resolve("2.0.0").createDirectories()
120+
manifestVersionRanges = SupportedManifestVersionRange(
121+
startVersion = SemVer("1.0.0", 1, 0, 0),
122+
endVersion = SemVer("2.0.0", 2, 0, 0)
123+
)
124+
125+
val actualResult = artifactHelper.getAllLocalLspArtifactsWithinManifestRange(manifestVersionRanges)
126+
assertThat(actualResult).isNotNull()
127+
assertThat(actualResult.size).isEqualTo(1)
128+
assertThat(actualResult.first().first.fileName.toString()).isNotEqualTo("2.0.0")
129+
}
130+
115131
@Test
116132
fun `getExistingLspArtifacts should find all the artifacts`() {
117133
val version1Dir = tempDir.resolve("1.0.0").apply { toFile().mkdirs() }

plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactManagerTest.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,13 @@ class ArtifactManagerTest {
7676
.hasFieldOrPropertyWithValue("errorCode", LspException.ErrorCode.NO_COMPATIBLE_LSP_VERSION)
7777
}
7878

79+
@Test
80+
fun `getLSPVersionsFromManifestWithSpecifiedRange excludes end major version`() = runTest {
81+
val newManifest = Manifest(versions = listOf(Version(serverVersion = "2.0.0")))
82+
val result = artifactManager.getLSPVersionsFromManifestWithSpecifiedRange(newManifest)
83+
assertThat(result.inRangeVersions).isEmpty()
84+
}
85+
7986
@Test
8087
fun `fetch artifact if inRangeVersions are not available should fallback to local lsp`() = runTest {
8188
val expectedResult = listOf(Pair(tempDir, SemVer("1.0.0", 1, 0, 0)))

0 commit comments

Comments
 (0)