@@ -46,262 +46,111 @@ const noDebugSessionInterval: number = 100
46
46
/** Go can't handle API tests yet */
47
47
const skipLanguagesOnApi = [ 'go' ]
48
48
49
- interface TestScenario {
50
- displayName : string
51
- runtime : Runtime
52
- baseImage ?: string
49
+ interface TestScenarioDefaults {
53
50
path : string
54
51
debugSessionType : string
55
52
language : Language
56
53
dependencyManager : DependencyManager
57
54
/** Minimum vscode version required by the relevant third-party extension. */
58
55
vscodeMinimum : string
59
56
}
57
+ type TestScenario = {
58
+ displayName : string
59
+ runtime : Runtime
60
+ baseImage ?: string
61
+ } & TestScenarioDefaults
62
+
63
+ const nodeDefaults = {
64
+ path : 'hello-world/app.mjs' ,
65
+ debugSessionType : 'pwa-node' ,
66
+ dependencyManager : 'npm' as DependencyManager ,
67
+ language : 'javascript' as Language ,
68
+ vscodeMinimum : '1.50.0' ,
69
+ }
70
+ // https://github.com/microsoft/vscode-python/blob/main/package.json
71
+ const pythonDefaults = {
72
+ path : 'hello_world/app.py' ,
73
+ debugSessionType : 'python' ,
74
+ dependencyManager : 'pip' as DependencyManager ,
75
+ language : 'python' as Language ,
76
+ vscodeMinimum : '1.77.0' ,
77
+ }
78
+
79
+ const javaDefaults = {
80
+ path : 'HelloWorldFunction/src/main/java/helloworld/App.java' ,
81
+ debugSessionType : 'java' ,
82
+ dependencyManager : 'gradle' as DependencyManager ,
83
+ language : 'java' as Language ,
84
+ vscodeMinimum : '1.50.0' ,
85
+ }
60
86
87
+ const dotnetDefaults = {
88
+ path : 'src/HelloWorld/Function.cs' ,
89
+ debugSessionType : 'coreclr' ,
90
+ language : 'csharp' as Language ,
91
+ dependencyManager : 'cli-package' as DependencyManager ,
92
+ vscodeMinimum : '1.80.0' ,
93
+ }
94
+
95
+ const defaults : Record < Runtime , TestScenarioDefaults > = {
96
+ nodejs : nodeDefaults ,
97
+ java : javaDefaults ,
98
+ python : pythonDefaults ,
99
+ dotnet : dotnetDefaults ,
100
+ }
101
+
102
+ function generateScenario (
103
+ runtime : Runtime ,
104
+ version : string ,
105
+ options : Partial < TestScenario & { sourceTag : string } > = { } ,
106
+ fromImage : boolean = false
107
+ ) : TestScenario {
108
+ if ( fromImage && ! options . baseImage ) {
109
+ throw new Error ( 'baseImage property must be specified when testing from image' )
110
+ }
111
+ const { sourceTag, ...defaultOverride } = options
112
+ const source = `(${ options . sourceTag ? `${ options . sourceTag } ` : '' } ${ fromImage ? 'Image' : 'ZIP' } )`
113
+ const fullName = `${ runtime } ${ version } `
114
+ return {
115
+ runtime : fullName ,
116
+ displayName : `${ fullName } ${ source } ` ,
117
+ ...defaults [ runtime ] ,
118
+ ...defaultOverride ,
119
+ }
120
+ }
61
121
// When testing additional runtimes, consider pulling the docker container in buildspec\linuxIntegrationTests.yml
62
122
// to reduce the chance of automated tests timing out.
123
+
63
124
const scenarios : TestScenario [ ] = [
64
125
// zips
65
- {
66
- runtime : 'nodejs18.x' ,
67
- displayName : 'nodejs18.x (ZIP)' ,
68
- path : 'hello-world/app.mjs' ,
69
- debugSessionType : 'pwa-node' ,
70
- language : 'javascript' ,
71
- dependencyManager : 'npm' ,
72
- vscodeMinimum : '1.50.0' ,
73
- } ,
74
- {
75
- runtime : 'nodejs20.x' ,
76
- displayName : 'nodejs20.x (ZIP)' ,
77
- path : 'hello-world/app.mjs' ,
78
- debugSessionType : 'pwa-node' ,
79
- language : 'javascript' ,
80
- dependencyManager : 'npm' ,
81
- vscodeMinimum : '1.50.0' ,
82
- } ,
83
- {
84
- runtime : 'nodejs22.x' ,
85
- displayName : 'nodejs22.x (ZIP)' ,
86
- path : 'hello-world/app.mjs' ,
87
- debugSessionType : 'pwa-node' ,
88
- language : 'javascript' ,
89
- dependencyManager : 'npm' ,
90
- vscodeMinimum : '1.78.0' ,
91
- } ,
92
- {
93
- runtime : 'python3.10' ,
94
- displayName : 'python 3.10 (ZIP)' ,
95
- path : 'hello_world/app.py' ,
96
- debugSessionType : 'python' ,
97
- language : 'python' ,
98
- dependencyManager : 'pip' ,
99
- // https://github.com/microsoft/vscode-python/blob/main/package.json
100
- vscodeMinimum : '1.77.0' ,
101
- } ,
102
- {
103
- runtime : 'python3.11' ,
104
- displayName : 'python 3.11 (ZIP)' ,
105
- path : 'hello_world/app.py' ,
106
- debugSessionType : 'python' ,
107
- language : 'python' ,
108
- dependencyManager : 'pip' ,
109
- // https://github.com/microsoft/vscode-python/blob/main/package.json
110
- vscodeMinimum : '1.78.0' ,
111
- } ,
112
- {
113
- runtime : 'python3.12' ,
114
- displayName : 'python 3.12 (ZIP)' ,
115
- path : 'hello_world/app.py' ,
116
- debugSessionType : 'python' ,
117
- language : 'python' ,
118
- dependencyManager : 'pip' ,
119
- // https://github.com/microsoft/vscode-python/blob/main/package.json
120
- vscodeMinimum : '1.78.0' ,
121
- } ,
122
- {
123
- runtime : 'python3.13' ,
124
- displayName : 'python 3.13 (ZIP)' ,
125
- path : 'hello_world/app.py' ,
126
- debugSessionType : 'python' ,
127
- language : 'python' ,
128
- dependencyManager : 'pip' ,
129
- // https://github.com/microsoft/vscode-python/blob/main/package.json
130
- vscodeMinimum : '1.78.0' ,
131
- } ,
132
- {
133
- runtime : 'dotnet6' ,
134
- displayName : 'dotnet6 (ZIP)' ,
135
- path : 'src/HelloWorld/Function.cs' ,
136
- debugSessionType : 'coreclr' ,
137
- language : 'csharp' ,
138
- dependencyManager : 'cli-package' ,
139
- vscodeMinimum : '1.80.0' ,
140
- } ,
141
- {
142
- runtime : 'java8.al2' ,
143
- displayName : 'java8.al2 (Maven ZIP)' ,
144
- path : 'HelloWorldFunction/src/main/java/helloworld/App.java' ,
145
- debugSessionType : 'java' ,
146
- language : 'java' ,
147
- dependencyManager : 'maven' ,
148
- vscodeMinimum : '1.50.0' ,
149
- } ,
150
- {
151
- runtime : 'java11' ,
152
- displayName : 'java11 (Gradle ZIP)' ,
153
- path : 'HelloWorldFunction/src/main/java/helloworld/App.java' ,
154
- debugSessionType : 'java' ,
155
- language : 'java' ,
156
- dependencyManager : 'gradle' ,
157
- vscodeMinimum : '1.50.0' ,
158
- } ,
159
- {
160
- runtime : 'java17' ,
161
- displayName : 'java11 (Gradle ZIP)' ,
162
- path : 'HelloWorldFunction/src/main/java/helloworld/App.java' ,
163
- debugSessionType : 'java' ,
164
- language : 'java' ,
165
- dependencyManager : 'gradle' ,
166
- vscodeMinimum : '1.50.0' ,
167
- } ,
168
- // {
169
- // runtime: 'go1.x',
170
- // displayName: 'go1.x (ZIP)',
171
- // path: 'hello-world/main.go',
172
- // debugSessionType: 'delve',
173
- // language: 'go',
174
- // dependencyManager: 'mod',
175
- // // https://github.com/golang/vscode-go/blob/master/package.json
176
- // vscodeMinimum: '1.67.0',
177
- // },
178
-
126
+ generateScenario ( 'nodejs' , '18.x' ) ,
127
+ generateScenario ( 'nodejs' , '20.x' ) ,
128
+ generateScenario ( 'nodejs' , '22.x' , { vscodeMinimum : '1.78.0' } ) ,
129
+ generateScenario ( 'python' , '3.10' ) ,
130
+ generateScenario ( 'python' , '3.11' , { vscodeMinimum : '1.78.0' } ) ,
131
+ generateScenario ( 'python' , '3.12' , { vscodeMinimum : '1.78.0' } ) ,
132
+ generateScenario ( 'python' , '3.13' , { vscodeMinimum : '1.78.0' } ) ,
133
+ generateScenario ( 'dotnet' , '6' ) ,
134
+ generateScenario ( 'java' , '8.al2' , { sourceTag : 'Maven' , dependencyManager : 'maven' } ) ,
135
+ generateScenario ( 'java' , '11' , { sourceTag : 'Gradle' } ) ,
136
+ generateScenario ( 'java' , '17' , { sourceTag : 'Gradle' } ) ,
179
137
// images
180
- {
181
- runtime : 'nodejs18.x' ,
182
- displayName : 'nodejs18.x (Image)' ,
183
- baseImage : 'amazon/nodejs18.x-base' ,
184
- path : 'hello-world/app.mjs' ,
185
- debugSessionType : 'pwa-node' ,
186
- language : 'javascript' ,
187
- dependencyManager : 'npm' ,
188
- vscodeMinimum : '1.50.0' ,
189
- } ,
190
- {
191
- runtime : 'nodejs20.x' ,
192
- displayName : 'nodejs20.x (Image)' ,
193
- baseImage : 'amazon/nodejs20.x-base' ,
194
- path : 'hello-world/app.mjs' ,
195
- debugSessionType : 'pwa-node' ,
196
- language : 'javascript' ,
197
- dependencyManager : 'npm' ,
198
- vscodeMinimum : '1.50.0' ,
199
- } ,
200
- {
201
- runtime : 'nodejs22.x' ,
202
- displayName : 'nodejs22.x (Image)' ,
203
- baseImage : 'amazon/nodejs22.x-base' ,
204
- path : 'hello-world/app.mjs' ,
205
- debugSessionType : 'pwa-node' ,
206
- language : 'javascript' ,
207
- dependencyManager : 'npm' ,
208
- vscodeMinimum : '1.78.0' ,
209
- } ,
210
- {
211
- runtime : 'python3.10' ,
212
- displayName : 'python 3.10 (ZIP)' ,
213
- baseImage : 'amazon/python3.10-base' ,
214
- path : 'hello_world/app.py' ,
215
- debugSessionType : 'python' ,
216
- language : 'python' ,
217
- dependencyManager : 'pip' ,
218
- // https://github.com/microsoft/vscode-python/blob/main/package.json
219
- vscodeMinimum : '1.77.0' ,
220
- } ,
221
- {
222
- runtime : 'python3.11' ,
223
- displayName : 'python 3.11 (ZIP)' ,
224
- baseImage : 'amazon/python3.11-base' ,
225
- path : 'hello_world/app.py' ,
226
- debugSessionType : 'python' ,
227
- language : 'python' ,
228
- dependencyManager : 'pip' ,
229
- // https://github.com/microsoft/vscode-python/blob/main/package.json
230
- vscodeMinimum : '1.78.0' ,
231
- } ,
232
- {
233
- runtime : 'python3.12' ,
234
- displayName : 'python 3.12 (ZIP)' ,
235
- baseImage : 'amazon/python3.12-base' ,
236
- path : 'hello_world/app.py' ,
237
- debugSessionType : 'python' ,
238
- language : 'python' ,
239
- dependencyManager : 'pip' ,
240
- // https://github.com/microsoft/vscode-python/blob/main/package.json
241
- vscodeMinimum : '1.78.0' ,
242
- } ,
243
- {
244
- runtime : 'python3.13' ,
245
- displayName : 'python 3.13 (ZIP)' ,
246
- baseImage : 'amazon/python3.13-base' ,
247
- path : 'hello_world/app.py' ,
248
- debugSessionType : 'python' ,
249
- language : 'python' ,
250
- dependencyManager : 'pip' ,
251
- // https://github.com/microsoft/vscode-python/blob/main/package.json
252
- vscodeMinimum : '1.78.0' ,
253
- } ,
254
- // {
255
- // runtime: 'go1.x',
256
- // displayName: 'go1.x (Image)',
257
- // baseImage: 'amazon/go1.x-base',
258
- // path: 'hello-world/main.go',
259
- // debugSessionType: 'delve',
260
- // language: 'go',
261
- // dependencyManager: 'mod',
262
- // // https://github.com/golang/vscode-go/blob/master/package.json
263
- // vscodeMinimum: '1.67.0',
264
- // },
265
- {
266
- runtime : 'java8.al2' ,
267
- displayName : 'java8.al2 (Gradle Image)' ,
268
- path : 'HelloWorldFunction/src/main/java/helloworld/App.java' ,
269
- baseImage : 'amazon/java8.al2-base' ,
270
- debugSessionType : 'java' ,
271
- language : 'java' ,
272
- dependencyManager : 'gradle' ,
273
- vscodeMinimum : '1.50.0' ,
274
- } ,
275
- {
276
- runtime : 'java11' ,
277
- displayName : 'java11 (Maven Image)' ,
278
- path : 'HelloWorldFunction/src/main/java/helloworld/App.java' ,
279
- baseImage : 'amazon/java11-base' ,
280
- debugSessionType : 'java' ,
281
- language : 'java' ,
282
- dependencyManager : 'maven' ,
283
- vscodeMinimum : '1.50.0' ,
284
- } ,
285
- {
286
- runtime : 'java17' ,
287
- displayName : 'java17 (Maven Image)' ,
288
- path : 'HelloWorldFunction/src/main/java/helloworld/App.java' ,
289
- baseImage : 'amazon/java17-base' ,
290
- debugSessionType : 'java' ,
291
- language : 'java' ,
292
- dependencyManager : 'maven' ,
293
- vscodeMinimum : '1.50.0' ,
294
- } ,
295
- {
296
- runtime : 'dotnet6' ,
297
- displayName : 'dotnet6 (Image)' ,
298
- path : 'src/HelloWorld/Function.cs' ,
299
- baseImage : 'amazon/dotnet6-base' ,
300
- debugSessionType : 'coreclr' ,
301
- language : 'csharp' ,
302
- dependencyManager : 'cli-package' ,
303
- vscodeMinimum : '1.80.0' ,
304
- } ,
138
+ generateScenario ( 'nodejs' , '18.x' , { baseImage : 'amazon/nodejs18.x-base' } , true ) ,
139
+ generateScenario ( 'nodejs' , '20.x' , { baseImage : 'amazon/nodejs20.x-base' } , true ) ,
140
+ generateScenario ( 'nodejs' , '22.x' , { baseImage : 'amazon/nodejs22.x-base' , vscodeMinimum : '1.78.0' } , true ) ,
141
+ generateScenario ( 'python' , '3.10' , { baseImage : 'amazon/python3.10-base' } , true ) ,
142
+ generateScenario ( 'python' , '3.11' , { baseImage : 'amazon/python3.11-base' , vscodeMinimum : '1.78.0' } , true ) ,
143
+ generateScenario ( 'python' , '3.12' , { baseImage : 'amazon/python3.12-base' , vscodeMinimum : '1.78.0' } , true ) ,
144
+ generateScenario ( 'python' , '3.13' , { baseImage : 'amazon/python3.13-base' , vscodeMinimum : '1.78.0' } , true ) ,
145
+ generateScenario ( 'dotnet' , '6' , { baseImage : 'amazon/dotnet6-base' } , true ) ,
146
+ generateScenario (
147
+ 'java' ,
148
+ '.al2' ,
149
+ { baseImage : 'amazon/java8.al2-base' , sourceTag : 'Maven' , dependencyManager : 'maven' } ,
150
+ true
151
+ ) ,
152
+ generateScenario ( 'java' , '11' , { baseImage : 'amazon/java11-base' , sourceTag : 'Gradle' } , true ) ,
153
+ generateScenario ( 'java' , '17' , { baseImage : 'amazon/java17-base' , sourceTag : 'Gradle' } , true ) ,
305
154
]
306
155
307
156
async function openSamAppFile ( applicationPath : string ) : Promise < vscode . Uri > {
0 commit comments