Skip to content

Commit a1025df

Browse files
Upgrade to xUnit v3 (#37)
1 parent ac0b284 commit a1025df

18 files changed

+150
-162
lines changed

Directory.Packages.props

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,16 @@
1010
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1111
</PackageVersion>
1212
<PackageVersion Include="Dapper" Version="2.1.66" />
13-
<PackageVersion Include="FluentAssertions" Version="6.12.2" />
13+
<PackageVersion Include="FluentAssertions" Version="7.2.0" />
1414
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="8.0.15" />
1515
<PackageVersion Include="Microsoft.Extensions.Diagnostics" Version="8.0.1" />
1616
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="8.0.1" />
1717
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
1818
<PackageVersion Include="Microsoft.Extensions.TimeProvider.Testing" Version="8.10.0" />
19-
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
19+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
2020
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
2121
<PackageVersion Include="MinVer" Version="6.0.0" />
22-
<PackageVersion Include="MongoDB.Driver" Version="3.3.0" />
22+
<PackageVersion Include="MongoDB.Driver" Version="3.4.0" />
2323
<PackageVersion Include="MySqlConnector" Version="2.4.0" />
2424
<PackageVersion Include="MySqlConnector.DependencyInjection" Version="2.4.0" />
2525
<PackageVersion Include="Nito.AsyncEx.Coordination" Version="5.1.2" />
@@ -30,13 +30,10 @@
3030
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.9.0" />
3131
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="8.0.3" />
3232
<PackageVersion Include="RabbitMQ.Client" Version="6.8.1" />
33-
<PackageVersion Include="Testcontainers" Version="4.4.0" />
34-
<PackageVersion Include="Testcontainers.MySql" Version="4.4.0" />
35-
<PackageVersion Include="Testcontainers.MongoDb" Version="4.4.0" />
36-
<PackageVersion Include="xunit" Version="2.9.3" />
37-
<PackageVersion Include="xunit.runner.visualstudio" Version="3.0.2">
38-
<PrivateAssets>all</PrivateAssets>
39-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
40-
</PackageVersion>
33+
<PackageVersion Include="Testcontainers" Version="4.6.0" />
34+
<PackageVersion Include="Testcontainers.MySql" Version="4.6.0" />
35+
<PackageVersion Include="Testcontainers.MongoDb" Version="4.6.0" />
36+
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.1" />
37+
<PackageVersion Include="xunit.v3" Version="2.0.3" />
4138
</ItemGroup>
4239
</Project>

OutboxKit.sln

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProducerShared", "samples\m
4141
EndProject
4242
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MongoDb", "src\MongoDb\MongoDb.csproj", "{62F7D497-5170-4B0D-80B6-38C597FB979C}"
4343
EndProject
44-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MongoDb.Tests", "tests\MongoDb.Tests\MongoDb.Tests.csproj", "{2B7C9828-7A30-4B91-A0AC-5D82820B224D}"
45-
EndProject
4644
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "mongodb", "mongodb", "{114820B8-6912-4F74-85F6-EB25CAE48BF9}"
4745
EndProject
4846
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MongoDbPollingSample", "samples\mongodb\MongoDbPollingSample\MongoDbPollingSample.csproj", "{C097DEE3-EDF3-4CD4-A7F2-DD4796A41874}"
4947
EndProject
5048
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MongoDbMultiDbPollingSample", "samples\mongodb\MongoDbMultiDbPollingSample\MongoDbMultiDbPollingSample.csproj", "{F5C31DA0-FE7B-4471-884E-E8BEE095ED6D}"
5149
EndProject
50+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MongoDb.Tests", "tests\MongoDb.Tests\MongoDb.Tests.csproj", "{1AE7C2D3-AC2D-4FD9-98B7-1256350A704C}"
51+
EndProject
5252
Global
5353
GlobalSection(SolutionConfigurationPlatforms) = preSolution
5454
Debug|Any CPU = Debug|Any CPU
@@ -110,10 +110,6 @@ Global
110110
{62F7D497-5170-4B0D-80B6-38C597FB979C}.Debug|Any CPU.Build.0 = Debug|Any CPU
111111
{62F7D497-5170-4B0D-80B6-38C597FB979C}.Release|Any CPU.ActiveCfg = Release|Any CPU
112112
{62F7D497-5170-4B0D-80B6-38C597FB979C}.Release|Any CPU.Build.0 = Release|Any CPU
113-
{2B7C9828-7A30-4B91-A0AC-5D82820B224D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
114-
{2B7C9828-7A30-4B91-A0AC-5D82820B224D}.Debug|Any CPU.Build.0 = Debug|Any CPU
115-
{2B7C9828-7A30-4B91-A0AC-5D82820B224D}.Release|Any CPU.ActiveCfg = Release|Any CPU
116-
{2B7C9828-7A30-4B91-A0AC-5D82820B224D}.Release|Any CPU.Build.0 = Release|Any CPU
117113
{C097DEE3-EDF3-4CD4-A7F2-DD4796A41874}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
118114
{C097DEE3-EDF3-4CD4-A7F2-DD4796A41874}.Debug|Any CPU.Build.0 = Debug|Any CPU
119115
{C097DEE3-EDF3-4CD4-A7F2-DD4796A41874}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -122,6 +118,10 @@ Global
122118
{F5C31DA0-FE7B-4471-884E-E8BEE095ED6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
123119
{F5C31DA0-FE7B-4471-884E-E8BEE095ED6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
124120
{F5C31DA0-FE7B-4471-884E-E8BEE095ED6D}.Release|Any CPU.Build.0 = Release|Any CPU
121+
{1AE7C2D3-AC2D-4FD9-98B7-1256350A704C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
122+
{1AE7C2D3-AC2D-4FD9-98B7-1256350A704C}.Debug|Any CPU.Build.0 = Debug|Any CPU
123+
{1AE7C2D3-AC2D-4FD9-98B7-1256350A704C}.Release|Any CPU.ActiveCfg = Release|Any CPU
124+
{1AE7C2D3-AC2D-4FD9-98B7-1256350A704C}.Release|Any CPU.Build.0 = Release|Any CPU
125125
EndGlobalSection
126126
GlobalSection(NestedProjects) = preSolution
127127
{9E17490D-8407-441F-AF33-620EAD39C9AD} = {E1748C96-94CD-479F-BF71-585EB56C9FBF}
@@ -139,9 +139,9 @@ Global
139139
{EFEE7AA2-19CC-4029-BCEE-2C79E148C8EC} = {846CDA36-9F33-4870-8C3B-0BC8DC3EC11B}
140140
{13B80164-E50C-448E-9A38-C6D7A5313DC9} = {846CDA36-9F33-4870-8C3B-0BC8DC3EC11B}
141141
{62F7D497-5170-4B0D-80B6-38C597FB979C} = {E1748C96-94CD-479F-BF71-585EB56C9FBF}
142-
{2B7C9828-7A30-4B91-A0AC-5D82820B224D} = {7DDB9CD3-11D6-4036-B0F5-19315D4FA1DD}
143142
{114820B8-6912-4F74-85F6-EB25CAE48BF9} = {2C240B41-C6C9-4921-9139-ECB2AA468316}
144143
{C097DEE3-EDF3-4CD4-A7F2-DD4796A41874} = {114820B8-6912-4F74-85F6-EB25CAE48BF9}
145144
{F5C31DA0-FE7B-4471-884E-E8BEE095ED6D} = {114820B8-6912-4F74-85F6-EB25CAE48BF9}
145+
{1AE7C2D3-AC2D-4FD9-98B7-1256350A704C} = {7DDB9CD3-11D6-4036-B0F5-19315D4FA1DD}
146146
EndGlobalSection
147147
EndGlobal

tests/Core.Tests/CleanUp/CleanUpBackgroundServiceTests.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public class CleanUpBackgroundServiceTests
1414
private readonly FakeTimeProvider _timeProvider = new();
1515
private readonly CoreCleanUpSettings _settings = new();
1616
private readonly CleanerMetrics _metrics = new(CreateMeterFactoryStub());
17+
private readonly CancellationToken _ct = TestContext.Current.CancellationToken;
1718

1819
[Fact]
1920
public async Task WhenServiceStartsTheCleanerIsInvoked()
@@ -28,7 +29,7 @@ public async Task WhenServiceStartsTheCleanerIsInvoked()
2829
Logger);
2930

3031
await sut.StartAsync(CancellationToken.None);
31-
await Task.Delay(TimeSpan.FromMilliseconds(100)); // give it a bit to run and block
32+
await Task.Delay(TimeSpan.FromMilliseconds(100), _ct); // give it a bit to run and block
3233

3334
await cleanerSpy.Received(1).CleanAsync(Arg.Any<CancellationToken>());
3435
}
@@ -46,11 +47,11 @@ public async Task UntilIntervalIsReachedTheCleanerIsNotInvokedAgain()
4647
Logger);
4748

4849
await sut.StartAsync(CancellationToken.None);
49-
await Task.Delay(TimeSpan.FromMilliseconds(100)); // give it a bit to run and block
50+
await Task.Delay(TimeSpan.FromMilliseconds(100), _ct); // give it a bit to run and block
5051
cleanerSpy.ClearReceivedCalls(); // ignore startup call
5152

5253
_timeProvider.Advance(_settings.CleanUpInterval - TimeSpan.FromMilliseconds(1));
53-
await Task.Delay(TimeSpan.FromMilliseconds(100)); // give it a bit to run again
54+
await Task.Delay(TimeSpan.FromMilliseconds(100), _ct); // give it a bit to run again
5455

5556
await cleanerSpy.Received(0).CleanAsync(Arg.Any<CancellationToken>());
5657
}
@@ -68,11 +69,11 @@ public async Task WhenIntervalIsReachedTheCleanerIsInvokedAgain()
6869
Logger);
6970

