Skip to content

Commit 2c19cf4

Browse files
committed
fetch versions from manifest file
1 parent 90d23b1 commit 2c19cf4

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

packages/core/src/amazonq/lsp/workspaceInstaller.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { getNodeExecutableName } from '../../shared/lsp/utils/platform'
1212
import { fs } from '../../shared/fs/fs'
1313
import { partition } from '../../shared/utilities/tsUtils'
1414

15-
const manifestUrl = 'https://aws-toolkit-language-servers.amazonaws.com/q-context/manifest.json'
15+
export const lspManifestUrl = 'https://aws-toolkit-language-servers.amazonaws.com/q-context/manifest.json'
1616
// this LSP client in Q extension is only going to work with these LSP server versions
1717
export const supportedLspServerVersions = '0.1.32'
1818
export const lspWorkspaceName = 'AmazonQ-Workspace'
@@ -31,7 +31,7 @@ export class WorkspaceLSPResolver implements LspResolver {
3131
}
3232

3333
async resolve(): Promise<LspResolution> {
34-
const manifest = await new ManifestResolver(manifestUrl, lspWorkspaceName).resolve()
34+
const manifest = await new ManifestResolver(lspManifestUrl, lspWorkspaceName).resolve()
3535
const installationResult = await new LanguageServerResolver(
3636
manifest,
3737
lspWorkspaceName,

packages/core/src/testInteg/amazonq/lsp/workspaceInstaller.test.ts

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
import { Range } from 'semver'
6+
import { Range, sort } from 'semver'
77
import assert from 'assert'
8-
import { WorkspaceLSPResolver } from '../../../amazonq/lsp/workspaceInstaller'
8+
import { lspWorkspaceName, lspManifestUrl, WorkspaceLSPResolver } from '../../../amazonq/lsp/workspaceInstaller'
99
import { fs } from '../../../shared/fs/fs'
1010
import path from 'path'
1111
import * as sinon from 'sinon'
1212
import { langugeServerDefaultDir } from '../../../shared/lsp/lspResolver'
13+
import { ManifestResolver } from '../../../shared'
1314

1415
async function installVersion(version: string, cleanUp: boolean = false) {
1516
const resolver = new WorkspaceLSPResolver({ versionRange: new Range(version), cleanUp: cleanUp })
@@ -30,32 +31,37 @@ async function testInstallVersions(versions: string[]) {
3031
}
3132

3233
describe('workspaceInstaller', function () {
34+
let testVersions: string[]
3335
before(async function () {
3436
await fs.delete(langugeServerDefaultDir, { force: true, recursive: true })
37+
const manifest = await new ManifestResolver(lspManifestUrl, lspWorkspaceName).resolve()
38+
testVersions = sort(
39+
manifest.versions
40+
.filter((v) => !v.isDelisted)
41+
.slice(0, 4)
42+
.map((v) => v.serverVersion)
43+
)
3544
})
3645

3746
it('removes all but the latest two versions', async function () {
38-
const versionsToInstall = ['0.1.25', '0.1.26', '0.1.27', '0.1.28']
39-
const versionsDownloaded = await testInstallVersions(versionsToInstall)
47+
const versionsDownloaded = await testInstallVersions(testVersions)
4048

4149
assert.strictEqual(versionsDownloaded.length, 2)
42-
assert.ok(versionsDownloaded.includes('0.1.28'))
43-
assert.ok(versionsDownloaded.includes('0.1.29'))
50+
assert.ok(versionsDownloaded.includes(testVersions[testVersions.length - 1]))
51+
assert.ok(versionsDownloaded.includes(testVersions[testVersions.length - 2]))
4452
})
4553

4654
it('removes delisted versions then keeps 2 remaining most recent', async function () {
4755
const isDelisted = sinon.stub(WorkspaceLSPResolver.prototype, 'isDelisted' as any)
4856
isDelisted.callsFake((_manifestVersions, version) => {
49-
return version === '0.1.27' || version === '0.1.29'
57+
return version === testVersions[testVersions.length - 2]
5058
})
5159

52-
const versionsToInstall = ['0.1.25', '0.1.26', '0.1.27', '0.1.28']
53-
const versionsDownloaded = await testInstallVersions(versionsToInstall)
60+
const versionsDownloaded = await testInstallVersions(testVersions)
5461

55-
console.log(versionsDownloaded)
5662
assert.strictEqual(versionsDownloaded.length, 2)
57-
assert.ok(versionsDownloaded.includes('0.1.28'))
58-
assert.ok(versionsDownloaded.includes('0.1.26'))
63+
assert.ok(versionsDownloaded.includes(testVersions[testVersions.length - 1]))
64+
assert.ok(versionsDownloaded.includes(testVersions[testVersions.length - 3]))
5965
isDelisted.restore()
6066
})
6167
})

0 commit comments

Comments
 (0)