From 518aed5feede957b3b5a57f91de54f520bdc3160 Mon Sep 17 00:00:00 2001 From: Kyle Zhang Date: Tue, 23 Sep 2025 16:57:35 +0800 Subject: [PATCH 1/6] as required --- .../typespec-validation/src/rules/sdk-tspconfig-validation.ts | 2 +- .../typespec-validation/test/sdk-tspconfig-validation.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/tools/typespec-validation/src/rules/sdk-tspconfig-validation.ts b/eng/tools/typespec-validation/src/rules/sdk-tspconfig-validation.ts index e720d79025a3..3c0fbe9e6c93 100644 --- a/eng/tools/typespec-validation/src/rules/sdk-tspconfig-validation.ts +++ b/eng/tools/typespec-validation/src/rules/sdk-tspconfig-validation.ts @@ -719,7 +719,7 @@ export class SdkTspConfigValidationRule implements Rule { : ""; return { - success: true, // Always return success to avoid blocking PRs, errors are reported in stdOutput + success, stdOutput: `[${this.name}]: validation ${success ? "passed" : "failed"}.\n${stdOutputFailedResults}`, }; } diff --git a/eng/tools/typespec-validation/test/sdk-tspconfig-validation.test.ts b/eng/tools/typespec-validation/test/sdk-tspconfig-validation.test.ts index 96ede13382b3..30bc4828af54 100644 --- a/eng/tools/typespec-validation/test/sdk-tspconfig-validation.test.ts +++ b/eng/tools/typespec-validation/test/sdk-tspconfig-validation.test.ts @@ -744,7 +744,7 @@ describe("tspconfig", function () { const rule = new SdkTspConfigValidationRule(c.subRules); const result = await rule.execute(c.folder); - strictEqual(result.success, true); // Non-management should always pass + strictEqual(result.success, c.success); // Non-management should always pass if (c.success) strictEqual(result.stdOutput?.includes("[SdkTspConfigValidation]: validation passed."), true); if (!c.success) From 700ee5106bebe374409d29c0503d627428e5532c Mon Sep 17 00:00:00 2001 From: Kyle Zhang Date: Tue, 23 Sep 2025 19:54:49 +0800 Subject: [PATCH 2/6] Update emitter-output-dir and namespace for TypeSpec configurations in tspconfig.yaml --- .../RecoveryServices.Management/tspconfig.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/specification/recoveryservicesbackup/RecoveryServices.Management/tspconfig.yaml b/specification/recoveryservicesbackup/RecoveryServices.Management/tspconfig.yaml index 0b556d3a9259..85155640c29a 100644 --- a/specification/recoveryservicesbackup/RecoveryServices.Management/tspconfig.yaml +++ b/specification/recoveryservicesbackup/RecoveryServices.Management/tspconfig.yaml @@ -13,25 +13,25 @@ options: "@azure-tools/typespec-csharp": service-dir: "sdk/recoveryservices-backup" flavor: azure - package-dir: "Azure.ResourceManager.RecoveryServicesBackup" + emitter-output-dir: "{output-dir}/{service-dir}/Azure.ResourceManager.RecoveryServicesBackup" clear-output-folder: true model-namespace: true - namespace: "{package-dir}" + namespace: "Azure.ResourceManager.RecoveryServicesBackup" "@azure-tools/typespec-python": service-dir: "sdk/recoveryservices" - package-dir: "azure-mgmt-recoveryservicesbackup" + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-recoveryservicesbackup" namespace: "azure.mgmt.recoveryservicesbackup" generate-test: true generate-sample: true flavor: "azure" "@azure-tools/typespec-java": - package-dir: "azure-resourcemanager-recoveryservicesbackup" + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-recoveryservicesbackup" namespace: "com.azure.resourcemanager.recoveryservicesbackup" service-name: "Recovery Services Backup" flavor: azure use-object-for-unknown: true "@azure-tools/typespec-ts": - package-dir: "arm-recoveryservicesbackup" + emitter-output-dir: "{output-dir}/{service-dir}/arm-recoveryservicesbackup" flavor: azure experimental-extensible-enums: true package-details: From 2d55dfbd6b060d856b92950ca7dd6ee1de853dc3 Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Thu, 25 Sep 2025 13:13:51 +0800 Subject: [PATCH 3/6] Update sdk-tspconfig-validation.ts --- .../src/rules/sdk-tspconfig-validation.ts | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/eng/tools/typespec-validation/src/rules/sdk-tspconfig-validation.ts b/eng/tools/typespec-validation/src/rules/sdk-tspconfig-validation.ts index 3c0fbe9e6c93..4ad0a508ae8f 100644 --- a/eng/tools/typespec-validation/src/rules/sdk-tspconfig-validation.ts +++ b/eng/tools/typespec-validation/src/rules/sdk-tspconfig-validation.ts @@ -297,15 +297,6 @@ export class TspConfigJavaAzEmitterOutputDirMatchPatternSubRule extends Tspconfi constructor() { super("@azure-tools/typespec-java", "emitter-output-dir", new RegExp(/^azure(-\w+)+$/)); } - - protected validate(config: any): RuleResult { - const option = this.tryFindOption(config); - if (option === undefined) { - // at present, we don't require service use emitter-output-dir - return { success: true }; - } - return super.validate(config); - } } export class TspConfigJavaMgmtEmitterOutputDirMatchPatternSubRule extends TspconfigEmitterOptionsEmitterOutputDirSubRuleBase { @@ -317,15 +308,6 @@ export class TspConfigJavaMgmtEmitterOutputDirMatchPatternSubRule extends Tspcon ); } - protected validate(config: any): RuleResult { - const option = this.tryFindOption(config); - if (option === undefined) { - // at present, we don't require service use emitter-output-dir - return { success: true }; - } - return super.validate(config); - } - protected skip(_: any, folder: string) { return skipForDataPlane(folder); // Ensures this rule only applies to management plane SDKs } From 9fa79c0fa2d3f430db30d3823ad06d2535140a18 Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Thu, 25 Sep 2025 13:14:54 +0800 Subject: [PATCH 4/6] Update sdk-tspconfig-validation.test.ts --- .../typespec-validation/test/sdk-tspconfig-validation.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/tools/typespec-validation/test/sdk-tspconfig-validation.test.ts b/eng/tools/typespec-validation/test/sdk-tspconfig-validation.test.ts index 30bc4828af54..22ea52ec2b5d 100644 --- a/eng/tools/typespec-validation/test/sdk-tspconfig-validation.test.ts +++ b/eng/tools/typespec-validation/test/sdk-tspconfig-validation.test.ts @@ -399,7 +399,7 @@ const javaAzEmitterOutputDirTestCases = createEmitterOptionTestCases( "{output-dir}/{service-dir}/azure-aaa", "{output-dir}/{service-dir}/aaa", [new TspConfigJavaAzEmitterOutputDirMatchPatternSubRule()], - true, + false, ); const javaMgmtEmitterOutputDirTestCases = createEmitterOptionTestCases( @@ -409,7 +409,7 @@ const javaMgmtEmitterOutputDirTestCases = createEmitterOptionTestCases( "{output-dir}/{service-dir}/azure-resourcemanager-aaa-bbb", "{output-dir}/{service-dir}/azure-aaa", [new TspConfigJavaMgmtEmitterOutputDirMatchPatternSubRule()], - true, + false, ); const javaMgmtNamespaceTestCases = createEmitterOptionTestCases( From c39ce086475b79238b33ee028225ef201c0eccf9 Mon Sep 17 00:00:00 2001 From: Kyle Zhang Date: Thu, 25 Sep 2025 14:11:21 +0800 Subject: [PATCH 5/6] Update emitter output directory for Java and KeyVault configurations in tspconfig.yaml --- .../devcenter/DevCenter.Management/tspconfig.yaml | 2 +- specification/keyvault/KeyVault.Management/tspconfig.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/specification/devcenter/DevCenter.Management/tspconfig.yaml b/specification/devcenter/DevCenter.Management/tspconfig.yaml index 0c0317ae621d..953c635007b1 100644 --- a/specification/devcenter/DevCenter.Management/tspconfig.yaml +++ b/specification/devcenter/DevCenter.Management/tspconfig.yaml @@ -25,7 +25,7 @@ options: generate-sample: true flavor: "azure" "@azure-tools/typespec-java": - package-dir: "azure-resourcemanager-devcenter" + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-devcenter" namespace: "com.azure.resourcemanager.devcenter" service-name: "DevCenter" # human-readable service name, whitespace allowed flavor: azure diff --git a/specification/keyvault/KeyVault.Management/tspconfig.yaml b/specification/keyvault/KeyVault.Management/tspconfig.yaml index bafcb8fb85cd..21a8012aeb8d 100644 --- a/specification/keyvault/KeyVault.Management/tspconfig.yaml +++ b/specification/keyvault/KeyVault.Management/tspconfig.yaml @@ -14,10 +14,10 @@ options: emit-lro-options: "all" "@azure-tools/typespec-csharp": flavor: azure - package-dir: "Azure.ResourceManager.KeyVault" + emitter-output-dir: "{output-dir}/{service-dir}/Azure.ResourceManager.KeyVault" clear-output-folder: true model-namespace: true - namespace: "{package-dir}" + namespace: "Azure.ResourceManager.KeyVault" "@azure-tools/typespec-python": emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-keyvault" namespace: "azure.mgmt.keyvault" @@ -25,14 +25,14 @@ options: generate-sample: true flavor: "azure" "@azure-tools/typespec-java": - package-dir: "azure-resourcemanager-keyvault-generated" + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-keyvault-generated" namespace: "com.azure.resourcemanager.keyvault.generated" service-name: "KeyVault" # human-readable service name, whitespace allowed flavor: azure premium: false enable-sync-stack: false "@azure-tools/typespec-ts": - package-dir: "arm-keyvault" + emitter-output-dir: "{output-dir}/{service-dir}/arm-keyvault" flavor: azure experimental-extensible-enums: true package-details: From 84c3faf7ffb1edc6ede74e88d47958f5e7914fa5 Mon Sep 17 00:00:00 2001 From: Kyle Zhang Date: Fri, 26 Sep 2025 10:24:56 +0800 Subject: [PATCH 6/6] fix: update emitter-output-dir and namespace for TypeSpec configurations --- specification/nginx/Nginx.Management/tspconfig.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/specification/nginx/Nginx.Management/tspconfig.yaml b/specification/nginx/Nginx.Management/tspconfig.yaml index ca499d39a859..5a9ab1a9eb48 100644 --- a/specification/nginx/Nginx.Management/tspconfig.yaml +++ b/specification/nginx/Nginx.Management/tspconfig.yaml @@ -13,24 +13,24 @@ options: examples-dir: "{project-root}/examples" "@azure-tools/typespec-csharp": flavor: azure - package-dir: "Azure.ResourceManager.Nginx" + emitter-output-dir: "{output-dir}/{service-dir}/Azure.ResourceManager.Nginx" clear-output-folder: true model-namespace: true - namespace: "{package-dir}" + namespace: "Azure.ResourceManager.Nginx" "@azure-tools/typespec-python": - package-dir: "azure-mgmt-nginx" + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-nginx" namespace: "azure.mgmt.nginx" generate-test: true generate-sample: true flavor: "azure" "@azure-tools/typespec-java": - package-dir: "azure-resourcemanager-nginx" + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-nginx" namespace: "com.azure.resourcemanager.nginx" service-name: "Nginx" # human-readable service name, whitespace allowed flavor: azure "@azure-tools/typespec-ts": service-dir: sdk/nginx - package-dir: "arm-nginx" + emitter-output-dir: "{output-dir}/{service-dir}/arm-nginx" is-modular-library: true flavor: "azure" experimental-extensible-enums: true