7071
await sut.StartAsync(CancellationToken.None);
71-
await Task.Delay(TimeSpan.FromMilliseconds(100)); // give it a bit to run and block
72+
await Task.Delay(TimeSpan.FromMilliseconds(100), _ct); // give it a bit to run and block
7273
cleanerSpy.ClearReceivedCalls(); // ignore startup call
7374

7475
_timeProvider.Advance(_settings.CleanUpInterval);
75-
await Task.Delay(TimeSpan.FromMilliseconds(100)); // give it a bit to run again
76+
await Task.Delay(TimeSpan.FromMilliseconds(100), _ct); // give it a bit to run again
7677

7778
await cleanerSpy.Received(1).CleanAsync(Arg.Any<CancellationToken>());
7879
}

tests/Core.Tests/Core.Tests.csproj

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
<IsTestProject>true</IsTestProject>
77
</PropertyGroup>
88

9+
<ItemGroup>
10+
<Content Include="xunit.runner.json" CopyToOutputDirectory="PreserveNewest"/>
11+
</ItemGroup>
12+
913
<ItemGroup>
1014
<PackageReference Include="coverlet.collector">
1115
<PrivateAssets>all</PrivateAssets>
@@ -14,13 +18,10 @@
1418
<PackageReference Include="FluentAssertions" />
1519
<PackageReference Include="Microsoft.Extensions.Diagnostics" />
1620
<PackageReference Include="Microsoft.Extensions.TimeProvider.Testing" />
17-
<PackageReference Include="Microsoft.NET.Test.Sdk" />
21+
<PackageReference Include="Microsoft.NET.Test.Sdk"/>
22+
<PackageReference Include="xunit.v3"/>
23+
<PackageReference Include="xunit.runner.visualstudio"/>
1824
<PackageReference Include="NSubstitute" />
19-
<PackageReference Include="xunit" />
20-
<PackageReference Include="xunit.runner.visualstudio">
21-
<PrivateAssets>all</PrivateAssets>
22-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
23-
</PackageReference>
2425
</ItemGroup>
2526

