@@ -7,73 +7,104 @@ import assert from 'assert'
77import { DevSettings } from 'aws-core-vscode/shared'
88import sinon from 'sinon'
99import { defaultAmazonQLspConfig , getAmazonQLspConfig } from '../../../../src/lsp/config'
10+ import { LspConfig , getAmazonQWorkspaceLspConfig , defaultAmazonQWorkspaceLspConfig } from 'aws-core-vscode/amazonq'
1011
11- describe ( 'getAmazonQLspConfig' , ( ) => {
12- let sandbox : sinon . SinonSandbox
13- let serviceConfigStub : sinon . SinonStub
14- const settingConfig = {
15- manifestUrl : 'https://custom.url/manifest.json' ,
16- supportedVersions : '4.0.0' ,
17- id : 'AmazonQSetting' ,
18- locationOverride : '/custom/path' ,
19- }
12+ for ( const [ name , config , defaultConfig , setEnv , resetEnv ] of [
13+ [
14+ 'getAmazonQLspConfig' ,
15+ getAmazonQLspConfig ,
16+ defaultAmazonQLspConfig ,
17+ ( envConfig : LspConfig ) => {
18+ process . env . __AMAZONQLSP_MANIFEST_URL = envConfig . manifestUrl
19+ process . env . __AMAZONQLSP_SUPPORTED_VERSIONS = envConfig . supportedVersions
20+ process . env . __AMAZONQLSP_ID = envConfig . id
21+ process . env . __AMAZONQLSP_LOCATION_OVERRIDE = envConfig . locationOverride
22+ } ,
23+ ( ) => {
24+ delete process . env . __AMAZONQLSP_MANIFEST_URL
25+ delete process . env . __AMAZONQLSP_SUPPORTED_VERSIONS
26+ delete process . env . __AMAZONQLSP_ID
27+ delete process . env . __AMAZONQLSP_LOCATION_OVERRIDE
28+ } ,
29+ ] ,
30+ [
31+ 'getAmazonQWorkspaceLspConfig' ,
32+ getAmazonQWorkspaceLspConfig ,
33+ defaultAmazonQWorkspaceLspConfig ,
34+ ( envConfig : LspConfig ) => {
35+ process . env . __AMAZONQWORKSPACELSP_MANIFEST_URL = envConfig . manifestUrl
36+ process . env . __AMAZONQWORKSPACELSP_SUPPORTED_VERSIONS = envConfig . supportedVersions
37+ process . env . __AMAZONQWORKSPACELSP_ID = envConfig . id
38+ process . env . __AMAZONQWORKSPACELSP_LOCATION_OVERRIDE = envConfig . locationOverride
39+ } ,
40+ ( ) => {
41+ delete process . env . __AMAZONQWORKSPACELSP_MANIFEST_URL
42+ delete process . env . __AMAZONQWORKSPACELSP_SUPPORTED_VERSIONS
43+ delete process . env . __AMAZONQWORKSPACELSP_ID
44+ delete process . env . __AMAZONQWORKSPACELSP_LOCATION_OVERRIDE
45+ } ,
46+ ] ,
47+ ] as const ) {
48+ describe ( name , ( ) => {
49+ let sandbox : sinon . SinonSandbox
50+ let serviceConfigStub : sinon . SinonStub
51+ const settingConfig : LspConfig = {
52+ manifestUrl : 'https://custom.url/manifest.json' ,
53+ supportedVersions : '4.0.0' ,
54+ id : 'AmazonQSetting' ,
55+ locationOverride : '/custom/path' ,
56+ }
2057
21- beforeEach ( ( ) => {
22- sandbox = sinon . createSandbox ( )
58+ beforeEach ( ( ) => {
59+ sandbox = sinon . createSandbox ( )
2360
24- serviceConfigStub = sandbox . stub ( )
25- sandbox . stub ( DevSettings , 'instance' ) . get ( ( ) => ( {
26- getServiceConfig : serviceConfigStub ,
27- } ) )
28- } )
61+ serviceConfigStub = sandbox . stub ( )
62+ sandbox . stub ( DevSettings , 'instance' ) . get ( ( ) => ( {
63+ getServiceConfig : serviceConfigStub ,
64+ } ) )
65+ } )
2966
30- afterEach ( ( ) => {
31- sandbox . restore ( )
32- } )
67+ afterEach ( ( ) => {
68+ sandbox . restore ( )
69+ resetEnv ( )
70+ } )
3371
34- it ( 'uses default config' , ( ) => {
35- serviceConfigStub . returns ( { } )
36- const config = getAmazonQLspConfig ( )
37- assert . deepStrictEqual ( config , defaultAmazonQLspConfig )
38- } )
72+ it ( 'uses default config' , ( ) => {
73+ serviceConfigStub . returns ( { } )
74+ assert . deepStrictEqual ( config ( ) , defaultConfig )
75+ } )
3976
40- it ( 'overrides location' , ( ) => {
41- const locationOverride = '/custom/path/to/lsp'
42- serviceConfigStub . returns ( { locationOverride } )
77+ it ( 'overrides location' , ( ) => {
78+ const locationOverride = '/custom/path/to/lsp'
79+ serviceConfigStub . returns ( { locationOverride } )
4380
44- const config = getAmazonQLspConfig ( )
45- assert . deepStrictEqual ( config , {
46- ... defaultAmazonQLspConfig ,
47- locationOverride ,
81+ assert . deepStrictEqual ( config ( ) , {
82+ ... defaultConfig ,
83+ locationOverride ,
84+ } )
4885 } )
49- } )
50-
51- it ( 'overrides default settings' , ( ) => {
52- serviceConfigStub . returns ( settingConfig )
5386
54- const config = getAmazonQLspConfig ( )
55- assert . deepStrictEqual ( config , settingConfig )
56- } )
87+ it ( 'overrides default settings' , ( ) => {
88+ serviceConfigStub . returns ( settingConfig )
5789
58- it ( 'environment variable takes precedence over settings' , ( ) => {
59- const envConfig = {
60- manifestUrl : 'https://another-custom.url/manifest.json' ,
61- supportedVersions : '5.1.1' ,
62- id : 'AmazonQEnv' ,
63- locationOverride : '/some/new/custom/path' ,
64- }
90+ assert . deepStrictEqual ( config ( ) , settingConfig )
91+ } )
6592
66- process . env . __AMAZONQLSP_MANIFEST_URL = envConfig . manifestUrl
67- process . env . __AMAZONQLSP_SUPPORTED_VERSIONS = envConfig . supportedVersions
68- process . env . __AMAZONQLSP_ID = envConfig . id
69- process . env . __AMAZONQLSP_LOCATION_OVERRIDE = envConfig . locationOverride
93+ it ( 'environment variable takes precedence over settings' , ( ) => {
94+ const envConfig : LspConfig = {
95+ manifestUrl : 'https://another-custom.url/manifest.json' ,
96+ supportedVersions : '5.1.1' ,
97+ id : 'AmazonQEnv' ,
98+ locationOverride : '/some/new/custom/path' ,
99+ }
70100
71- serviceConfigStub . returns ( settingConfig )
101+ setEnv ( envConfig )
102+ serviceConfigStub . returns ( settingConfig )
72103
73- const config = getAmazonQLspConfig ( )
74- assert . deepStrictEqual ( config , {
75- ...defaultAmazonQLspConfig ,
76- ... envConfig ,
104+ assert . deepStrictEqual ( config ( ) , {
105+ ... defaultAmazonQLspConfig ,
106+ ...envConfig ,
107+ } )
77108 } )
78109 } )
79- } )
110+ }
0 commit comments