From c0dda0b381840a447c7ad377dcd0b9bc30182ed8 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Fri, 12 Jul 2024 22:45:32 +0100 Subject: [PATCH 01/21] Update TUnit --- test/Directory.Build.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/Directory.Build.props b/test/Directory.Build.props index 6763d8b38a..400ea3992b 100644 --- a/test/Directory.Build.props +++ b/test/Directory.Build.props @@ -9,6 +9,6 @@ - + - \ No newline at end of file + From 6d816f157de8df250901279101b0037f63a48468 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Fri, 12 Jul 2024 23:08:41 +0100 Subject: [PATCH 02/21] Fix --- .../Attributes/EnumValueAttributeTests.cs | 3 +-- .../Attributes/LinuxOnlyTestAttribute.cs | 16 +++------------- .../Attributes/WindowsOnlyTestAttribute.cs | 16 +++------------- 3 files changed, 7 insertions(+), 28 deletions(-) diff --git a/test/ModularPipelines.UnitTests/Attributes/EnumValueAttributeTests.cs b/test/ModularPipelines.UnitTests/Attributes/EnumValueAttributeTests.cs index feb4f9d393..7124188dd7 100644 --- a/test/ModularPipelines.UnitTests/Attributes/EnumValueAttributeTests.cs +++ b/test/ModularPipelines.UnitTests/Attributes/EnumValueAttributeTests.cs @@ -1,6 +1,5 @@ -using ModularPipelines.Attributes; +using ModularPipelines.Attributes; using ModularPipelines.Helpers; -using TUnit.Assertions.Extensions; namespace ModularPipelines.UnitTests.Attributes; diff --git a/test/ModularPipelines.UnitTests/Attributes/LinuxOnlyTestAttribute.cs b/test/ModularPipelines.UnitTests/Attributes/LinuxOnlyTestAttribute.cs index 7677706ab5..b66ae78393 100644 --- a/test/ModularPipelines.UnitTests/Attributes/LinuxOnlyTestAttribute.cs +++ b/test/ModularPipelines.UnitTests/Attributes/LinuxOnlyTestAttribute.cs @@ -1,19 +1,9 @@ -using TUnit.Core.Exceptions; -using TUnit.Core.Interfaces; - namespace ModularPipelines.UnitTests.Attributes; -[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)] -public class LinuxOnlyTestAttribute : Attribute, IApplicableTestAttribute +public class LinuxOnlyTestAttribute() : SkipAttribute("Linux only test") { - /// - public Task Apply(TestContext testContext) + public override Task ShouldSkip(TestContext testContext) { - if (!OperatingSystem.IsLinux()) - { - throw new SkipTestException("Linux only test"); - } - - return Task.CompletedTask; + return Task.FromResult(!OperatingSystem.IsLinux()); } } \ No newline at end of file diff --git a/test/ModularPipelines.UnitTests/Attributes/WindowsOnlyTestAttribute.cs b/test/ModularPipelines.UnitTests/Attributes/WindowsOnlyTestAttribute.cs index 2bdd825a43..a67fe9b112 100644 --- a/test/ModularPipelines.UnitTests/Attributes/WindowsOnlyTestAttribute.cs +++ b/test/ModularPipelines.UnitTests/Attributes/WindowsOnlyTestAttribute.cs @@ -1,19 +1,9 @@ -using TUnit.Core.Exceptions; -using TUnit.Core.Interfaces; - namespace ModularPipelines.UnitTests.Attributes; -[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)] -public class WindowsOnlyTestAttribute : Attribute, IApplicableTestAttribute +public class WindowsOnlyTestAttribute() : SkipAttribute("Windows only test") { - /// - public Task Apply(TestContext testContext) + public override Task ShouldSkip(TestContext testContext) { - if (!OperatingSystem.IsWindows()) - { - throw new SkipTestException("Windows only test"); - } - - return Task.CompletedTask; + return Task.FromResult(!OperatingSystem.IsWindows()); } } \ No newline at end of file From 4965f76f8338dcd3a86f21551c883595032e195f Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Fri, 12 Jul 2024 23:09:01 +0100 Subject: [PATCH 03/21] ReleaseNotes.md --- src/ModularPipelines.Build/ReleaseNotes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ModularPipelines.Build/ReleaseNotes.md b/src/ModularPipelines.Build/ReleaseNotes.md index e69de29bb2..ec747fa47d 100644 --- a/src/ModularPipelines.Build/ReleaseNotes.md +++ b/src/ModularPipelines.Build/ReleaseNotes.md @@ -0,0 +1 @@ +null \ No newline at end of file From ab5901aaccb10cab997dd685031a6090a2442de6 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sat, 13 Jul 2024 12:07:17 +0100 Subject: [PATCH 04/21] Log Debug --- src/ModularPipelines.GitHub/GitHubRepositoryInfo.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/ModularPipelines.GitHub/GitHubRepositoryInfo.cs b/src/ModularPipelines.GitHub/GitHubRepositoryInfo.cs index 519183199a..cefd533091 100644 --- a/src/ModularPipelines.GitHub/GitHubRepositoryInfo.cs +++ b/src/ModularPipelines.GitHub/GitHubRepositoryInfo.cs @@ -2,6 +2,8 @@ using System.Text.RegularExpressions; using Initialization.Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; using ModularPipelines.Enums; using ModularPipelines.Git; using ModularPipelines.Git.Options; @@ -38,12 +40,17 @@ public async Task InitializeAsync() await using var scope = _serviceProvider.CreateAsyncScope(); var git = scope.ServiceProvider.GetRequiredService(); - + var options = new GitRemoteOptions { Arguments = ["get-url", "origin"], ThrowOnNonZeroExitCode = false, - CommandLogging = CommandLogging.None, + CommandLogging = scope.ServiceProvider + .GetRequiredService>() + .Value + .MinLevel == LogLevel.Debug + ? CommandLogging.Default + : CommandLogging.None, }; var remote = await git.Commands.Remote(options); From 73eaa852025aeeec19a147003fdb310b6400bb18 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sat, 13 Jul 2024 12:09:43 +0100 Subject: [PATCH 05/21] Log error --- src/ModularPipelines.GitHub/GitHubRepositoryInfo.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ModularPipelines.GitHub/GitHubRepositoryInfo.cs b/src/ModularPipelines.GitHub/GitHubRepositoryInfo.cs index cefd533091..b68d670b80 100644 --- a/src/ModularPipelines.GitHub/GitHubRepositoryInfo.cs +++ b/src/ModularPipelines.GitHub/GitHubRepositoryInfo.cs @@ -15,6 +15,7 @@ namespace ModularPipelines.GitHub; internal record GitHubRepositoryInfo : IGitHubRepositoryInfo, IInitializer { private readonly IServiceProvider _serviceProvider; + private readonly ILogger _logger; public bool IsInitialized { get; private set; } @@ -26,9 +27,10 @@ internal record GitHubRepositoryInfo : IGitHubRepositoryInfo, IInitializer public string? RepositoryName { get; private set; } - public GitHubRepositoryInfo(IServiceProvider serviceProvider) + public GitHubRepositoryInfo(IServiceProvider serviceProvider, ILogger logger) { _serviceProvider = serviceProvider; + _logger = logger; } public async Task InitializeAsync() @@ -58,6 +60,8 @@ public async Task InitializeAsync() if (string.IsNullOrEmpty(remoteUrl)) { + _logger.LogWarning("Error when detecting GitHub git repository: {Error}", remote.StandardError); + // Will not initialize as git repo is not setup return; } From 399adca94836e2853162abc9f83dfb8bd7fe7c0c Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sat, 13 Jul 2024 12:33:50 +0100 Subject: [PATCH 06/21] TestHostSettings --- test/ModularPipelines.TestHelpers/TestBase.cs | 4 ++-- test/ModularPipelines.TestHelpers/TestHostSettings.cs | 8 ++++++++ .../TestPipelineHostBuilder.cs | 6 ++++-- .../Helpers/GitHubRepositoryInfoTests.cs | 6 +++++- 4 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 test/ModularPipelines.TestHelpers/TestHostSettings.cs diff --git a/test/ModularPipelines.TestHelpers/TestBase.cs b/test/ModularPipelines.TestHelpers/TestBase.cs index 591a81cd89..9876f133eb 100644 --- a/test/ModularPipelines.TestHelpers/TestBase.cs +++ b/test/ModularPipelines.TestHelpers/TestBase.cs @@ -24,10 +24,10 @@ private class DummyModule : Module } } - public async Task RunModule() + public async Task RunModule(TestHostSettings? testHostSettings = null) where T : ModuleBase { - var host = await TestPipelineHostBuilder.Create() + var host = await TestPipelineHostBuilder.Create(testHostSettings) .AddModule() .BuildHostAsync(); diff --git a/test/ModularPipelines.TestHelpers/TestHostSettings.cs b/test/ModularPipelines.TestHelpers/TestHostSettings.cs new file mode 100644 index 0000000000..b914ff3c1e --- /dev/null +++ b/test/ModularPipelines.TestHelpers/TestHostSettings.cs @@ -0,0 +1,8 @@ +using ModularPipelines.Enums; + +namespace ModularPipelines.TestHelpers; + +public record TestHostSettings +{ + public CommandLogging CommandLogging { get; init; } = CommandLogging.Input | CommandLogging.Error; +} \ No newline at end of file diff --git a/test/ModularPipelines.TestHelpers/TestPipelineHostBuilder.cs b/test/ModularPipelines.TestHelpers/TestPipelineHostBuilder.cs index 17e386f48a..54cd830d93 100644 --- a/test/ModularPipelines.TestHelpers/TestPipelineHostBuilder.cs +++ b/test/ModularPipelines.TestHelpers/TestPipelineHostBuilder.cs @@ -10,8 +10,10 @@ namespace ModularPipelines.TestHelpers; public static class TestPipelineHostBuilder { - public static PipelineHostBuilder Create() + public static PipelineHostBuilder Create(TestHostSettings? testHostSettings = null) { + testHostSettings ??= new TestHostSettings(); + return new PipelineHostBuilder() .SetLogLevel(LogLevel.Warning) .ConfigureServices((_, collection) => @@ -19,7 +21,7 @@ public static PipelineHostBuilder Create() collection.AddSingleton(new ArmClient(new DefaultAzureCredential())); collection.Configure(opt => { - opt.DefaultCommandLogging = CommandLogging.Input | CommandLogging.Error; + opt.DefaultCommandLogging = testHostSettings.CommandLogging; opt.ShowProgressInConsole = false; opt.PrintResults = false; }); diff --git a/test/ModularPipelines.UnitTests/Helpers/GitHubRepositoryInfoTests.cs b/test/ModularPipelines.UnitTests/Helpers/GitHubRepositoryInfoTests.cs index c311696a62..e4f528538b 100644 --- a/test/ModularPipelines.UnitTests/Helpers/GitHubRepositoryInfoTests.cs +++ b/test/ModularPipelines.UnitTests/Helpers/GitHubRepositoryInfoTests.cs @@ -1,4 +1,5 @@ using ModularPipelines.Context; +using ModularPipelines.Enums; using ModularPipelines.GitHub; using ModularPipelines.GitHub.Extensions; using ModularPipelines.Modules; @@ -21,7 +22,10 @@ public class GitRepoModule : Module [Test] public async Task GitHub_Repository_Information_Is_Populated() { - var gitRepoModule = await RunModule(); + var gitRepoModule = await RunModule(new TestHostSettings + { + CommandLogging = CommandLogging.Default + }); var gitHubRepositoryInfo = gitRepoModule.Result.Value!; From afe904b67313d778ccb72a52063bb957f135ae08 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sat, 13 Jul 2024 12:43:38 +0100 Subject: [PATCH 07/21] Fix --- test/ModularPipelines.TestHelpers/TestBase.cs | 4 +++- .../ModularPipelines.TestHelpers/TestPipelineHostBuilder.cs | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/test/ModularPipelines.TestHelpers/TestBase.cs b/test/ModularPipelines.TestHelpers/TestBase.cs index 9876f133eb..bd47396f42 100644 --- a/test/ModularPipelines.TestHelpers/TestBase.cs +++ b/test/ModularPipelines.TestHelpers/TestBase.cs @@ -24,7 +24,9 @@ private class DummyModule : Module } } - public async Task RunModule(TestHostSettings? testHostSettings = null) + public Task RunModule() where T : ModuleBase => RunModule(new TestHostSettings()); + + public async Task RunModule(TestHostSettings testHostSettings) where T : ModuleBase { var host = await TestPipelineHostBuilder.Create(testHostSettings) diff --git a/test/ModularPipelines.TestHelpers/TestPipelineHostBuilder.cs b/test/ModularPipelines.TestHelpers/TestPipelineHostBuilder.cs index 54cd830d93..fa87fff221 100644 --- a/test/ModularPipelines.TestHelpers/TestPipelineHostBuilder.cs +++ b/test/ModularPipelines.TestHelpers/TestPipelineHostBuilder.cs @@ -10,10 +10,10 @@ namespace ModularPipelines.TestHelpers; public static class TestPipelineHostBuilder { - public static PipelineHostBuilder Create(TestHostSettings? testHostSettings = null) + public static PipelineHostBuilder Create() => Create(new TestHostSettings()); + + public static PipelineHostBuilder Create(TestHostSettings testHostSettings) { - testHostSettings ??= new TestHostSettings(); - return new PipelineHostBuilder() .SetLogLevel(LogLevel.Warning) .ConfigureServices((_, collection) => From b164e4839130698985955159cb26149ec0e5e3f6 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sat, 13 Jul 2024 21:20:04 +0100 Subject: [PATCH 08/21] Write line --- .../Helpers/GitHubRepositoryInfoTests.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/ModularPipelines.UnitTests/Helpers/GitHubRepositoryInfoTests.cs b/test/ModularPipelines.UnitTests/Helpers/GitHubRepositoryInfoTests.cs index e4f528538b..c64520ac8b 100644 --- a/test/ModularPipelines.UnitTests/Helpers/GitHubRepositoryInfoTests.cs +++ b/test/ModularPipelines.UnitTests/Helpers/GitHubRepositoryInfoTests.cs @@ -29,6 +29,8 @@ public async Task GitHub_Repository_Information_Is_Populated() var gitHubRepositoryInfo = gitRepoModule.Result.Value!; + Console.WriteLine($"GitHub Repository Info is: {gitHubRepositoryInfo}"); + await Assert.That(gitHubRepositoryInfo.IsGitHub).Is.True(); await Assert.That(gitHubRepositoryInfo.IsInitialized).Is.True(); await Assert.That(gitHubRepositoryInfo.RepositoryName).Is.Not.Null() From ddd01a01809585890b369c3a75d2eab71035528e Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sat, 13 Jul 2024 21:35:58 +0100 Subject: [PATCH 09/21] Assert.Multiple() --- .../Helpers/GitHubRepositoryInfoTests.cs | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/test/ModularPipelines.UnitTests/Helpers/GitHubRepositoryInfoTests.cs b/test/ModularPipelines.UnitTests/Helpers/GitHubRepositoryInfoTests.cs index c64520ac8b..8dca5df0db 100644 --- a/test/ModularPipelines.UnitTests/Helpers/GitHubRepositoryInfoTests.cs +++ b/test/ModularPipelines.UnitTests/Helpers/GitHubRepositoryInfoTests.cs @@ -30,16 +30,20 @@ public async Task GitHub_Repository_Information_Is_Populated() var gitHubRepositoryInfo = gitRepoModule.Result.Value!; Console.WriteLine($"GitHub Repository Info is: {gitHubRepositoryInfo}"); - - await Assert.That(gitHubRepositoryInfo.IsGitHub).Is.True(); - await Assert.That(gitHubRepositoryInfo.IsInitialized).Is.True(); - await Assert.That(gitHubRepositoryInfo.RepositoryName).Is.Not.Null() - .And.Is.Not.Empty(); - await Assert.That(gitHubRepositoryInfo.Owner).Is.Not.Null() - .And.Is.Not.Empty(); - await Assert.That(gitHubRepositoryInfo.Endpoint).Is.Not.Null() - .And.Is.Not.Empty(); - await Assert.That(gitHubRepositoryInfo.Identifier).Is.Not.Null() - .And.Is.Not.Empty(); + + await using (Assert.Multiple()) + { + await Assert.That(gitHubRepositoryInfo).Is.Not.Null(); + await Assert.That(gitHubRepositoryInfo.IsInitialized).Is.True(); + await Assert.That(gitHubRepositoryInfo.IsGitHub).Is.True(); + await Assert.That(gitHubRepositoryInfo.RepositoryName).Is.Not.Null() + .And.Is.Not.Empty(); + await Assert.That(gitHubRepositoryInfo.Owner).Is.Not.Null() + .And.Is.Not.Empty(); + await Assert.That(gitHubRepositoryInfo.Endpoint).Is.Not.Null() + .And.Is.Not.Empty(); + await Assert.That(gitHubRepositoryInfo.Identifier).Is.Not.Null() + .And.Is.Not.Empty(); + } } } \ No newline at end of file From 58e386fd264c205080df275c7f4fcc567370c634 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sat, 13 Jul 2024 21:47:46 +0100 Subject: [PATCH 10/21] Configure logging in tests --- test/ModularPipelines.TestHelpers/TestHostSettings.cs | 5 ++++- .../TestPipelineHostBuilder.cs | 8 ++++++-- .../Helpers/GitHubRepositoryInfoTests.cs | 7 +++++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/test/ModularPipelines.TestHelpers/TestHostSettings.cs b/test/ModularPipelines.TestHelpers/TestHostSettings.cs index b914ff3c1e..2b33265f67 100644 --- a/test/ModularPipelines.TestHelpers/TestHostSettings.cs +++ b/test/ModularPipelines.TestHelpers/TestHostSettings.cs @@ -1,8 +1,11 @@ -using ModularPipelines.Enums; +using Microsoft.Extensions.Logging; +using ModularPipelines.Enums; namespace ModularPipelines.TestHelpers; public record TestHostSettings { public CommandLogging CommandLogging { get; init; } = CommandLogging.Input | CommandLogging.Error; + public LogLevel LogLevel { get; init; } = LogLevel.Warning; + public bool ClearLogProviders { get; init; } = true; } \ No newline at end of file diff --git a/test/ModularPipelines.TestHelpers/TestPipelineHostBuilder.cs b/test/ModularPipelines.TestHelpers/TestPipelineHostBuilder.cs index fa87fff221..b38420e0ed 100644 --- a/test/ModularPipelines.TestHelpers/TestPipelineHostBuilder.cs +++ b/test/ModularPipelines.TestHelpers/TestPipelineHostBuilder.cs @@ -15,7 +15,7 @@ public static class TestPipelineHostBuilder public static PipelineHostBuilder Create(TestHostSettings testHostSettings) { return new PipelineHostBuilder() - .SetLogLevel(LogLevel.Warning) + .SetLogLevel(testHostSettings.LogLevel) .ConfigureServices((_, collection) => { collection.AddSingleton(new ArmClient(new DefaultAzureCredential())); @@ -25,7 +25,11 @@ public static PipelineHostBuilder Create(TestHostSettings testHostSettings) opt.ShowProgressInConsole = false; opt.PrintResults = false; }); - collection.AddLogging(builder => builder.ClearProviders()); + + if(testHostSettings.ClearLogProviders) + { + collection.AddLogging(builder => builder.ClearProviders()); + } }); } } \ No newline at end of file diff --git a/test/ModularPipelines.UnitTests/Helpers/GitHubRepositoryInfoTests.cs b/test/ModularPipelines.UnitTests/Helpers/GitHubRepositoryInfoTests.cs index 8dca5df0db..13e714aefa 100644 --- a/test/ModularPipelines.UnitTests/Helpers/GitHubRepositoryInfoTests.cs +++ b/test/ModularPipelines.UnitTests/Helpers/GitHubRepositoryInfoTests.cs @@ -1,4 +1,5 @@ -using ModularPipelines.Context; +using Microsoft.Extensions.Logging; +using ModularPipelines.Context; using ModularPipelines.Enums; using ModularPipelines.GitHub; using ModularPipelines.GitHub.Extensions; @@ -24,7 +25,9 @@ public async Task GitHub_Repository_Information_Is_Populated() { var gitRepoModule = await RunModule(new TestHostSettings { - CommandLogging = CommandLogging.Default + CommandLogging = CommandLogging.Default, + LogLevel = LogLevel.Debug, + ClearLogProviders = false }); var gitHubRepositoryInfo = gitRepoModule.Result.Value!; From 39a994052fd163ef70281ba2e48b5a9fd65634ec Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sat, 13 Jul 2024 22:54:07 +0100 Subject: [PATCH 11/21] TUnit --- .../ModularPipelines.TestHelpers.csproj | 1 + .../ModularPipelines.UnitTests/ModularPipelines.UnitTests.csproj | 1 + 2 files changed, 2 insertions(+) diff --git a/test/ModularPipelines.TestHelpers/ModularPipelines.TestHelpers.csproj b/test/ModularPipelines.TestHelpers/ModularPipelines.TestHelpers.csproj index 36c30c1803..3a00d74766 100644 --- a/test/ModularPipelines.TestHelpers/ModularPipelines.TestHelpers.csproj +++ b/test/ModularPipelines.TestHelpers/ModularPipelines.TestHelpers.csproj @@ -13,6 +13,7 @@ + diff --git a/test/ModularPipelines.UnitTests/ModularPipelines.UnitTests.csproj b/test/ModularPipelines.UnitTests/ModularPipelines.UnitTests.csproj index 02f0a54fc8..1594896066 100644 --- a/test/ModularPipelines.UnitTests/ModularPipelines.UnitTests.csproj +++ b/test/ModularPipelines.UnitTests/ModularPipelines.UnitTests.csproj @@ -14,6 +14,7 @@ + From 7b245b50c3f34779f837890bc1c80a580fab0d88 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sat, 13 Jul 2024 23:21:57 +0100 Subject: [PATCH 12/21] Fix --- test/Directory.Build.props | 2 +- .../ModularPipelines.TestHelpers.csproj | 1 - .../ModularPipelines.UnitTests.csproj | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/test/Directory.Build.props b/test/Directory.Build.props index 400ea3992b..e57658df60 100644 --- a/test/Directory.Build.props +++ b/test/Directory.Build.props @@ -9,6 +9,6 @@ - + diff --git a/test/ModularPipelines.TestHelpers/ModularPipelines.TestHelpers.csproj b/test/ModularPipelines.TestHelpers/ModularPipelines.TestHelpers.csproj index 3a00d74766..36c30c1803 100644 --- a/test/ModularPipelines.TestHelpers/ModularPipelines.TestHelpers.csproj +++ b/test/ModularPipelines.TestHelpers/ModularPipelines.TestHelpers.csproj @@ -13,7 +13,6 @@ - diff --git a/test/ModularPipelines.UnitTests/ModularPipelines.UnitTests.csproj b/test/ModularPipelines.UnitTests/ModularPipelines.UnitTests.csproj index 1594896066..02f0a54fc8 100644 --- a/test/ModularPipelines.UnitTests/ModularPipelines.UnitTests.csproj +++ b/test/ModularPipelines.UnitTests/ModularPipelines.UnitTests.csproj @@ -14,7 +14,6 @@ - From 5faccca0bcc98208e3d64c2f0ebf008c1d1e43de Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sat, 13 Jul 2024 23:47:58 +0100 Subject: [PATCH 13/21] Fix --- test/Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Directory.Build.props b/test/Directory.Build.props index e57658df60..6c1081d690 100644 --- a/test/Directory.Build.props +++ b/test/Directory.Build.props @@ -9,6 +9,6 @@ - + From 4a8cdbfe36ccd669ee72255b43e743a9cc740ff7 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sun, 14 Jul 2024 00:03:56 +0100 Subject: [PATCH 14/21] Fix --- test/Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Directory.Build.props b/test/Directory.Build.props index 6c1081d690..b60fb8f140 100644 --- a/test/Directory.Build.props +++ b/test/Directory.Build.props @@ -9,6 +9,6 @@ - + From ce3b86d1307ce72c69e00d6002aa8a286cc76955 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sun, 14 Jul 2024 00:17:20 +0100 Subject: [PATCH 15/21] Fix --- test/Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Directory.Build.props b/test/Directory.Build.props index b60fb8f140..4d002ab1fd 100644 --- a/test/Directory.Build.props +++ b/test/Directory.Build.props @@ -9,6 +9,6 @@ - + From e2c0b9749dec2aec3df7bcc069f31affc8e7cb17 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sun, 14 Jul 2024 00:27:28 +0100 Subject: [PATCH 16/21] Tweak --- src/ModularPipelines/Engine/DependencyPrinter.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ModularPipelines/Engine/DependencyPrinter.cs b/src/ModularPipelines/Engine/DependencyPrinter.cs index 955840e6b7..46a0304adb 100644 --- a/src/ModularPipelines/Engine/DependencyPrinter.cs +++ b/src/ModularPipelines/Engine/DependencyPrinter.cs @@ -44,6 +44,11 @@ public void PrintDependencyChains() private void Print(string value) { + if (string.IsNullOrWhiteSpace(value)) + { + return; + } + Console.WriteLine(); _collapsableLogging.StartConsoleLogGroupDirectToConsole("Dependency Chains"); _logger.LogInformation("The following dependency chains have been detected:\r\n{Chain}", value); From db0a1f3d5fe5d90be00fef582ca52f24855216d2 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sun, 14 Jul 2024 00:33:40 +0100 Subject: [PATCH 17/21] Tweak to OptionsProvider to help with getting secret values --- src/ModularPipelines/Engine/OptionsProvider.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/ModularPipelines/Engine/OptionsProvider.cs b/src/ModularPipelines/Engine/OptionsProvider.cs index db1a0a8045..2d01a198d2 100644 --- a/src/ModularPipelines/Engine/OptionsProvider.cs +++ b/src/ModularPipelines/Engine/OptionsProvider.cs @@ -20,7 +20,18 @@ public OptionsProvider(IPipelineServiceContainerWrapper pipelineServiceContainer var types = _pipelineServiceContainerWrapper.ServiceCollection .Select(sd => sd.ServiceType) .Where(t => t.IsGenericType) - .Where(t => t.GetGenericTypeDefinition().IsAssignableTo(typeof(IConfigureOptions<>)) || t.GetGenericTypeDefinition().IsAssignableTo(typeof(IPostConfigureOptions<>))) + .Where(t => + { + var genericTypeDefinition = t.GetGenericTypeDefinition(); + + return genericTypeDefinition.IsAssignableTo(typeof(IConfigureOptions<>)) + || genericTypeDefinition.IsAssignableTo(typeof(IPostConfigureOptions<>)) + || genericTypeDefinition.IsAssignableTo(typeof(IOptions<>)) + || genericTypeDefinition.IsAssignableTo(typeof(IOptionsMonitor<>)) + || genericTypeDefinition.IsAssignableTo(typeof(IOptionsSnapshot<>)) + || genericTypeDefinition.IsAssignableTo(typeof(IValidateOptions<>)) + || genericTypeDefinition.IsAssignableTo(typeof(IConfigureNamedOptions<>)); + }) .Select(s => s.GetGenericArguments()[0]) .ToList(); From 6fa1436f08d260bcf818dc92ecf01bc690d1c0de Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sun, 14 Jul 2024 00:35:22 +0100 Subject: [PATCH 18/21] Fix array --- src/ModularPipelines/Engine/OptionsProvider.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ModularPipelines/Engine/OptionsProvider.cs b/src/ModularPipelines/Engine/OptionsProvider.cs index 2d01a198d2..87129ddb2f 100644 --- a/src/ModularPipelines/Engine/OptionsProvider.cs +++ b/src/ModularPipelines/Engine/OptionsProvider.cs @@ -35,7 +35,7 @@ public OptionsProvider(IPipelineServiceContainerWrapper pipelineServiceContainer .Select(s => s.GetGenericArguments()[0]) .ToList(); - foreach (var option in types.Select(t => _serviceProvider.GetService(typeof(IOptions<>).MakeGenericType([t])))) + foreach (var option in types.Select(t => _serviceProvider.GetService(typeof(IOptions<>).MakeGenericType(t))).Distinct()) { yield return option!.GetType().GetProperty("Value", BindingFlags.Public | BindingFlags.Instance)!.GetValue(option); } From e827dbbdb39da786fa47e498b4f1bb0cef4a8a6e Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sun, 14 Jul 2024 00:35:50 +0100 Subject: [PATCH 19/21] Move distinct --- src/ModularPipelines/Engine/OptionsProvider.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ModularPipelines/Engine/OptionsProvider.cs b/src/ModularPipelines/Engine/OptionsProvider.cs index 87129ddb2f..607268c1c8 100644 --- a/src/ModularPipelines/Engine/OptionsProvider.cs +++ b/src/ModularPipelines/Engine/OptionsProvider.cs @@ -35,7 +35,7 @@ public OptionsProvider(IPipelineServiceContainerWrapper pipelineServiceContainer .Select(s => s.GetGenericArguments()[0]) .ToList(); - foreach (var option in types.Select(t => _serviceProvider.GetService(typeof(IOptions<>).MakeGenericType(t))).Distinct()) + foreach (var option in types.Distinct().Select(t => _serviceProvider.GetService(typeof(IOptions<>).MakeGenericType(t)))) { yield return option!.GetType().GetProperty("Value", BindingFlags.Public | BindingFlags.Instance)!.GetValue(option); } From b67aebe20ab53dbfc3d0b85b82b44396d16e37d5 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sun, 14 Jul 2024 00:36:08 +0100 Subject: [PATCH 20/21] Move distinct --- src/ModularPipelines/Engine/OptionsProvider.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ModularPipelines/Engine/OptionsProvider.cs b/src/ModularPipelines/Engine/OptionsProvider.cs index 607268c1c8..7fcde8869a 100644 --- a/src/ModularPipelines/Engine/OptionsProvider.cs +++ b/src/ModularPipelines/Engine/OptionsProvider.cs @@ -33,9 +33,10 @@ public OptionsProvider(IPipelineServiceContainerWrapper pipelineServiceContainer || genericTypeDefinition.IsAssignableTo(typeof(IConfigureNamedOptions<>)); }) .Select(s => s.GetGenericArguments()[0]) + .Distinct() .ToList(); - foreach (var option in types.Distinct().Select(t => _serviceProvider.GetService(typeof(IOptions<>).MakeGenericType(t)))) + foreach (var option in types.Select(t => _serviceProvider.GetService(typeof(IOptions<>).MakeGenericType(t)))) { yield return option!.GetType().GetProperty("Value", BindingFlags.Public | BindingFlags.Instance)!.GetValue(option); } From 79fdcc1c692883b4f11bf9133b3436903cb8484d Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sun, 14 Jul 2024 00:46:18 +0100 Subject: [PATCH 21/21] IsConstructedGenericType --- src/ModularPipelines.GitHub/GitHubRepositoryInfo.cs | 2 +- src/ModularPipelines/Engine/OptionsProvider.cs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ModularPipelines.GitHub/GitHubRepositoryInfo.cs b/src/ModularPipelines.GitHub/GitHubRepositoryInfo.cs index b68d670b80..d024c6e9b8 100644 --- a/src/ModularPipelines.GitHub/GitHubRepositoryInfo.cs +++ b/src/ModularPipelines.GitHub/GitHubRepositoryInfo.cs @@ -69,7 +69,7 @@ public async Task InitializeAsync() // Parse owner and repository name from the remote URL var endpoint = "github"; var sshPattern = $@"git@{endpoint}\.com:(?.+)/(?.+)\.git"; - var httpsPattern = $@"https://{endpoint}\.com/(?.+)/(?.+)(\.git)?"; + var httpsPattern = $@"https://(.*@)?{endpoint}\.com/(?.+)/(?.+)(\.git)?"; var match = Regex.Match(remoteUrl, sshPattern); if (!match.Success) diff --git a/src/ModularPipelines/Engine/OptionsProvider.cs b/src/ModularPipelines/Engine/OptionsProvider.cs index 7fcde8869a..46a9158fb3 100644 --- a/src/ModularPipelines/Engine/OptionsProvider.cs +++ b/src/ModularPipelines/Engine/OptionsProvider.cs @@ -20,6 +20,7 @@ public OptionsProvider(IPipelineServiceContainerWrapper pipelineServiceContainer var types = _pipelineServiceContainerWrapper.ServiceCollection .Select(sd => sd.ServiceType) .Where(t => t.IsGenericType) + .Where(x => x.IsConstructedGenericType) .Where(t => { var genericTypeDefinition = t.GetGenericTypeDefinition();