2627
<ItemGroup>

tests/Core.Tests/Polling/PollingBackgroundServiceTests.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public class PollingBackgroundServiceTests
1313
private readonly Listener _listener = new();
1414
private readonly FakeTimeProvider _timeProvider = new();
1515
private readonly CorePollingSettings _settings = new();
16+
private readonly CancellationToken _ct = TestContext.Current.CancellationToken;
1617

1718
[Fact]
1819
public async Task WhenServiceStartsTheProducerIsInvoked()
@@ -21,7 +22,7 @@ public async Task WhenServiceStartsTheProducerIsInvoked()
2122
var sut = new PollingBackgroundService(Key, _listener, producerSpy, _timeProvider, _settings, Logger);
2223

2324
await sut.StartAsync(CancellationToken.None);
24-
await Task.Delay(TimeSpan.FromMilliseconds(100)); // give it a bit to run and block
25+
await Task.Delay(TimeSpan.FromMilliseconds(100), _ct); // give it a bit to run and block
2526

2627
await producerSpy.Received(1).ProducePendingAsync(Arg.Any<CancellationToken>());
2728
}
@@ -33,11 +34,11 @@ public async Task UntilPollingIntervalIsReachedTheProducerIsNotInvokedAgain()
3334
var sut = new PollingBackgroundService(Key, _listener, producerSpy, _timeProvider, _settings, Logger);
3435

