diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactHelper.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactHelper.kt index 171bbfad041..97f2db11fed 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactHelper.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactHelper.kt @@ -71,7 +71,7 @@ class ArtifactHelper(private val lspArtifactsPath: Path = DEFAULT_ARTIFACT_PATH, return localFolders .mapNotNull { localFolder -> SemVer.parseFromText(localFolder.fileName.toString())?.let { semVer -> - if (semVer in manifestVersionRanges.startVersion..manifestVersionRanges.endVersion) { + if (semVer >= manifestVersionRanges.startVersion && semVer < manifestVersionRanges.endVersion) { localFolder to semVer } else { null diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactManager.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactManager.kt index b1c929e1aee..8fc8d068348 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactManager.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactManager.kt @@ -100,7 +100,7 @@ class ArtifactManager @NonInjectable internal constructor(private val manifestFe SemVer.parseFromText(serverVersion)?.let { semVer -> when { version.isDelisted != false -> Pair(version, true) // Is deListed - semVer in DEFAULT_VERSION_RANGE.let { it.startVersion..it.endVersion } -> Pair(version, false) // Is in range + (semVer >= DEFAULT_VERSION_RANGE.startVersion && semVer < DEFAULT_VERSION_RANGE.endVersion) -> Pair(version, false) // Is in range else -> null } } diff --git a/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactHelperTest.kt b/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactHelperTest.kt index cd061a2473a..367e2a31a97 100644 --- a/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactHelperTest.kt +++ b/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactHelperTest.kt @@ -101,6 +101,7 @@ class ArtifactHelperTest { tempDir.resolve("1.0.0").createDirectories() tempDir.resolve("1.0.1").createDirectories() tempDir.resolve("1.0.2").createDirectories() + manifestVersionRanges = SupportedManifestVersionRange( startVersion = SemVer("1.0.0", 1, 0, 0), endVersion = SemVer("2.0.0", 2, 0, 0) @@ -112,6 +113,21 @@ class ArtifactHelperTest { assertThat(actualResult.first().first.fileName.toString()).isEqualTo("1.0.2") } + @Test + fun `getAllLocalLspArtifactsWithinManifestRange does not return end major version path`() { + tempDir.resolve("1.0.0").createDirectories() + tempDir.resolve("2.0.0").createDirectories() + manifestVersionRanges = SupportedManifestVersionRange( + startVersion = SemVer("1.0.0", 1, 0, 0), + endVersion = SemVer("2.0.0", 2, 0, 0) + ) + + val actualResult = artifactHelper.getAllLocalLspArtifactsWithinManifestRange(manifestVersionRanges) + assertThat(actualResult).isNotNull() + assertThat(actualResult.size).isEqualTo(1) + assertThat(actualResult.first().first.fileName.toString()).isNotEqualTo("2.0.0") + } + @Test fun `getExistingLspArtifacts should find all the artifacts`() { val version1Dir = tempDir.resolve("1.0.0").apply { toFile().mkdirs() } diff --git a/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactManagerTest.kt b/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactManagerTest.kt index e16f102fbc6..b97625e994e 100644 --- a/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactManagerTest.kt +++ b/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ArtifactManagerTest.kt @@ -76,6 +76,13 @@ class ArtifactManagerTest { .hasFieldOrPropertyWithValue("errorCode", LspException.ErrorCode.NO_COMPATIBLE_LSP_VERSION) } + @Test + fun `getLSPVersionsFromManifestWithSpecifiedRange excludes end major version`() = runTest { + val newManifest = Manifest(versions = listOf(Version(serverVersion = "2.0.0"))) + val result = artifactManager.getLSPVersionsFromManifestWithSpecifiedRange(newManifest) + assertThat(result.inRangeVersions).isEmpty() + } + @Test fun `fetch artifact if inRangeVersions are not available should fallback to local lsp`() = runTest { val expectedResult = listOf(Pair(tempDir, SemVer("1.0.0", 1, 0, 0)))