diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/.template.config/template.json b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/.template.config/template.json index 9152b23c8be3..151b0ccacabd 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/.template.config/template.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/.template.config/template.json @@ -208,6 +208,7 @@ "steps": [ "lowerCaseInvariant", "replaceDnsInvalidChars", + "replaceRepeatedHyphens", "trimLeadingHyphens", "trimTrailingHyphens" ] @@ -217,6 +218,11 @@ "pattern": "[^a-z0-9-]", "replacement": "-" }, + "replaceRepeatedHyphens": { + "identifier": "replace", + "pattern": "-{2,}", + "replacement": "-" + }, "trimLeadingHyphens": { "identifier": "replace", "pattern": "^-+", diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/template.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/template.json index cbc4c861d3c6..392ac83e2355 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/template.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/template.json @@ -54,6 +54,7 @@ "steps": [ "lowerCaseInvariant", "replaceDnsInvalidChars", + "replaceRepeatedHyphens", "trimLeadingHyphens", "trimTrailingHyphens" ] @@ -63,6 +64,11 @@ "pattern": "[^a-z0-9-]", "replacement": "-" }, + "replaceRepeatedHyphens": { + "identifier": "replace", + "pattern": "-{2,}", + "replacement": "-" + }, "trimLeadingHyphens": { "identifier": "replace", "pattern": "^-+", diff --git a/src/ProjectTemplates/test/Templates.Blazor.Tests/BlazorWebTemplateTest.cs b/src/ProjectTemplates/test/Templates.Blazor.Tests/BlazorWebTemplateTest.cs index e4e511e5e19f..20ff39a70d18 100644 --- a/src/ProjectTemplates/test/Templates.Blazor.Tests/BlazorWebTemplateTest.cs +++ b/src/ProjectTemplates/test/Templates.Blazor.Tests/BlazorWebTemplateTest.cs @@ -95,8 +95,9 @@ private async Task TestProjectCoreAsync(Project project, BrowserKind browserKind [InlineData("my.namespace.blazor", "my-namespace-blazor")] [InlineData(".StartWithDot", "startwithdot")] [InlineData("EndWithDot.", "endwithdot")] - [InlineData("My..Test__Project", "my--test--project")] + [InlineData("My..Test__Project", "my-test-project")] [InlineData("Project123.Test456", "project123-test456")] + [InlineData("xn--My.Test.Project", "xn-my-test-project")] [SkipOnHelix("Cert failure, https://github.com/dotnet/aspnetcore/issues/28090", Queues = "All.OSX;" + HelixConstants.Windows10Arm64 + HelixConstants.DebianArm64)] public async Task BlazorWebTemplateLocalhostTld_GeneratesDnsCompliantHostnames(string projectName, string expectedHostname) { diff --git a/src/ProjectTemplates/test/Templates.Tests/EmptyWebTemplateTest.cs b/src/ProjectTemplates/test/Templates.Tests/EmptyWebTemplateTest.cs index 222c22a51681..90e91640a9d4 100644 --- a/src/ProjectTemplates/test/Templates.Tests/EmptyWebTemplateTest.cs +++ b/src/ProjectTemplates/test/Templates.Tests/EmptyWebTemplateTest.cs @@ -78,8 +78,9 @@ public async Task EmptyWebTemplateNoHttpsFSharp() [InlineData("my.namespace.web", "my-namespace-web")] [InlineData(".StartWithDot", "startwithdot")] [InlineData("EndWithDot.", "endwithdot")] - [InlineData("My..Test__Project", "my--test--project")] + [InlineData("My..Test__Project", "my-test-project")] [InlineData("Project123.Test456", "project123-test456")] + [InlineData("xn--My.Test.Project", "xn-my-test-project")] [SkipOnHelix("Cert failure, https://github.com/dotnet/aspnetcore/issues/28090", Queues = "All.OSX;" + HelixConstants.Windows10Arm64 + HelixConstants.DebianArm64)] public async Task EmptyWebTemplateLocalhostTld_GeneratesDnsCompliantHostnames(string projectName, string expectedHostname) {