3536
await sut.StartAsync(CancellationToken.None);
36-
await Task.Delay(TimeSpan.FromMilliseconds(100)); // give it a bit to run and block
37+
await Task.Delay(TimeSpan.FromMilliseconds(100), _ct); // give it a bit to run and block
3738
producerSpy.ClearReceivedCalls(); // ignore startup call
3839

3940
_timeProvider.Advance(_settings.PollingInterval - TimeSpan.FromMilliseconds(1));
40-
await Task.Delay(TimeSpan.FromMilliseconds(100)); // give it a bit to run again
41+
await Task.Delay(TimeSpan.FromMilliseconds(100), _ct); // give it a bit to run again
4142

4243
await producerSpy.Received(0).ProducePendingAsync(Arg.Any<CancellationToken>());
4344
}
@@ -49,11 +50,11 @@ public async Task WhenPollingIntervalIsReachedThenTheProducerIsInvokedAgain()
4950
var sut = new PollingBackgroundService(Key, _listener, producerSpy, _timeProvider, _settings, Logger);
5051

5152
await sut.StartAsync(CancellationToken.None);
52-
await Task.Delay(TimeSpan.FromMilliseconds(100)); // give it a bit to run and block
53+
await Task.Delay(TimeSpan.FromMilliseconds(100), _ct); // give it a bit to run and block
5354
producerSpy.ClearReceivedCalls(); // ignore startup call
5455

5556
_timeProvider.Advance(_settings.PollingInterval);
56-
await Task.Delay(TimeSpan.FromMilliseconds(100)); // give it a bit to run again
57+
await Task.Delay(TimeSpan.FromMilliseconds(100), _ct); // give it a bit to run again
5758

5859
await producerSpy.Received(1).ProducePendingAsync(Arg.Any<CancellationToken>());
5960
}
@@ -66,11 +67,11 @@ public async Task WhenListenerIsTriggeredThenTheProducerIsInvokedAgain()
6667
var sut = new PollingBackgroundService(Key, _listener, producerSpy, _timeProvider, _settings, Logger);
6768

6869
await sut.StartAsync(CancellationToken.None);
69-
await Task.Delay(TimeSpan.FromMilliseconds(100)); // give it a bit to run and block
70+
await Task.Delay(TimeSpan.FromMilliseconds(100), _ct); // give it a bit to run and block
7071
producerSpy.ClearReceivedCalls(); // ignore startup call
7172

7273
_listener.OnNewMessages();
73-
await Task.Delay(TimeSpan.FromMilliseconds(100)); // give it a bit to run again
74+
await Task.Delay(TimeSpan.FromMilliseconds(100), _ct); // give it a bit to run again
7475

7576
await producerSpy.Received(1).ProducePendingAsync(Arg.Any<CancellationToken>());
7677
}

tests/Core.Tests/xunit.runner.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"$schema": "https://xunit.net/schema/current/xunit.runner.schema.json"
3+
}

tests/MongoDb.Tests/CleanUp/CleanerTests.cs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,15 @@
55

66
namespace YakShaveFx.OutboxKit.MongoDb.Tests.CleanUp;
77

8-
[Collection(MongoDbCollection.Name)]
98
public class CleanerTests
109
{
1110
private readonly string _databaseName = $"test_{Guid.NewGuid():N}";
12-
private readonly MongoDbFixture _fixture;
1311
private readonly IMongoDatabase _db;
12+
private readonly CancellationToken _ct = TestContext.Current.CancellationToken;
1413

1514
public CleanerTests(MongoDbFixture fixture)
16-
{
17-
_fixture = fixture;
18-
_db = new MongoClient(fixture.ConnectionString).GetDatabase(_databaseName);
19-
}
20-
15+
=> _db = new MongoClient(fixture.ConnectionString).GetDatabase(_databaseName);
16+
2117
[Theory]
2218
[InlineData(10, 0, 0)]
2319
[InlineData(10, 5, 5)]
@@ -52,7 +48,7 @@ public async Task WhenCleaningUpTheOutboxAllExpiredProcessedMessagesAreDeletedWh
5248
TraceContext = null
5349
})
5450
.ToArray();
55-
await collection.InsertManyAsync(messages);
51+
await collection.InsertManyAsync(messages, cancellationToken: _ct);
5652

