diff --git a/src/Maestro/Microsoft.DotNet.Maestro.Tasks.Tests/MergeBuildManifestsTests.cs b/src/Maestro/Microsoft.DotNet.Maestro.Tasks.Tests/MergeBuildManifestsTests.cs index f6e199e42c..523b064848 100644 --- a/src/Maestro/Microsoft.DotNet.Maestro.Tasks.Tests/MergeBuildManifestsTests.cs +++ b/src/Maestro/Microsoft.DotNet.Maestro.Tasks.Tests/MergeBuildManifestsTests.cs @@ -307,5 +307,18 @@ public void CompatibleBuildDataWithDuplicatedAssets() Action act = () => pushMetadata.MergeBuildManifests(ExpectedBuildDataIncompatibleList); act.Should().Throw().WithMessage("Can't merge if one or more manifests have different branch, build number, commit, or repository values."); } + + [TestCase("https://github.com/dotnet/trusted-packages", "trusted/packages")] + [TestCase("https://github.com/dotnet/trusted-packages", "trusted/packages")] + [TestCase("https://dev.azure.com/dnceng/internal/_git/dotnet-trusted-packages", "dotnet/trusted-packages")] + [TestCase("https://dev.azure.com/devdiv/DevDiv/_git/dotnet-trusted-packages-trusted", "dotnet/trusted-packages")] + [TestCase("https://dev.azure.com/dnceng/internal/_git/dotnet-images-trusted", "dotnet/images-trusted")] + [TestCase("https://dev.azure.com/devdiv/DevDiv/_git/dotnet-images-trusted-trusted", "dotnet/images-trusted")] + [TestCase("https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted", "nuget/nuget.client")] + public void GetGithubRepoNameTest(string azdoRepoUrl , string expectedRepo ) + { + string actualRepo = pushMetadata.GetGithubRepoName(azdoRepoUrl); + Assert.AreEqual(expectedRepo,actualRepo); + } } } diff --git a/src/Maestro/Microsoft.DotNet.Maestro.Tasks/src/PushMetadataToBuildAssetRegistry.cs b/src/Maestro/Microsoft.DotNet.Maestro.Tasks/src/PushMetadataToBuildAssetRegistry.cs index d6edf36c63..d7c896849a 100644 --- a/src/Maestro/Microsoft.DotNet.Maestro.Tasks/src/PushMetadataToBuildAssetRegistry.cs +++ b/src/Maestro/Microsoft.DotNet.Maestro.Tasks/src/PushMetadataToBuildAssetRegistry.cs @@ -578,14 +578,7 @@ private void LookupForMatchingGitHubRepository(BuildData mergedBuild) } else { - string[] segments = mergedBuild.AzureDevOpsRepository.Split('/'); - string repoName = segments[segments.Length - 1]; - int index = repoName.IndexOf('-'); - - StringBuilder builder = new StringBuilder(repoName); - builder[index] = '/'; - - repoIdentity = builder.ToString(); + repoIdentity = GetGithubRepoName(mergedBuild.AzureDevOpsRepository); } client.BaseAddress = new Uri($"https://api.{gitHubHost}"); @@ -606,6 +599,29 @@ private void LookupForMatchingGitHubRepository(BuildData mergedBuild) } } + /// + /// Get repo name from the AzdoRepo url + /// + /// + /// + public string GetGithubRepoName(string repoUrl) + { + string[] segments = repoUrl.Split('/'); + string repoName = segments[segments.Length - 1].ToLower(); + + if (repoUrl.Contains("DevDiv", StringComparison.OrdinalIgnoreCase) + && repoName.EndsWith("-Trusted", StringComparison.OrdinalIgnoreCase)) + { + repoName = repoName.Remove(repoName.LastIndexOf("-trusted")); + } + int index = repoName.IndexOf('-'); + + StringBuilder builder = new StringBuilder(repoName); + builder[index] = '/'; + + return builder.ToString(); + } + /// /// Creates an AssetData object for the merged manifest so it can be injected /// in itself