Skip to content

Commit 0270722

Browse files
authored
Default programing model languages to newest model (#4427)
* Default programing model langauges to newest model * Fix tests to skip model question * Fix more tests * Try some more fix * Revert main.js * Delete bindings test because Node V4 model does not have function.json * Remove function.json from expected validation options * Look for v4 trigger style instead of v3 * Look in src folder * Add expected settings from language model * Add expected modelVersion
1 parent 5bfcf28 commit 0270722

File tree

6 files changed

+26
-165
lines changed

6 files changed

+26
-165
lines changed

src/commands/createNewProject/ProgrammingModelStep.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ export class ProgrammingModelStep extends AzureWizardPromptStep<IProjectWizardCo
5959
// auto-select the default model if there is only one
6060
if (this._options.models.length === 1) {
6161
context.languageModel = this._options.models[0].data;
62+
} else if (this._options.defaultModel !== undefined) {
63+
context.languageModel = this._options.defaultModel;
6264
}
6365
}
6466

test/addBinding.test.ts

Lines changed: 0 additions & 86 deletions
This file was deleted.

test/api.test.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { extensionId, FuncVersion, nonNullValue, ProjectLanguage, registerOnActi
1111
// eslint-disable-next-line no-restricted-imports
1212
import { type AzureFunctionsExtensionApi } from '../src/vscode-azurefunctions.api';
1313
import { getTestWorkspaceFolder, testFolderPath } from './global.test';
14-
import { getCSharpValidateOptions, getJavaScriptValidateOptions, NodeModelInput, NodeModelVersion, validateProject, type IValidateProjectOptions } from './project/validateProject';
14+
import { getCSharpValidateOptions, getJavaScriptValidateOptions, NodeModelVersion, validateProject, type IValidateProjectOptions } from './project/validateProject';
1515

1616
suite(`AzureFunctionsExtensionApi`, () => {
1717
let api: AzureFunctionsExtensionApi;
@@ -28,7 +28,7 @@ suite(`AzureFunctionsExtensionApi`, () => {
2828
const projectSubpath = 'api';
2929
const folderPath: string = path.join(workspaceFolder, projectSubpath);
3030

31-
await runWithInputs('api.createFunction', [language, NodeModelInput[NodeModelVersion.v3], functionName], registerOnActionStartHandler, async () => {
31+
await runWithInputs('api.createFunction', [language, functionName], registerOnActionStartHandler, async () => {
3232
await api.createFunction({
3333
folderPath,
3434
suppressOpenFolder: true,
@@ -39,10 +39,9 @@ suite(`AzureFunctionsExtensionApi`, () => {
3939
});
4040
});
4141

42-
const validateOptions: IValidateProjectOptions = getJavaScriptValidateOptions(true, undefined, projectSubpath, workspaceFolder);
42+
const validateOptions: IValidateProjectOptions = getJavaScriptValidateOptions(true, undefined, projectSubpath, workspaceFolder, NodeModelVersion.v4);
4343
validateOptions.expectedPaths.push(
44-
path.join(projectSubpath, functionName, 'index.js'),
45-
path.join(projectSubpath, functionName, 'function.json'),
44+
path.join(projectSubpath, 'src', 'functions', `${functionName}.js`),
4645
path.join(projectSubpath, 'package.json')
4746
);
4847
// Exclude .git because the test workspace folders are already inside a git repo so we don't do git init.
@@ -55,7 +54,7 @@ suite(`AzureFunctionsExtensionApi`, () => {
5554
const language: string = ProjectLanguage.JavaScript;
5655
const folderPath: string = path.join(testFolderPath, language + 'createFunctionApi2');
5756

58-
await runWithInputs('api.createFunction', [language, NodeModelInput[NodeModelVersion.v3]], registerOnActionStartHandler, async () => {
57+
await runWithInputs('api.createFunction', [language], registerOnActionStartHandler, async () => {
5958
await api.createFunction({
6059
folderPath,
6160
functionName,
@@ -66,10 +65,9 @@ suite(`AzureFunctionsExtensionApi`, () => {
6665
});
6766
});
6867

69-
const validateOptions: IValidateProjectOptions = getJavaScriptValidateOptions(true);
68+
const validateOptions: IValidateProjectOptions = getJavaScriptValidateOptions(true, undefined, undefined, undefined, NodeModelVersion.v4);
7069
validateOptions.expectedPaths.push(
71-
path.join(functionName, 'index.js'),
72-
path.join(functionName, 'function.json')
70+
path.join('src', 'functions', `${functionName}.js`)
7371
);
7472
await validateProject(folderPath, validateOptions);
7573
});
@@ -87,7 +85,9 @@ suite(`AzureFunctionsExtensionApi`, () => {
8785
functionName,
8886
templateId: 'HttpTrigger',
8987
languageFilter: /^C\#$/i,
90-
functionSettings: { authLevel: 'anonymous' },
88+
functionSettings: {
89+
authLevel: 'anonymous'
90+
},
9191
targetFramework: ['net8.0', 'net7.0', 'net6.0']
9292
});
9393
});

test/nightly/createProjectAndDeploy.test.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import * as vscode from 'vscode';
1313
import { FuncVersion, ProjectLanguage, copyFunctionUrl, createGenericClient, createNewProjectInternal, deployProductionSlot, getRandomAlphanumericString, getRandomHexString, nonNullProp } from '../../extension.bundle';
1414
import { addParallelSuite, runInSeries, type ParallelTest } from '../addParallelSuite';
1515
import { getTestWorkspaceFolder } from '../global.test';
16-
import { NodeModelInput, NodeModelVersion, PythonModelInput, PythonModelVersion, defaultTestFuncVersion, getCSharpValidateOptions, getJavaScriptValidateOptions, getPowerShellValidateOptions, getPythonValidateOptions, getTypeScriptValidateOptions, validateProject, type IValidateProjectOptions } from '../project/validateProject';
16+
import { NodeModelVersion, PythonModelVersion, defaultTestFuncVersion, getCSharpValidateOptions, getJavaScriptValidateOptions, getPowerShellValidateOptions, getPythonValidateOptions, getTypeScriptValidateOptions, validateProject, type IValidateProjectOptions } from '../project/validateProject';
1717
import { getRotatingAuthLevel, getRotatingLocation, getRotatingNodeVersion, getRotatingPythonVersion } from './getRotatingValue';
1818
import { resourceGroupsToDelete } from './global.nightly.test';
1919

@@ -23,19 +23,16 @@ interface CreateProjectAndDeployTestCase extends ICreateProjectAndDeployOptions
2323
}
2424

2525
const testCases: CreateProjectAndDeployTestCase[] = [
26-
{ title: 'JavaScript (Model V3)', ...getJavaScriptValidateOptions(true), createProjectInputs: [NodeModelInput[NodeModelVersion.v3]], deployInputs: [getRotatingNodeVersion(), TestInput.UseDefaultValue /* instance mem size*/, TestInput.UseDefaultValue /*max instance*/], languageModelVersion: NodeModelVersion.v3 },
27-
{ title: 'JavaScript (Model V4)', ...getJavaScriptValidateOptions(true, undefined, undefined, undefined, NodeModelVersion.v4), createProjectInputs: [NodeModelInput[NodeModelVersion.v4]], deployInputs: [getRotatingNodeVersion(), TestInput.UseDefaultValue /* instance mem size*/, TestInput.UseDefaultValue /*max instance*/], languageModelVersion: NodeModelVersion.v4 },
28-
{ title: 'TypeScript (Model V3)', ...getTypeScriptValidateOptions(), createProjectInputs: [NodeModelInput[NodeModelVersion.v3]], deployInputs: [getRotatingNodeVersion(), TestInput.UseDefaultValue /* instance mem size*/, TestInput.UseDefaultValue /*max instance*/], languageModelVersion: NodeModelVersion.v3 },
29-
{ title: 'TypeScript (Model V4)', ...getTypeScriptValidateOptions({ modelVersion: NodeModelVersion.v4 }), createProjectInputs: [NodeModelInput[NodeModelVersion.v4]], deployInputs: [getRotatingNodeVersion(), TestInput.UseDefaultValue /* instance mem size*/, TestInput.UseDefaultValue /*max instance*/], languageModelVersion: NodeModelVersion.v4 },
26+
{ title: 'JavaScript', ...getJavaScriptValidateOptions(true, undefined, undefined, undefined), deployInputs: [getRotatingNodeVersion(), TestInput.UseDefaultValue /* instance mem size*/, TestInput.UseDefaultValue /*max instance*/], languageModelVersion: NodeModelVersion.v4 },
27+
{ title: 'TypeScript', ...getTypeScriptValidateOptions(), deployInputs: [getRotatingNodeVersion(), TestInput.UseDefaultValue /* instance mem size*/, TestInput.UseDefaultValue /*max instance*/], languageModelVersion: NodeModelVersion.v4 },
3028
// Temporarily disable Ballerina tests until we can install Ballerina on the new pipelines
3129
// https://github.com/microsoft/vscode-azurefunctions/issues/4210
3230
// { title: 'Ballerina', ...getBallerinaValidateOptions(), createProjectInputs: ["JVM"], deployInputs: [/java.*11/i] },
3331
{ title: 'C# .NET 8', ...getCSharpValidateOptions('net8.0', FuncVersion.v4), createProjectInputs: [/net.*8/i], deployInputs: [/net.*8/i, TestInput.UseDefaultValue /* instance mem size*/, TestInput.UseDefaultValue /*max instance*/], createFunctionInputs: ['Company.Function'] },
3432
// Temporarily disable .NET 9 test for now; it seems to break after running clean release (functions)
3533
// { title: 'C# .NET 9', ...getCSharpValidateOptions('net9.0', FuncVersion.v4), createProjectInputs: [/net.*9/i], deployInputs: [/net.*9/i, TestInput.UseDefaultValue /* instance mem size*/, TestInput.UseDefaultValue /*max instance*/], createFunctionInputs: ['Company.Function'] },
3634
{ title: 'PowerShell', ...getPowerShellValidateOptions(), deployInputs: [/powershell.*7.4/i, TestInput.UseDefaultValue /* instance mem size*/, TestInput.UseDefaultValue /*max instance*/] },
37-
{ title: 'Python (Model V1)', ...getPythonValidateOptions('.venv'), createProjectInputs: [PythonModelInput[PythonModelVersion.v1], /py/], deployInputs: [getRotatingPythonVersion(), TestInput.UseDefaultValue /* instance mem size*/, TestInput.UseDefaultValue /*max instance*/], languageModelVersion: PythonModelVersion.v1 },
38-
{ title: 'Python (Model V2)', ...getPythonValidateOptions('.venv', undefined, PythonModelVersion.v2), createProjectInputs: [PythonModelInput[PythonModelVersion.v2], /py/], deployInputs: [getRotatingPythonVersion(), TestInput.UseDefaultValue /* instance mem size*/, TestInput.UseDefaultValue /*max instance*/], languageModelVersion: PythonModelVersion.v2 },
35+
{ title: 'Python', ...getPythonValidateOptions('.venv', undefined), createProjectInputs: [/py/], deployInputs: [getRotatingPythonVersion(), TestInput.UseDefaultValue /* instance mem size*/, TestInput.UseDefaultValue /*max instance*/], languageModelVersion: PythonModelVersion.v2 },
3936
]
4037

4138
const parallelTests: ParallelTest[] = [];

test/project/createNewProject.test.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { FuncVersion, JavaBuildTool, ProjectLanguage, TemplateSource } from '../
88
import { addParallelSuite, type ParallelTest } from '../addParallelSuite';
99
import { backupLatestTemplateSources, runForTemplateSource, shouldSkipVersion } from '../global.test';
1010
import { createAndValidateProject, type ICreateProjectTestOptions } from './createAndValidateProject';
11-
import { getCSharpValidateOptions, getCustomValidateOptions, getDotnetScriptValidateOptions, getJavaScriptValidateOptions, getPowerShellValidateOptions, getTypeScriptValidateOptions, NodeModelInput, NodeModelVersion } from './validateProject';
11+
import { getCSharpValidateOptions, getCustomValidateOptions, getDotnetScriptValidateOptions, getJavaScriptValidateOptions, getPowerShellValidateOptions, getTypeScriptValidateOptions, NodeModelVersion } from './validateProject';
1212

1313
interface CreateProjectTestCase extends ICreateProjectTestOptions {
1414
description?: string;
@@ -24,10 +24,8 @@ const testCases: CreateProjectTestCase[] = [
2424
{ ...getDotnetScriptValidateOptions(ProjectLanguage.CSharpScript, FuncVersion.v4), isHiddenLanguage: true },
2525
{ ...getDotnetScriptValidateOptions(ProjectLanguage.FSharpScript, FuncVersion.v4), isHiddenLanguage: true },
2626
// Node tests
27-
{ ...getJavaScriptValidateOptions(true /* hasPackageJson */, FuncVersion.v4), inputs: [NodeModelInput[NodeModelVersion.v3]], languageModelVersion: NodeModelVersion.v3 },
28-
{ ...getJavaScriptValidateOptions(true /* hasPackageJson */, FuncVersion.v4, undefined, undefined, NodeModelVersion.v4), inputs: [NodeModelInput[NodeModelVersion.v4]], languageModelVersion: NodeModelVersion.v4 },
29-
{ ...getTypeScriptValidateOptions({ version: FuncVersion.v4 }), inputs: [NodeModelInput[NodeModelVersion.v3]], languageModelVersion: NodeModelVersion.v3 },
30-
{ ...getTypeScriptValidateOptions({ version: FuncVersion.v4, modelVersion: NodeModelVersion.v4 }), inputs: [NodeModelInput[NodeModelVersion.v4]], languageModelVersion: NodeModelVersion.v4 },
27+
{ ...getJavaScriptValidateOptions(true /* hasPackageJson */, FuncVersion.v4, undefined, undefined, NodeModelVersion.v4), inputs: [], languageModelVersion: NodeModelVersion.v4 },
28+
{ ...getTypeScriptValidateOptions({ version: FuncVersion.v4, modelVersion: NodeModelVersion.v4 }), inputs: [], languageModelVersion: NodeModelVersion.v4 },
3129
// PowerShell tests
3230
{ ...getPowerShellValidateOptions(FuncVersion.v4) },
3331
// Custom language tests

0 commit comments

Comments
 (0)