5753
var sut = new Cleaner<TestMessageWithProcessedAt>(
5854
cleanupSettings,
Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

3-
<PropertyGroup>
4-
<RootNamespace>YakShaveFx.OutboxKit.MongoDb.Tests</RootNamespace>
5-
<IsPackable>false</IsPackable>
6-
<IsTestProject>true</IsTestProject>
7-
</PropertyGroup>
3+
<PropertyGroup>
4+
<RootNamespace>YakShaveFx.OutboxKit.MongoDb.Tests</RootNamespace>
5+
<IsPackable>false</IsPackable>
6+
<IsTestProject>true</IsTestProject>
7+
</PropertyGroup>
88

9-
<ItemGroup>
10-
<PackageReference Include="coverlet.collector">
11-
<PrivateAssets>all</PrivateAssets>
12-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
13-
</PackageReference>
14-
<PackageReference Include="FluentAssertions" />
15-
<PackageReference Include="Microsoft.Extensions.TimeProvider.Testing" />
16-
<PackageReference Include="Microsoft.NET.Test.Sdk" />
17-
<PackageReference Include="Testcontainers" />
18-
<PackageReference Include="Testcontainers.MongoDb" />
19-
<PackageReference Include="xunit" />
20-
<PackageReference Include="xunit.runner.visualstudio">
21-
<PrivateAssets>all</PrivateAssets>
22-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
23-
</PackageReference>
24-
</ItemGroup>
9+
<ItemGroup>
10+
<Content Include="xunit.runner.json" CopyToOutputDirectory="PreserveNewest"/>
11+
</ItemGroup>
2512

26-
<ItemGroup>
27-
<Using Include="Xunit" />
28-
<Using Include="FluentAssertions" />
29-
</ItemGroup>
13+
<ItemGroup>
14+
<Using Include="Xunit"/>
15+
</ItemGroup>
3016

31-
<ItemGroup>
32-
<ProjectReference Include="..\..\src\MongoDb\MongoDb.csproj" />
33-
</ItemGroup>
17+
<ItemGroup>
18+
<PackageReference Include="coverlet.collector">
19+
<PrivateAssets>all</PrivateAssets>
20+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
21+
</PackageReference>
22+
<PackageReference Include="FluentAssertions"/>
23+
<PackageReference Include="Microsoft.Extensions.TimeProvider.Testing"/>
24+
<PackageReference Include="Microsoft.NET.Test.Sdk"/>
25+
<PackageReference Include="xunit.v3"/>
26+
<PackageReference Include="xunit.runner.visualstudio"/>
27+
<PackageReference Include="Testcontainers"/>
28+
<PackageReference Include="Testcontainers.MongoDb"/>
29+
</ItemGroup>
30+
31+
<ItemGroup>
32+
<ProjectReference Include="..\..\src\MongoDb\MongoDb.csproj"/>
33+
</ItemGroup>
3434

3535
</Project>
Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,9 @@
11
using Testcontainers.MongoDb;
2+
using YakShaveFx.OutboxKit.MongoDb.Tests;
23

3-
namespace YakShaveFx.OutboxKit.MongoDb.Tests;
4-
5-
// in xunit 3, we'll be able to use assembly fixtures to share the container across all tests
6-
// until then, we'll have to use a collection fixture (though this means the tests don't run in parallel)
7-
[CollectionDefinition(Name)]
8-
public sealed class MongoDbCollection : ICollectionFixture<MongoDbFixture>
9-
{
10-
public const string Name = "MongoDB collection";
4+
[assembly: AssemblyFixture(typeof(MongoDbFixture))]
115

12-
// This class has no code, and is never created. Its purpose is simply
13-
// to be the place to apply [CollectionDefinition] and all the
14-
// ICollectionFixture<> interfaces.
15-
}
6+
namespace YakShaveFx.OutboxKit.MongoDb.Tests;
167

178
// ReSharper disable once ClassNeverInstantiated.Global - it's instantiated by xUnit
189
public sealed class MongoDbFixture : IAsyncLifetime
@@ -27,7 +18,7 @@ public sealed class MongoDbFixture : IAsyncLifetime
2718

2819
public string ConnectionString => _container.GetConnectionString();
2920

30-
public async Task InitializeAsync() => await _container.StartAsync();
21+
public async ValueTask InitializeAsync() => await _container.StartAsync();
3122

32-
public async Task DisposeAsync() => await _container.DisposeAsync();
23+
public async ValueTask DisposeAsync() => await _container.DisposeAsync();
3324
}

0 commit comments

Comments
 (0)