Skip to content

Commit fb1278a

Browse files
committed
Fix CA1001: Types that own disposable fields should be disposable
1 parent ee93822 commit fb1278a

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

test/OpenApiNSwagClientTests/FakeHttpClientWrapper.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ public JsonElement GetRequestBodyAsJson()
3636

3737
public static FakeHttpClientWrapper Create(HttpStatusCode statusCode, string? responseBody)
3838
{
39+
#pragma warning disable CA2000 // Dispose objects before losing scope
40+
// Justification: FakeHttpMessageHandler takes ownership, which is owned by FakeHttpClientWrapper.
3941
HttpResponseMessage response = CreateResponse(statusCode, responseBody);
42+
#pragma warning restore CA2000 // Dispose objects before losing scope
4043
var handler = new FakeHttpMessageHandler(response);
4144

4245
var httpClient = new HttpClient(handler)
@@ -107,5 +110,11 @@ protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage reques
107110
HttpResponseMessage response = Send(request, cancellationToken);
108111
return Task.FromResult(response);
109112
}
113+
114+
protected override void Dispose(bool disposing)
115+
{
116+
_response.Dispose();
117+
base.Dispose(disposing);
118+
}
110119
}
111120
}

test/TestBuildingBlocks/XUnitLogHttpMessageHandler.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,22 @@ namespace TestBuildingBlocks;
99
public sealed partial class XUnitLogHttpMessageHandler : DelegatingHandler
1010
{
1111
private static readonly string BodySeparator = $"{Environment.NewLine}{Environment.NewLine}";
12+
private readonly LoggerFactory _loggerFactory;
1213
private readonly ILogger<XUnitLogHttpMessageHandler> _logger;
1314

1415
public XUnitLogHttpMessageHandler(ITestOutputHelper testOutputHelper)
1516
{
1617
ArgumentNullException.ThrowIfNull(testOutputHelper);
1718

18-
_logger = CreateLogger(testOutputHelper);
19+
#pragma warning disable CA2000 // Dispose objects before losing scope
20+
// Justification: LoggerFactory.AddProvider takes ownership (passing the provider as a constructor parameter does not).
21+
var loggerProvider = new XUnitLoggerProvider(testOutputHelper, null, LogOutputFields.Message);
22+
#pragma warning restore CA2000 // Dispose objects before losing scope
23+
24+
_loggerFactory = new LoggerFactory();
25+
_loggerFactory.AddProvider(loggerProvider);
26+
27+
_logger = _loggerFactory.CreateLogger<XUnitLogHttpMessageHandler>();
1928
}
2029

2130
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
@@ -53,11 +62,10 @@ protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage
5362
return response;
5463
}
5564

56-
private static ILogger<XUnitLogHttpMessageHandler> CreateLogger(ITestOutputHelper testOutputHelper)
65+
protected override void Dispose(bool disposing)
5766
{
58-
var loggerProvider = new XUnitLoggerProvider(testOutputHelper, null, LogOutputFields.Message);
59-
var loggerFactory = new LoggerFactory([loggerProvider]);
60-
return loggerFactory.CreateLogger<XUnitLogHttpMessageHandler>();
67+
base.Dispose(disposing);
68+
_loggerFactory.Dispose();
6169
}
6270

6371
[LoggerMessage(Level = LogLevel.Debug, SkipEnabledCheck = true, Message = "--> {RequestMessage}{Separator}{RequestBody}")]

0 commit comments

Comments
 (0)