From 42d363ccfda4f0ce9f1cb89905b4bd30b1b0a095 Mon Sep 17 00:00:00 2001 From: Anthony Simmon Date: Tue, 17 Jan 2023 10:05:00 -0500 Subject: [PATCH] Fix two memory leaks (#11) --- src/GSoft.Extensions.Xunit/BaseIntegrationFixture.cs | 2 ++ src/GSoft.Extensions.Xunit/BaseIntegrationTest.cs | 4 ++-- src/GSoft.Extensions.Xunit/BaseUnitFixture.cs | 7 +++++++ src/GSoft.Extensions.Xunit/BaseUnitTest.cs | 4 ++-- src/GSoft.Extensions.Xunit/PublicAPI.Shipped.txt | 4 ++-- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/GSoft.Extensions.Xunit/BaseIntegrationFixture.cs b/src/GSoft.Extensions.Xunit/BaseIntegrationFixture.cs index 0b01ae0..4ff2d08 100644 --- a/src/GSoft.Extensions.Xunit/BaseIntegrationFixture.cs +++ b/src/GSoft.Extensions.Xunit/BaseIntegrationFixture.cs @@ -19,6 +19,8 @@ protected BaseIntegrationFixture() protected override IConfigurationBuilder ConfigureConfiguration(IConfigurationBuilder builder) { + base.ConfigureConfiguration(builder); + builder.SetBasePath(AppContext.BaseDirectory); builder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: false); builder.AddJsonFile("appsettings." + this.Environment.EnvironmentName + ".json", optional: true, reloadOnChange: false); diff --git a/src/GSoft.Extensions.Xunit/BaseIntegrationTest.cs b/src/GSoft.Extensions.Xunit/BaseIntegrationTest.cs index f9bdb1e..6c2ba83 100644 --- a/src/GSoft.Extensions.Xunit/BaseIntegrationTest.cs +++ b/src/GSoft.Extensions.Xunit/BaseIntegrationTest.cs @@ -2,8 +2,8 @@ public abstract class BaseIntegrationTest : BaseIntegrationTest { - protected BaseIntegrationTest(ITestOutputHelper testOutputHelper) - : base(new EmptyIntegrationFixture(), testOutputHelper) + protected BaseIntegrationTest(EmptyIntegrationFixture fixture, ITestOutputHelper testOutputHelper) + : base(fixture, testOutputHelper) { } } diff --git a/src/GSoft.Extensions.Xunit/BaseUnitFixture.cs b/src/GSoft.Extensions.Xunit/BaseUnitFixture.cs index 6eab4fe..11f2783 100644 --- a/src/GSoft.Extensions.Xunit/BaseUnitFixture.cs +++ b/src/GSoft.Extensions.Xunit/BaseUnitFixture.cs @@ -60,6 +60,13 @@ protected virtual void Dispose(bool disposing) if (disposing) { this._loggerProvider.Dispose(); + + if (this._lazyConfiguration.IsValueCreated) + { + // ConfigurationRoot can contain disposable configuration providers: + // https://github.com/dotnet/runtime/blob/v6.0.0/src/libraries/Microsoft.Extensions.Configuration/src/ConfigurationRoot.cs#L99 + (this._lazyConfiguration.Value as IDisposable)?.Dispose(); + } } } diff --git a/src/GSoft.Extensions.Xunit/BaseUnitTest.cs b/src/GSoft.Extensions.Xunit/BaseUnitTest.cs index 1215c7c..6a2757b 100644 --- a/src/GSoft.Extensions.Xunit/BaseUnitTest.cs +++ b/src/GSoft.Extensions.Xunit/BaseUnitTest.cs @@ -6,8 +6,8 @@ namespace GSoft.Extensions.Xunit; public abstract class BaseUnitTest : BaseUnitTest { - protected BaseUnitTest(ITestOutputHelper testOutputHelper) - : base(new EmptyUnitFixture(), testOutputHelper) + protected BaseUnitTest(EmptyUnitFixture fixture, ITestOutputHelper testOutputHelper) + : base(fixture, testOutputHelper) { } } diff --git a/src/GSoft.Extensions.Xunit/PublicAPI.Shipped.txt b/src/GSoft.Extensions.Xunit/PublicAPI.Shipped.txt index f09a62e..ed2b29a 100644 --- a/src/GSoft.Extensions.Xunit/PublicAPI.Shipped.txt +++ b/src/GSoft.Extensions.Xunit/PublicAPI.Shipped.txt @@ -3,7 +3,7 @@ GSoft.Extensions.DependencyInjection.DecorationServiceCollectionExtensions GSoft.Extensions.Xunit.BaseIntegrationFixture GSoft.Extensions.Xunit.BaseIntegrationFixture.BaseIntegrationFixture() -> void GSoft.Extensions.Xunit.BaseIntegrationTest -GSoft.Extensions.Xunit.BaseIntegrationTest.BaseIntegrationTest(Xunit.Abstractions.ITestOutputHelper! testOutputHelper) -> void +GSoft.Extensions.Xunit.BaseIntegrationTest.BaseIntegrationTest(GSoft.Extensions.Xunit.EmptyIntegrationFixture! fixture, Xunit.Abstractions.ITestOutputHelper! testOutputHelper) -> void GSoft.Extensions.Xunit.BaseIntegrationTest GSoft.Extensions.Xunit.BaseIntegrationTest.BaseIntegrationTest(TFixture! fixture, Xunit.Abstractions.ITestOutputHelper! testOutputHelper) -> void GSoft.Extensions.Xunit.BaseUnitFixture @@ -12,7 +12,7 @@ GSoft.Extensions.Xunit.BaseUnitFixture.Configuration.get -> Microsoft.Extensions GSoft.Extensions.Xunit.BaseUnitFixture.Dispose() -> void GSoft.Extensions.Xunit.BaseUnitFixture.SetXunitOutput(Xunit.Abstractions.ITestOutputHelper! outputHelper) -> void GSoft.Extensions.Xunit.BaseUnitTest -GSoft.Extensions.Xunit.BaseUnitTest.BaseUnitTest(Xunit.Abstractions.ITestOutputHelper! testOutputHelper) -> void +GSoft.Extensions.Xunit.BaseUnitTest.BaseUnitTest(GSoft.Extensions.Xunit.EmptyUnitFixture! fixture, Xunit.Abstractions.ITestOutputHelper! testOutputHelper) -> void GSoft.Extensions.Xunit.BaseUnitTest GSoft.Extensions.Xunit.BaseUnitTest.BaseUnitTest(TFixture! fixture, Xunit.Abstractions.ITestOutputHelper! testOutputHelper) -> void GSoft.Extensions.Xunit.BaseUnitTest.Dispose() -> void