From b84858183a1d179820c43425593cf0d8d638974e Mon Sep 17 00:00:00 2001 From: msyyc <70930885+msyyc@users.noreply.github.com> Date: Fri, 6 Sep 2024 13:48:51 +0800 Subject: [PATCH 1/9] fix logic to create generated name for anonymous model --- .../src/public-utils.ts | 29 ++++++++++++------- .../test/types/multipart-types.test.ts | 2 ++ 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/packages/typespec-client-generator-core/src/public-utils.ts b/packages/typespec-client-generator-core/src/public-utils.ts index eacd7d9517..c4bab06005 100644 --- a/packages/typespec-client-generator-core/src/public-utils.ts +++ b/packages/typespec-client-generator-core/src/public-utils.ts @@ -18,7 +18,7 @@ import { listServices, resolveEncodedName, } from "@typespec/compiler"; -import { HttpOperation, getHttpOperation, isMetadata } from "@typespec/http"; +import { HttpOperation, getHttpOperation, getHttpPart, isMetadata } from "@typespec/http"; import { Version, getVersions } from "@typespec/versioning"; import { pascalCase } from "change-case"; import pluralize from "pluralize"; @@ -470,17 +470,24 @@ function getContextPath( if (currentType === expectedType) { result.push({ name: displayName, type: currentType }); return true; - } else if ( - currentType.kind === "Model" && - currentType.indexer && - currentType.properties.size === 0 && - ((currentType.indexer.key.name === "string" && currentType.name === "Record") || - currentType.indexer.key.name === "integer") - ) { - // handle array or dict - const dictOrArrayItemType: Type = currentType.indexer.value; - return dfsModelProperties(expectedType, dictOrArrayItemType, pluralize.singular(displayName)); } else if (currentType.kind === "Model") { + // Peel off HttpPart to get "MyRealType" + const typeWrappedByHttpPart = getHttpPart(context.program, currentType); + if (typeWrappedByHttpPart) { + return dfsModelProperties(expectedType, typeWrappedByHttpPart.type, displayName) + } + + if ( + currentType.indexer && + currentType.properties.size === 0 && + ((currentType.indexer.key.name === "string" && currentType.name === "Record") || + currentType.indexer.key.name === "integer") + ) { + // handle array or dict + const dictOrArrayItemType: Type = currentType.indexer.value; + return dfsModelProperties(expectedType, dictOrArrayItemType, pluralize.singular(displayName)); + } + // handle model result.push({ name: displayName, type: currentType }); for (const property of currentType.properties.values()) { diff --git a/packages/typespec-client-generator-core/test/types/multipart-types.test.ts b/packages/typespec-client-generator-core/test/types/multipart-types.test.ts index e85ab84033..789722527a 100644 --- a/packages/typespec-client-generator-core/test/types/multipart-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/multipart-types.test.ts @@ -543,6 +543,7 @@ describe("typespec-client-generator-core: multipart types", () => { ) as SdkBodyModelPropertyType; ok(stringWithContentType); strictEqual(stringWithContentType.type.kind, "model"); + strictEqual(stringWithContentType.type.name, "MultiPartRequestStringWithContentType"); ok(stringWithContentType.multipartOptions); ok(stringWithContentType.multipartOptions.contentType); deepEqual(stringWithContentType.multipartOptions.defaultContentTypes, ["text/html"]); @@ -563,6 +564,7 @@ describe("typespec-client-generator-core: multipart types", () => { ) as SdkBodyModelPropertyType; ok(bytesWithContentType); strictEqual(bytesWithContentType.type.kind, "model"); + strictEqual(bytesWithContentType.type.name, "MultiPartRequestBytesWithContentType"); ok(bytesWithContentType.multipartOptions); ok(bytesWithContentType.multipartOptions.contentType); deepEqual(bytesWithContentType.multipartOptions.defaultContentTypes, ["image/png"]); From b8a59f0e66dc6c54b1bd5dbec515ca85eb9d1571 Mon Sep 17 00:00:00 2001 From: msyyc <70930885+msyyc@users.noreply.github.com> Date: Fri, 6 Sep 2024 13:54:51 +0800 Subject: [PATCH 2/9] add test --- .../test/types/multipart-types.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/typespec-client-generator-core/test/types/multipart-types.test.ts b/packages/typespec-client-generator-core/test/types/multipart-types.test.ts index 789722527a..ad34503990 100644 --- a/packages/typespec-client-generator-core/test/types/multipart-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/multipart-types.test.ts @@ -573,9 +573,6 @@ describe("typespec-client-generator-core: multipart types", () => { it("check isFilePart in multipart with @multipartBody for model", async function () { await runner.compileWithBuiltInService(` model MultiPartRequest { - bytesRaw: HttpPart, - bytesArrayRaw: HttpPart[], - fileRaw: HttpPart, fileArrayRaw: HttpPart[], bytesWithBody: HttpPart<{@body body: bytes}>, bytesArrayWithBody: HttpPart<{@body body: bytes}>[], @@ -594,6 +591,9 @@ describe("typespec-client-generator-core: multipart types", () => { ok(p.multipartOptions); strictEqual(p.multipartOptions.isFilePart, true); strictEqual(p.multipartOptions.isMulti, p.name.toLowerCase().includes("array")); + if (p.type.kind === "model") { + ok(p.type.name !== "") + } } }); From 0a93910ff36d9cf892df8828b8e6cac9b518b4aa Mon Sep 17 00:00:00 2001 From: msyyc <70930885+msyyc@users.noreply.github.com> Date: Fri, 6 Sep 2024 14:12:30 +0800 Subject: [PATCH 3/9] add test --- ...tcgc-multipart-model-name-2024-8-6-14-12-14.md | 7 +++++++ .../src/public-utils.ts | 8 ++++++-- .../test/types/multipart-types.test.ts | 15 +++++++++++++-- 3 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 .chronus/changes/fix-tcgc-multipart-model-name-2024-8-6-14-12-14.md diff --git a/.chronus/changes/fix-tcgc-multipart-model-name-2024-8-6-14-12-14.md b/.chronus/changes/fix-tcgc-multipart-model-name-2024-8-6-14-12-14.md new file mode 100644 index 0000000000..3927c0b4e0 --- /dev/null +++ b/.chronus/changes/fix-tcgc-multipart-model-name-2024-8-6-14-12-14.md @@ -0,0 +1,7 @@ +--- +changeKind: fix +packages: + - "@azure-tools/typespec-client-generator-core" +--- + +Fix naming logic for anonymous model wrapped by `HttpPart` \ No newline at end of file diff --git a/packages/typespec-client-generator-core/src/public-utils.ts b/packages/typespec-client-generator-core/src/public-utils.ts index c4bab06005..675046da58 100644 --- a/packages/typespec-client-generator-core/src/public-utils.ts +++ b/packages/typespec-client-generator-core/src/public-utils.ts @@ -474,7 +474,7 @@ function getContextPath( // Peel off HttpPart to get "MyRealType" const typeWrappedByHttpPart = getHttpPart(context.program, currentType); if (typeWrappedByHttpPart) { - return dfsModelProperties(expectedType, typeWrappedByHttpPart.type, displayName) + return dfsModelProperties(expectedType, typeWrappedByHttpPart.type, displayName); } if ( @@ -485,7 +485,11 @@ function getContextPath( ) { // handle array or dict const dictOrArrayItemType: Type = currentType.indexer.value; - return dfsModelProperties(expectedType, dictOrArrayItemType, pluralize.singular(displayName)); + return dfsModelProperties( + expectedType, + dictOrArrayItemType, + pluralize.singular(displayName) + ); } // handle model diff --git a/packages/typespec-client-generator-core/test/types/multipart-types.test.ts b/packages/typespec-client-generator-core/test/types/multipart-types.test.ts index ad34503990..db59437d13 100644 --- a/packages/typespec-client-generator-core/test/types/multipart-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/multipart-types.test.ts @@ -1,6 +1,6 @@ import { expectDiagnostics } from "@typespec/compiler/testing"; import { deepEqual, ok, strictEqual } from "assert"; -import { beforeEach, describe, it } from "vitest"; +import { afterEach, beforeEach, describe, it } from "vitest"; import { SdkBodyModelPropertyType, SdkClientType, @@ -16,6 +16,17 @@ describe("typespec-client-generator-core: multipart types", () => { runner = await createSdkTestRunner({ emitterName: "@azure-tools/typespec-java" }); }); + afterEach(async () => { + for (const modelsOrEnums of [ + runner.context.sdkPackage.models, + runner.context.sdkPackage.enums, + ]) { + for (const item of modelsOrEnums) { + ok(item.name !== ""); + } + } + }); + it("multipart form basic", async function () { await runner.compileWithBuiltInService(` model MultiPartRequest { @@ -592,7 +603,7 @@ describe("typespec-client-generator-core: multipart types", () => { strictEqual(p.multipartOptions.isFilePart, true); strictEqual(p.multipartOptions.isMulti, p.name.toLowerCase().includes("array")); if (p.type.kind === "model") { - ok(p.type.name !== "") + ok(p.type.name !== ""); } } }); From cc0bf32f0c1e3c1616a6c85343aaeae280e00b4f Mon Sep 17 00:00:00 2001 From: msyyc <70930885+msyyc@users.noreply.github.com> Date: Fri, 6 Sep 2024 14:17:16 +0800 Subject: [PATCH 4/9] add test --- .../test/types/multipart-types.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/typespec-client-generator-core/test/types/multipart-types.test.ts b/packages/typespec-client-generator-core/test/types/multipart-types.test.ts index db59437d13..8b0a04cb98 100644 --- a/packages/typespec-client-generator-core/test/types/multipart-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/multipart-types.test.ts @@ -584,6 +584,9 @@ describe("typespec-client-generator-core: multipart types", () => { it("check isFilePart in multipart with @multipartBody for model", async function () { await runner.compileWithBuiltInService(` model MultiPartRequest { + bytesRaw: HttpPart, + bytesArrayRaw: HttpPart[], + fileRaw: HttpPart, fileArrayRaw: HttpPart[], bytesWithBody: HttpPart<{@body body: bytes}>, bytesArrayWithBody: HttpPart<{@body body: bytes}>[], @@ -602,9 +605,6 @@ describe("typespec-client-generator-core: multipart types", () => { ok(p.multipartOptions); strictEqual(p.multipartOptions.isFilePart, true); strictEqual(p.multipartOptions.isMulti, p.name.toLowerCase().includes("array")); - if (p.type.kind === "model") { - ok(p.type.name !== ""); - } } }); From 59781061e238c8ce08b21aa213c0b1a55817ba28 Mon Sep 17 00:00:00 2001 From: msyyc <70930885+msyyc@users.noreply.github.com> Date: Fri, 6 Sep 2024 15:25:25 +0800 Subject: [PATCH 5/9] add test --- .../test/types/array-types.test.ts | 25 ++++++++++----- .../types/body-model-property-types.test.ts | 19 +++++++++--- .../test/types/built-in-types.test.ts | 31 ++++++++++++------- .../test/types/bytes-types.test.ts | 13 ++++++-- .../test/types/constant-types.test.ts | 15 +++++++-- .../test/types/date-time-types.test.ts | 15 +++++++-- 6 files changed, 86 insertions(+), 32 deletions(-) diff --git a/packages/typespec-client-generator-core/test/types/array-types.test.ts b/packages/typespec-client-generator-core/test/types/array-types.test.ts index 97bd609de4..1f5307433f 100644 --- a/packages/typespec-client-generator-core/test/types/array-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/array-types.test.ts @@ -1,6 +1,6 @@ import { AzureCoreTestLibrary } from "@azure-tools/typespec-azure-core/testing"; import { ok, strictEqual } from "assert"; -import { beforeEach, describe, it } from "vitest"; +import { afterEach, beforeEach, describe, it } from "vitest"; import { SdkTestRunner, createSdkTestRunner } from "../test-host.js"; describe("typespec-client-generator-core: array types", () => { @@ -9,7 +9,16 @@ describe("typespec-client-generator-core: array types", () => { beforeEach(async () => { runner = await createSdkTestRunner({ emitterName: "@azure-tools/typespec-java" }); }); - + afterEach(async () => { + for (const modelsOrEnums of [ + runner.context.sdkPackage.models, + runner.context.sdkPackage.enums, + ]) { + for (const item of modelsOrEnums) { + ok(item.name !== ""); + } + } + }); it("use model is to represent array", async () => { await runner.compile(` @service({}) @@ -40,13 +49,13 @@ describe("typespec-client-generator-core: array types", () => { }); it("EmbeddingVector from azure-core", async () => { - const runnerWithCore = await createSdkTestRunner({ + runner = await createSdkTestRunner({ librariesToAdd: [AzureCoreTestLibrary], autoUsings: ["Azure.Core"], "filter-out-core-models": false, emitterName: "@azure-tools/typespec-java", }); - await runnerWithCore.compileWithBuiltInAzureCoreService(` + await runner.compileWithBuiltInAzureCoreService(` @service({}) namespace TestClient { model ModelWithEmbeddingVector { @@ -56,7 +65,7 @@ describe("typespec-client-generator-core: array types", () => { op get(): ModelWithEmbeddingVector; } `); - const models = runnerWithCore.context.sdkPackage.models; + const models = runner.context.sdkPackage.models; strictEqual(models.length, 1); const model = models[0]; const property = model.properties[0]; @@ -67,13 +76,13 @@ describe("typespec-client-generator-core: array types", () => { }); it("alias of EmbeddingVector", async () => { - const runnerWithCore = await createSdkTestRunner({ + runner = await createSdkTestRunner({ librariesToAdd: [AzureCoreTestLibrary], autoUsings: ["Azure.Core"], "filter-out-core-models": false, emitterName: "@azure-tools/typespec-java", }); - await runnerWithCore.compileWithBuiltInAzureCoreService(` + await runner.compileWithBuiltInAzureCoreService(` @service({}) namespace TestClient { alias MyEmbeddingVector = EmbeddingVector; @@ -85,7 +94,7 @@ describe("typespec-client-generator-core: array types", () => { op get(): ModelWithEmbeddingVector; } `); - const models = runnerWithCore.context.sdkPackage.models; + const models = runner.context.sdkPackage.models; strictEqual(models.length, 1); const model = models[0]; const property = model.properties[0]; diff --git a/packages/typespec-client-generator-core/test/types/body-model-property-types.test.ts b/packages/typespec-client-generator-core/test/types/body-model-property-types.test.ts index a3cd77f83b..fc4a4e9ffa 100644 --- a/packages/typespec-client-generator-core/test/types/body-model-property-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/body-model-property-types.test.ts @@ -1,5 +1,5 @@ import { deepStrictEqual, ok, strictEqual } from "assert"; -import { beforeEach, describe, it } from "vitest"; +import { afterEach, beforeEach, describe, it } from "vitest"; import { isReadOnly } from "../../src/types.js"; import { SdkTestRunner, createSdkTestRunner } from "../test-host.js"; import { getSdkBodyModelPropertyTypeHelper } from "./utils.js"; @@ -10,7 +10,16 @@ describe("typespec-client-generator-core: body model property types", () => { beforeEach(async () => { runner = await createSdkTestRunner({ emitterName: "@azure-tools/typespec-java" }); }); - + afterEach(async () => { + for (const modelsOrEnums of [ + runner.context.sdkPackage.models, + runner.context.sdkPackage.enums, + ]) { + for (const item of modelsOrEnums) { + ok(item.name !== ""); + } + } + }); it("required", async function () { await runner.compileWithBuiltInService(` @usage(Usage.input | Usage.output) @@ -134,12 +143,12 @@ describe("typespec-client-generator-core: body model property types", () => { strictEqual(values[1].kind, "int32"); }); it("versioning", async function () { - const runnerWithVersion = await createSdkTestRunner({ + runner = await createSdkTestRunner({ "api-version": "all", emitterName: "@azure-tools/typespec-python", }); - await runnerWithVersion.compile(` + await runner.compile(` @versioned(Versions) @service({title: "Widget Service"}) namespace DemoService; @@ -164,7 +173,7 @@ describe("typespec-client-generator-core: body model property types", () => { removedProp: string; } `); - const sdkModel = runnerWithVersion.context.sdkPackage.models.find((x) => x.kind === "model"); + const sdkModel = runner.context.sdkPackage.models.find((x) => x.kind === "model"); ok(sdkModel); strictEqual(sdkModel.kind, "model"); diff --git a/packages/typespec-client-generator-core/test/types/built-in-types.test.ts b/packages/typespec-client-generator-core/test/types/built-in-types.test.ts index 7f97883ffb..851880d964 100644 --- a/packages/typespec-client-generator-core/test/types/built-in-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/built-in-types.test.ts @@ -1,7 +1,7 @@ import { AzureCoreTestLibrary } from "@azure-tools/typespec-azure-core/testing"; import { expectDiagnostics } from "@typespec/compiler/testing"; import { ok, strictEqual } from "assert"; -import { beforeEach, describe, it } from "vitest"; +import { beforeEach, describe, afterEach, it } from "vitest"; import { SdkBuiltInType } from "../../src/interfaces.js"; import { getAllModels } from "../../src/types.js"; import { SdkTestRunner, createSdkTestRunner } from "../test-host.js"; @@ -13,7 +13,16 @@ describe("typespec-client-generator-core: built-in types", () => { beforeEach(async () => { runner = await createSdkTestRunner({ emitterName: "@azure-tools/typespec-java" }); }); - + afterEach(async () => { + for (const modelsOrEnums of [ + runner.context.sdkPackage.models, + runner.context.sdkPackage.enums, + ]) { + for (const item of modelsOrEnums) { + ok(item.name !== ""); + } + } + }); it("string", async function () { await runner.compileWithBuiltInService( ` @@ -204,12 +213,12 @@ describe("typespec-client-generator-core: built-in types", () => { }); it("armId from Core", async function () { - const runnerWithCore = await createSdkTestRunner({ + runner = await createSdkTestRunner({ librariesToAdd: [AzureCoreTestLibrary], autoUsings: ["Azure.Core"], emitterName: "@azure-tools/typespec-java", }); - await runnerWithCore.compileWithBuiltInAzureCoreService( + await runner.compileWithBuiltInAzureCoreService( ` @usage(Usage.input | Usage.output) model Test { @@ -221,7 +230,7 @@ describe("typespec-client-generator-core: built-in types", () => { } ` ); - const models = runnerWithCore.context.sdkPackage.models; + const models = runner.context.sdkPackage.models; const type = models[0].properties[0].type; strictEqual(type.kind, "string"); strictEqual(type.name, "armResourceIdentifier"); @@ -230,12 +239,12 @@ describe("typespec-client-generator-core: built-in types", () => { }); it("format", async function () { - const runnerWithCore = await createSdkTestRunner({ + runner = await createSdkTestRunner({ librariesToAdd: [AzureCoreTestLibrary], autoUsings: ["Azure.Core"], emitterName: "@azure-tools/typespec-java", }); - await runnerWithCore.compileWithBuiltInAzureCoreService( + await runner.compileWithBuiltInAzureCoreService( ` @usage(Usage.input | Usage.output) model Test { @@ -246,7 +255,7 @@ describe("typespec-client-generator-core: built-in types", () => { } ` ); - const models = runnerWithCore.context.sdkPackage.models; + const models = runner.context.sdkPackage.models; for (const property of models[0].properties) { strictEqual(property.kind, "property"); strictEqual( @@ -257,13 +266,13 @@ describe("typespec-client-generator-core: built-in types", () => { }); it("etag from core", async () => { - const runnerWithCore = await createSdkTestRunner({ + runner = await createSdkTestRunner({ librariesToAdd: [AzureCoreTestLibrary], autoUsings: ["Azure.Core"], "filter-out-core-models": false, emitterName: "@azure-tools/typespec-java", }); - await runnerWithCore.compileWithBuiltInAzureCoreService(` + await runner.compileWithBuiltInAzureCoreService(` @resource("users") @doc("Details about a user.") model User { @@ -278,7 +287,7 @@ describe("typespec-client-generator-core: built-in types", () => { @doc("Gets status.") op getStatus is GetResourceOperationStatus; `); - const userModel = runnerWithCore.context.sdkPackage.models.find( + const userModel = runner.context.sdkPackage.models.find( (x) => x.kind === "model" && x.name === "User" ); ok(userModel); diff --git a/packages/typespec-client-generator-core/test/types/bytes-types.test.ts b/packages/typespec-client-generator-core/test/types/bytes-types.test.ts index 4251598eb7..9b71e7b0de 100644 --- a/packages/typespec-client-generator-core/test/types/bytes-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/bytes-types.test.ts @@ -1,5 +1,5 @@ import { ok, strictEqual } from "assert"; -import { beforeEach, describe, it } from "vitest"; +import { beforeEach,afterEach, describe, it } from "vitest"; import { SdkBasicServiceMethod, SdkBuiltInType, SdkHttpOperation } from "../../src/interfaces.js"; import { SdkTestRunner, createSdkTestRunner } from "../test-host.js"; @@ -9,7 +9,16 @@ describe("typespec-client-generator-core: bytes types", () => { beforeEach(async () => { runner = await createSdkTestRunner({ emitterName: "@azure-tools/typespec-java" }); }); - + afterEach(async () => { + for (const modelsOrEnums of [ + runner.context.sdkPackage.models, + runner.context.sdkPackage.enums, + ]) { + for (const item of modelsOrEnums) { + ok(item.name !== ""); + } + } + }); describe("bytes SdkMethodParameter", () => { it("should use service operation parameter encoding", async () => { await runner.compile(` diff --git a/packages/typespec-client-generator-core/test/types/constant-types.test.ts b/packages/typespec-client-generator-core/test/types/constant-types.test.ts index 2ec2976bcf..7d7385af16 100644 --- a/packages/typespec-client-generator-core/test/types/constant-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/constant-types.test.ts @@ -1,5 +1,5 @@ -import { strictEqual } from "assert"; -import { beforeEach, describe, it } from "vitest"; +import { strictEqual,ok } from "assert"; +import { beforeEach, describe, afterEach, it } from "vitest"; import { SdkTestRunner, createSdkTestRunner } from "../test-host.js"; import { getSdkTypeHelper } from "./utils.js"; @@ -9,7 +9,16 @@ describe("typespec-client-generator-core: constant types", () => { beforeEach(async () => { runner = await createSdkTestRunner({ emitterName: "@azure-tools/typespec-java" }); }); - + afterEach(async () => { + for (const modelsOrEnums of [ + runner.context.sdkPackage.models, + runner.context.sdkPackage.enums, + ]) { + for (const item of modelsOrEnums) { + ok(item.name !== ""); + } + } + }); it("string", async function () { await runner.compileWithBuiltInService(` @usage(Usage.input | Usage.output) diff --git a/packages/typespec-client-generator-core/test/types/date-time-types.test.ts b/packages/typespec-client-generator-core/test/types/date-time-types.test.ts index 926f40b27b..a0b15bd8c5 100644 --- a/packages/typespec-client-generator-core/test/types/date-time-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/date-time-types.test.ts @@ -1,5 +1,5 @@ -import { strictEqual } from "assert"; -import { beforeEach, describe, it } from "vitest"; +import { strictEqual, ok } from "assert"; +import { beforeEach, describe, afterEach, it } from "vitest"; import { SdkTestRunner, createSdkTestRunner } from "../test-host.js"; import { getSdkTypeHelper } from "./utils.js"; @@ -24,7 +24,16 @@ describe("typespec-client-generator-core: date-time types", () => { strictEqual(sdkType.wireType.kind, "string"); strictEqual(sdkType.encode, "rfc3339"); }); - + afterEach(async () => { + for (const modelsOrEnums of [ + runner.context.sdkPackage.models, + runner.context.sdkPackage.enums, + ]) { + for (const item of modelsOrEnums) { + ok(item.name !== ""); + } + } + }); it("rfc3339", async function () { await runner.compileWithBuiltInService( ` From a26d6baf911c239e9f737b2059fb9952ceebb1b4 Mon Sep 17 00:00:00 2001 From: msyyc <70930885+msyyc@users.noreply.github.com> Date: Fri, 6 Sep 2024 15:47:53 +0800 Subject: [PATCH 6/9] add test --- .../test/types/built-in-types.test.ts | 2 +- .../test/types/bytes-types.test.ts | 2 +- .../test/types/constant-types.test.ts | 4 +- .../test/types/date-time-types.test.ts | 26 +++++----- .../test/types/doc-summary.test.ts | 15 ++++-- .../test/types/duration-type.test.ts | 15 ++++-- .../test/types/enum-types.test.ts | 41 +++++++++------- .../types/general-decorators-list.test.ts | 15 ++++-- .../test/types/model-types.test.ts | 47 ++++++++++--------- .../test/types/response.test.ts | 13 ++++- .../test/types/tuple-types.test.ts | 13 ++++- .../test/types/union-types.test.ts | 13 ++++- 12 files changed, 137 insertions(+), 69 deletions(-) diff --git a/packages/typespec-client-generator-core/test/types/built-in-types.test.ts b/packages/typespec-client-generator-core/test/types/built-in-types.test.ts index 851880d964..029f85cdde 100644 --- a/packages/typespec-client-generator-core/test/types/built-in-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/built-in-types.test.ts @@ -1,7 +1,7 @@ import { AzureCoreTestLibrary } from "@azure-tools/typespec-azure-core/testing"; import { expectDiagnostics } from "@typespec/compiler/testing"; import { ok, strictEqual } from "assert"; -import { beforeEach, describe, afterEach, it } from "vitest"; +import { afterEach, beforeEach, describe, it } from "vitest"; import { SdkBuiltInType } from "../../src/interfaces.js"; import { getAllModels } from "../../src/types.js"; import { SdkTestRunner, createSdkTestRunner } from "../test-host.js"; diff --git a/packages/typespec-client-generator-core/test/types/bytes-types.test.ts b/packages/typespec-client-generator-core/test/types/bytes-types.test.ts index 9b71e7b0de..4bb7b6544d 100644 --- a/packages/typespec-client-generator-core/test/types/bytes-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/bytes-types.test.ts @@ -1,5 +1,5 @@ import { ok, strictEqual } from "assert"; -import { beforeEach,afterEach, describe, it } from "vitest"; +import { afterEach, beforeEach, describe, it } from "vitest"; import { SdkBasicServiceMethod, SdkBuiltInType, SdkHttpOperation } from "../../src/interfaces.js"; import { SdkTestRunner, createSdkTestRunner } from "../test-host.js"; diff --git a/packages/typespec-client-generator-core/test/types/constant-types.test.ts b/packages/typespec-client-generator-core/test/types/constant-types.test.ts index 7d7385af16..84ec528776 100644 --- a/packages/typespec-client-generator-core/test/types/constant-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/constant-types.test.ts @@ -1,5 +1,5 @@ -import { strictEqual,ok } from "assert"; -import { beforeEach, describe, afterEach, it } from "vitest"; +import { ok, strictEqual } from "assert"; +import { afterEach, beforeEach, describe, it } from "vitest"; import { SdkTestRunner, createSdkTestRunner } from "../test-host.js"; import { getSdkTypeHelper } from "./utils.js"; diff --git a/packages/typespec-client-generator-core/test/types/date-time-types.test.ts b/packages/typespec-client-generator-core/test/types/date-time-types.test.ts index a0b15bd8c5..cf0c308e44 100644 --- a/packages/typespec-client-generator-core/test/types/date-time-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/date-time-types.test.ts @@ -1,5 +1,5 @@ -import { strictEqual, ok } from "assert"; -import { beforeEach, describe, afterEach, it } from "vitest"; +import { ok, strictEqual } from "assert"; +import { afterEach, beforeEach, describe, it } from "vitest"; import { SdkTestRunner, createSdkTestRunner } from "../test-host.js"; import { getSdkTypeHelper } from "./utils.js"; @@ -9,7 +9,16 @@ describe("typespec-client-generator-core: date-time types", () => { beforeEach(async () => { runner = await createSdkTestRunner({ emitterName: "@azure-tools/typespec-java" }); }); - + afterEach(async () => { + for (const modelsOrEnums of [ + runner.context.sdkPackage.models, + runner.context.sdkPackage.enums, + ]) { + for (const item of modelsOrEnums) { + ok(item.name !== ""); + } + } + }); it("default", async function () { await runner.compileWithBuiltInService( ` @@ -24,16 +33,7 @@ describe("typespec-client-generator-core: date-time types", () => { strictEqual(sdkType.wireType.kind, "string"); strictEqual(sdkType.encode, "rfc3339"); }); - afterEach(async () => { - for (const modelsOrEnums of [ - runner.context.sdkPackage.models, - runner.context.sdkPackage.enums, - ]) { - for (const item of modelsOrEnums) { - ok(item.name !== ""); - } - } - }); + it("rfc3339", async function () { await runner.compileWithBuiltInService( ` diff --git a/packages/typespec-client-generator-core/test/types/doc-summary.test.ts b/packages/typespec-client-generator-core/test/types/doc-summary.test.ts index aefa151ff4..ec04a3649d 100644 --- a/packages/typespec-client-generator-core/test/types/doc-summary.test.ts +++ b/packages/typespec-client-generator-core/test/types/doc-summary.test.ts @@ -1,5 +1,5 @@ -import { strictEqual } from "assert"; -import { beforeEach, describe, it } from "vitest"; +import { ok, strictEqual } from "assert"; +import { afterEach, beforeEach, describe, it } from "vitest"; import { createSdkTestRunner, SdkTestRunner } from "../test-host.js"; describe("typespec-client-generator-core: doc and summary", () => { @@ -8,7 +8,16 @@ describe("typespec-client-generator-core: doc and summary", () => { beforeEach(async () => { runner = await createSdkTestRunner({ emitterName: "@azure-tools/typespec-java" }); }); - + afterEach(async () => { + for (const modelsOrEnums of [ + runner.context.sdkPackage.models, + runner.context.sdkPackage.enums, + ]) { + for (const item of modelsOrEnums) { + ok(item.name !== ""); + } + } + }); it("unicode", async () => { await runner.compileWithBuiltInService(` @usage(Usage.input | Usage.output) diff --git a/packages/typespec-client-generator-core/test/types/duration-type.test.ts b/packages/typespec-client-generator-core/test/types/duration-type.test.ts index a095b66c13..07a8cd95c7 100644 --- a/packages/typespec-client-generator-core/test/types/duration-type.test.ts +++ b/packages/typespec-client-generator-core/test/types/duration-type.test.ts @@ -1,5 +1,5 @@ -import { strictEqual } from "assert"; -import { beforeEach, describe, it } from "vitest"; +import { ok, strictEqual } from "assert"; +import { afterEach, beforeEach, describe, it } from "vitest"; import { SdkTestRunner, createSdkTestRunner } from "../test-host.js"; import { getSdkTypeHelper } from "./utils.js"; @@ -9,7 +9,16 @@ describe("typespec-client-generator-core: duration types", () => { beforeEach(async () => { runner = await createSdkTestRunner({ emitterName: "@azure-tools/typespec-java" }); }); - + afterEach(async () => { + for (const modelsOrEnums of [ + runner.context.sdkPackage.models, + runner.context.sdkPackage.enums, + ]) { + for (const item of modelsOrEnums) { + ok(item.name !== ""); + } + } + }); it("default", async function () { await runner.compileWithBuiltInService( ` diff --git a/packages/typespec-client-generator-core/test/types/enum-types.test.ts b/packages/typespec-client-generator-core/test/types/enum-types.test.ts index c2ffcc4b42..5ce9c439c9 100644 --- a/packages/typespec-client-generator-core/test/types/enum-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/enum-types.test.ts @@ -1,7 +1,7 @@ import { AzureCoreTestLibrary } from "@azure-tools/typespec-azure-core/testing"; import { Enum, Model, Union } from "@typespec/compiler"; import { deepEqual, deepStrictEqual, ok, strictEqual } from "assert"; -import { beforeEach, describe, it } from "vitest"; +import { afterEach, beforeEach, describe, it } from "vitest"; import { SdkEnumType, SdkModelType, SdkUnionType, UsageFlags } from "../../src/interfaces.js"; import { getClientType, getSdkEnum } from "../../src/types.js"; import { @@ -16,7 +16,16 @@ describe("typespec-client-generator-core: enum types", () => { beforeEach(async () => { runner = await createSdkTestRunner({ emitterName: "@azure-tools/typespec-java" }); }); - + afterEach(async () => { + for (const modelsOrEnums of [ + runner.context.sdkPackage.models, + runner.context.sdkPackage.enums, + ]) { + for (const item of modelsOrEnums) { + ok(item.name !== ""); + } + } + }); it("string extensible", async function () { await runner.compileWithBuiltInService(` @usage(Usage.input | Usage.output) @@ -200,12 +209,12 @@ describe("typespec-client-generator-core: enum types", () => { }); it("string fixed", async function () { - const runnerWithCore = await createSdkTestRunner({ + runner = await createSdkTestRunner({ librariesToAdd: [AzureCoreTestLibrary], autoUsings: ["Azure.Core"], emitterName: "@azure-tools/typespec-java", }); - await runnerWithCore.compileWithBuiltInAzureCoreService(` + await runner.compileWithBuiltInAzureCoreService(` #suppress "@azure-tools/typespec-azure-core/use-extensible-enum" "For testing" @doc(".") @fixed @@ -227,9 +236,9 @@ describe("typespec-client-generator-core: enum types", () => { prop: DaysOfWeekFixedEnum } `); - strictEqual(runnerWithCore.context.sdkPackage.models.length, 1); - strictEqual(runnerWithCore.context.sdkPackage.enums.length, 1); - const sdkType = runnerWithCore.context.sdkPackage.enums[0]; + strictEqual(runner.context.sdkPackage.models.length, 1); + strictEqual(runner.context.sdkPackage.enums.length, 1); + const sdkType = runner.context.sdkPackage.enums[0]; strictEqual(sdkType.isFixed, true); strictEqual(sdkType.name, "DaysOfWeekFixedEnum"); strictEqual(sdkType.crossLanguageDefinitionId, "My.Service.DaysOfWeekFixedEnum"); @@ -648,12 +657,12 @@ describe("typespec-client-generator-core: enum types", () => { }); it("versioned enums with all", async () => { - const runnerWithVersion = await createSdkTestRunner({ + runner = await createSdkTestRunner({ "api-version": "all", emitterName: "@azure-tools/typespec-python", }); - await runnerWithVersion.compile( + await runner.compile( ` @versioned(Versions) @service() @@ -665,7 +674,7 @@ describe("typespec-client-generator-core: enum types", () => { } ` ); - const enums = runnerWithVersion.context.sdkPackage.enums; + const enums = runner.context.sdkPackage.enums; strictEqual(enums.length, 1); strictEqual(enums[0].name, "Versions"); strictEqual(enums[0].crossLanguageDefinitionId, "DemoService.Versions"); @@ -677,12 +686,12 @@ describe("typespec-client-generator-core: enum types", () => { }); it("versioned enums with latest", async () => { - const runnerWithVersion = await createSdkTestRunner({ + runner = await createSdkTestRunner({ "api-version": "latest", emitterName: "@azure-tools/typespec-python", }); - await runnerWithVersion.compile( + await runner.compile( ` @versioned(Versions) @service() @@ -694,7 +703,7 @@ describe("typespec-client-generator-core: enum types", () => { } ` ); - const enums = runnerWithVersion.context.sdkPackage.enums; + const enums = runner.context.sdkPackage.enums; strictEqual(enums.length, 1); strictEqual(enums[0].name, "Versions"); strictEqual(enums[0].crossLanguageDefinitionId, "DemoService.Versions"); @@ -706,12 +715,12 @@ describe("typespec-client-generator-core: enum types", () => { }); it("versioned enums with specific version", async () => { - const runnerWithVersion = await createSdkTestRunner({ + runner = await createSdkTestRunner({ "api-version": "v1", emitterName: "@azure-tools/typespec-python", }); - await runnerWithVersion.compile( + await runner.compile( ` @versioned(Versions) @service() @@ -723,7 +732,7 @@ describe("typespec-client-generator-core: enum types", () => { } ` ); - const enums = runnerWithVersion.context.sdkPackage.enums; + const enums = runner.context.sdkPackage.enums; strictEqual(enums.length, 1); strictEqual(enums[0].name, "Versions"); strictEqual(enums[0].crossLanguageDefinitionId, "DemoService.Versions"); diff --git a/packages/typespec-client-generator-core/test/types/general-decorators-list.test.ts b/packages/typespec-client-generator-core/test/types/general-decorators-list.test.ts index 8608236957..b31dd176fe 100644 --- a/packages/typespec-client-generator-core/test/types/general-decorators-list.test.ts +++ b/packages/typespec-client-generator-core/test/types/general-decorators-list.test.ts @@ -1,8 +1,8 @@ import { AzureCoreTestLibrary } from "@azure-tools/typespec-azure-core/testing"; import { expectDiagnostics } from "@typespec/compiler/testing"; import { XmlTestLibrary } from "@typespec/xml/testing"; -import { deepStrictEqual, strictEqual } from "assert"; -import { beforeEach, describe, it } from "vitest"; +import { deepStrictEqual, ok, strictEqual } from "assert"; +import { afterEach, beforeEach, describe, it } from "vitest"; import { SdkEnumValueType } from "../../src/interfaces.js"; import { SdkTestRunner, createSdkTestRunner } from "../test-host.js"; @@ -12,7 +12,16 @@ describe("typespec-client-generator-core: general decorators list", () => { beforeEach(async () => { runner = await createSdkTestRunner({ emitterName: "@azure-tools/typespec-java" }); }); - + afterEach(async () => { + for (const modelsOrEnums of [ + runner.context.sdkPackage.models, + runner.context.sdkPackage.enums, + ]) { + for (const item of modelsOrEnums) { + ok(item.name !== ""); + } + } + }); it("no arg", async function () { runner = await createSdkTestRunner({}, { additionalDecorators: ["TypeSpec\\.@error"] }); diff --git a/packages/typespec-client-generator-core/test/types/model-types.test.ts b/packages/typespec-client-generator-core/test/types/model-types.test.ts index 71e30c7796..5f283a9375 100644 --- a/packages/typespec-client-generator-core/test/types/model-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/model-types.test.ts @@ -1,7 +1,7 @@ import { AzureCoreTestLibrary } from "@azure-tools/typespec-azure-core/testing"; import { isErrorModel } from "@typespec/compiler"; import { deepStrictEqual, ok, strictEqual } from "assert"; -import { beforeEach, describe, it } from "vitest"; +import { afterEach, beforeEach, describe, it } from "vitest"; import { SdkBodyModelPropertyType, UsageFlags } from "../../src/interfaces.js"; import { isAzureCoreModel } from "../../src/internal-utils.js"; import { getAllModels } from "../../src/types.js"; @@ -13,7 +13,16 @@ describe("typespec-client-generator-core: model types", () => { beforeEach(async () => { runner = await createSdkTestRunner({ emitterName: "@azure-tools/typespec-java" }); }); - + afterEach(async () => { + for (const modelsOrEnums of [ + runner.context.sdkPackage.models, + runner.context.sdkPackage.enums, + ]) { + for (const item of modelsOrEnums) { + ok(item.name !== ""); + } + } + }); it("basic", async () => { await runner.compile(` @service({}) @@ -690,12 +699,12 @@ describe("typespec-client-generator-core: model types", () => { }); it("filterOutCoreModels true", async () => { - const runnerWithCore = await createSdkTestRunner({ + runner = await createSdkTestRunner({ librariesToAdd: [AzureCoreTestLibrary], autoUsings: ["Azure.Core"], emitterName: "@azure-tools/typespec-java", }); - await runnerWithCore.compileWithBuiltInAzureCoreService(` + await runner.compileWithBuiltInAzureCoreService(` @resource("users") @doc("Details about a user.") model User { @@ -711,12 +720,12 @@ describe("typespec-client-generator-core: model types", () => { @doc("Creates or updates a User") op createOrUpdate is StandardResourceOperations.ResourceCreateOrUpdate; `); - const models = runnerWithCore.context.sdkPackage.models; + const models = runner.context.sdkPackage.models; strictEqual(models.length, 1); strictEqual(models[0].name, "User"); strictEqual(models[0].crossLanguageDefinitionId, "My.Service.User"); - for (const [type, sdkType] of runnerWithCore.context.modelsMap?.entries() ?? []) { + for (const [type, sdkType] of runner.context.modelsMap?.entries() ?? []) { if (isAzureCoreModel(type)) { ok(sdkType.usage !== UsageFlags.None); } @@ -724,13 +733,13 @@ describe("typespec-client-generator-core: model types", () => { }); it("filterOutCoreModels false", async () => { - const runnerWithCore = await createSdkTestRunner({ + runner = await createSdkTestRunner({ librariesToAdd: [AzureCoreTestLibrary], autoUsings: ["Azure.Core"], "filter-out-core-models": false, emitterName: "@azure-tools/typespec-java", }); - await runnerWithCore.compileWithBuiltInAzureCoreService(` + await runner.compileWithBuiltInAzureCoreService(` @resource("users") @doc("Details about a user.") model User { @@ -746,9 +755,7 @@ describe("typespec-client-generator-core: model types", () => { @doc("Creates or updates a User") op createOrUpdate is StandardResourceOperations.ResourceCreateOrUpdate; `); - const models = runnerWithCore.context.sdkPackage.models.sort((a, b) => - a.name.localeCompare(b.name) - ); + const models = runner.context.sdkPackage.models.sort((a, b) => a.name.localeCompare(b.name)); strictEqual(models.length, 4); strictEqual(models[0].name, "Error"); strictEqual(models[0].crossLanguageDefinitionId, "Azure.Core.Foundations.Error"); @@ -761,12 +768,12 @@ describe("typespec-client-generator-core: model types", () => { }); it("lro core filterOutCoreModels true", async () => { - const runnerWithCore = await createSdkTestRunner({ + runner = await createSdkTestRunner({ librariesToAdd: [AzureCoreTestLibrary], autoUsings: ["Azure.Core"], emitterName: "@azure-tools/typespec-java", }); - await runnerWithCore.compileWithBuiltInAzureCoreService(` + await runner.compileWithBuiltInAzureCoreService(` @resource("users") @doc("Details about a user.") model User { @@ -783,20 +790,20 @@ describe("typespec-client-generator-core: model types", () => { @pollingOperation(My.Service.getStatus) op createOrUpdateUser is StandardResourceOperations.LongRunningResourceCreateOrUpdate; `); - const models = runnerWithCore.context.sdkPackage.models; + const models = runner.context.sdkPackage.models; strictEqual(models.length, 1); strictEqual(models[0].name, "User"); strictEqual(models[0].crossLanguageDefinitionId, "My.Service.User"); }); it("lro core filterOutCoreModels false", async () => { - const runnerWithCore = await createSdkTestRunner({ + runner = await createSdkTestRunner({ librariesToAdd: [AzureCoreTestLibrary], autoUsings: ["Azure.Core"], "filter-out-core-models": false, emitterName: "@azure-tools/typespec-java", }); - await runnerWithCore.compileWithBuiltInAzureCoreService(` + await runner.compileWithBuiltInAzureCoreService(` @resource("users") @doc("Details about a user.") model User { @@ -813,9 +820,7 @@ describe("typespec-client-generator-core: model types", () => { @pollingOperation(My.Service.getStatus) op createOrUpdateUser is StandardResourceOperations.LongRunningResourceCreateOrUpdate; `); - const models = runnerWithCore.context.sdkPackage.models.sort((a, b) => - a.name.localeCompare(b.name) - ); + const models = runner.context.sdkPackage.models.sort((a, b) => a.name.localeCompare(b.name)); strictEqual(models.length, 5); strictEqual(models[0].name, "Error"); strictEqual(models[0].crossLanguageDefinitionId, "Azure.Core.Foundations.Error"); @@ -827,8 +832,8 @@ describe("typespec-client-generator-core: model types", () => { strictEqual(models[3].crossLanguageDefinitionId, "Azure.Core.ResourceOperationStatus"); strictEqual(models[4].name, "User"); strictEqual(models[4].crossLanguageDefinitionId, "My.Service.User"); - strictEqual(runnerWithCore.context.sdkPackage.enums.length, 1); - strictEqual(runnerWithCore.context.sdkPackage.enums[0].name, "OperationState"); + strictEqual(runner.context.sdkPackage.enums.length, 1); + strictEqual(runner.context.sdkPackage.enums[0].name, "OperationState"); }); it("no models filter core", async () => { await runner.compile(` diff --git a/packages/typespec-client-generator-core/test/types/response.test.ts b/packages/typespec-client-generator-core/test/types/response.test.ts index b77016cd49..6b37b063e8 100644 --- a/packages/typespec-client-generator-core/test/types/response.test.ts +++ b/packages/typespec-client-generator-core/test/types/response.test.ts @@ -1,5 +1,5 @@ import { ok, strictEqual } from "assert"; -import { beforeEach, describe, it } from "vitest"; +import { afterEach, beforeEach, describe, it } from "vitest"; import { SdkTestRunner, createSdkTestRunner } from "../test-host.js"; describe("typespec-client-generator-core: responses", () => { @@ -8,7 +8,16 @@ describe("typespec-client-generator-core: responses", () => { beforeEach(async () => { runner = await createSdkTestRunner({ emitterName: "@azure-tools/typespec-java" }); }); - + afterEach(async () => { + for (const modelsOrEnums of [ + runner.context.sdkPackage.models, + runner.context.sdkPackage.enums, + ]) { + for (const item of modelsOrEnums) { + ok(item.name !== ""); + } + } + }); it("content type shall be included in response headers", async () => { await runner.compile(` @service({}) diff --git a/packages/typespec-client-generator-core/test/types/tuple-types.test.ts b/packages/typespec-client-generator-core/test/types/tuple-types.test.ts index 81e0e03379..8b93717940 100644 --- a/packages/typespec-client-generator-core/test/types/tuple-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/tuple-types.test.ts @@ -1,5 +1,5 @@ import { ok, strictEqual } from "assert"; -import { beforeEach, describe, it } from "vitest"; +import { afterEach, beforeEach, describe, it } from "vitest"; import { SdkTestRunner, createSdkTestRunner } from "../test-host.js"; describe("typespec-client-generator-core: tuple types", () => { @@ -8,7 +8,16 @@ describe("typespec-client-generator-core: tuple types", () => { beforeEach(async () => { runner = await createSdkTestRunner({ emitterName: "@azure-tools/typespec-java" }); }); - + afterEach(async () => { + for (const modelsOrEnums of [ + runner.context.sdkPackage.models, + runner.context.sdkPackage.enums, + ]) { + for (const item of modelsOrEnums) { + ok(item.name !== ""); + } + } + }); it("model with tupled properties", async function () { await runner.compileAndDiagnose(` @service({}) diff --git a/packages/typespec-client-generator-core/test/types/union-types.test.ts b/packages/typespec-client-generator-core/test/types/union-types.test.ts index b86da40b41..2d63dec0a0 100644 --- a/packages/typespec-client-generator-core/test/types/union-types.test.ts +++ b/packages/typespec-client-generator-core/test/types/union-types.test.ts @@ -1,5 +1,5 @@ import { ok, strictEqual } from "assert"; -import { beforeEach, describe, it } from "vitest"; +import { afterEach, beforeEach, describe, it } from "vitest"; import { SdkArrayType, UsageFlags } from "../../src/interfaces.js"; import { SdkTestRunner, createSdkTestRunner } from "../test-host.js"; import { getSdkTypeHelper } from "./utils.js"; @@ -10,7 +10,16 @@ describe("typespec-client-generator-core: union types", () => { beforeEach(async () => { runner = await createSdkTestRunner({ emitterName: "@azure-tools/typespec-java" }); }); - + afterEach(async () => { + for (const modelsOrEnums of [ + runner.context.sdkPackage.models, + runner.context.sdkPackage.enums, + ]) { + for (const item of modelsOrEnums) { + ok(item.name !== ""); + } + } + }); it("primitive union", async function () { await runner.compileWithBuiltInService( ` From fcfa7ae27d5ab2023dde704ddf1fcc304c1b3471 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2024 10:54:57 -0400 Subject: [PATCH 7/9] Bump core from `0be9e8f` to `a5fc2ce` (#1514) Bumps [core](https://github.com/microsoft/typespec) from `0be9e8f` to `a5fc2ce`.
Commits

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- core | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core b/core index 0be9e8f22b..a5fc2ce620 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit 0be9e8f22bb587db69bf1fc5e73effef1e2364a5 +Subproject commit a5fc2ce6201098d1d7095bb4e7a6109c1dd2fe9a From 628fcb4fa454b43cb4f724f50564899410ff6d5f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2024 15:18:28 +0000 Subject: [PATCH 8/9] Bump @azure-tools/cadl-ranch-specs from 0.37.1 to 0.37.2 in /packages/e2e-tests/cadl-ranch-specs (#1517) Bumps [@azure-tools/cadl-ranch-specs](https://github.com/Azure/cadl-ranch) from 0.37.1 to 0.37.2.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@azure-tools/cadl-ranch-specs&package-manager=npm_and_yarn&previous-version=0.37.1&new-version=0.37.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packages/e2e-tests/cadl-ranch-specs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/e2e-tests/cadl-ranch-specs/package.json b/packages/e2e-tests/cadl-ranch-specs/package.json index 8f367a6c91..77ff83c22a 100644 --- a/packages/e2e-tests/cadl-ranch-specs/package.json +++ b/packages/e2e-tests/cadl-ranch-specs/package.json @@ -1,7 +1,7 @@ { "name": "@azure-tools/typespec-e2e-cadl-ranch-specs", "dependencies": { - "@azure-tools/cadl-ranch-specs": "0.37.1" + "@azure-tools/cadl-ranch-specs": "0.37.2" }, "type": "module", "private": true From dfeee05c8fe3ec61ff28daeb0db59942ed08f8fe Mon Sep 17 00:00:00 2001 From: Wei Hu Date: Thu, 12 Sep 2024 07:11:45 +0800 Subject: [PATCH 9/9] Replace `x-ms-skip-url-encoding` with `allowReserved` (#1512) This is blocking a new RP [kubernetesruntime](https://github.com/Azure/azure-rest-api-specs/blob/f5321f9b29083f9ea4c028e7484504875e04a758/specification/kubernetesruntime/KubernetesRuntime.Management/storageclass.tsp#L273) generating SDK. --- .chronus/changes/allow-reserved-2024-8-11-16-40-29.md | 7 +++++++ .../lib/common-types/types.tsp | 3 +-- .../typespec-azure-resource-manager/lib/parameters.tsp | 3 +-- 3 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 .chronus/changes/allow-reserved-2024-8-11-16-40-29.md diff --git a/.chronus/changes/allow-reserved-2024-8-11-16-40-29.md b/.chronus/changes/allow-reserved-2024-8-11-16-40-29.md new file mode 100644 index 0000000000..5062d7dc94 --- /dev/null +++ b/.chronus/changes/allow-reserved-2024-8-11-16-40-29.md @@ -0,0 +1,7 @@ +--- +changeKind: feature +packages: + - "@azure-tools/typespec-azure-resource-manager" +--- + +`x-ms-skip-url-encoding` should be replaced with `allowReserved` \ No newline at end of file diff --git a/packages/typespec-azure-resource-manager/lib/common-types/types.tsp b/packages/typespec-azure-resource-manager/lib/common-types/types.tsp index d8c386b134..a83e3b1d81 100644 --- a/packages/typespec-azure-resource-manager/lib/common-types/types.tsp +++ b/packages/typespec-azure-resource-manager/lib/common-types/types.tsp @@ -537,10 +537,9 @@ model ManagementGroupNameParameter { @added(Versions.v4) model ScopeParameter { /** The scope at which the operation is performed. */ - @path + @path(#{ allowReserved: true }) @segment("scope") @minLength(1) - @extension("x-ms-skip-url-encoding", true) scope: string; } diff --git a/packages/typespec-azure-resource-manager/lib/parameters.tsp b/packages/typespec-azure-resource-manager/lib/parameters.tsp index 43a17c652e..498cdadc19 100644 --- a/packages/typespec-azure-resource-manager/lib/parameters.tsp +++ b/packages/typespec-azure-resource-manager/lib/parameters.tsp @@ -83,9 +83,8 @@ model ArmLocationResource