33 * SPDX-License-Identifier: Apache-2.0
44 */
55
6- import { Range } from 'semver'
6+ import { Range , sort } from 'semver'
77import assert from 'assert'
8- import { WorkspaceLSPResolver } from '../../../amazonq/lsp/workspaceInstaller'
8+ import { lspWorkspaceName , lspManifestUrl , WorkspaceLSPResolver } from '../../../amazonq/lsp/workspaceInstaller'
99import { fs } from '../../../shared/fs/fs'
1010import path from 'path'
1111import * as sinon from 'sinon'
1212import { langugeServerDefaultDir } from '../../../shared/lsp/lspResolver'
13+ import { ManifestResolver } from '../../../shared'
1314
1415async 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
3233describe ( '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