Skip to content

Commit 31a1062

Browse files
committed
Update packages
Migrate to Xunit.v3
1 parent 370b942 commit 31a1062

15 files changed

+94
-67
lines changed

Imports/Tests.props

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
22

33
<PropertyGroup>
4-
<OutputType>Library</OutputType>
4+
<OutputType>Exe</OutputType>
55
<IsPackable>false</IsPackable>
6+
<UseMicrosoftTestingPlatformRunner>true</UseMicrosoftTestingPlatformRunner>
7+
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
68
</PropertyGroup>
79

810
<ItemGroup>
911
<Using Include="Xunit" />
10-
<Using Include="Xunit.Abstractions" />
1112
<AssemblyAttribute Include="System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute" />
1213
</ItemGroup>
1314

@@ -17,11 +18,7 @@
1718

1819
<ItemGroup>
1920
<PackageReference Include="Microsoft.NET.Test.Sdk" PrivateAssets="all" />
20-
<PackageReference Include="xunit" PrivateAssets="all" />
21-
</ItemGroup>
22-
23-
<ItemGroup Condition="'$(IncludeAnalyzers)' == 'True'">
24-
<PackageReference Include="xunit.analyzers" PrivateAssets="all" />
21+
<PackageReference Include="xunit.v3.mtp-v2" PrivateAssets="all" />
2522
</ItemGroup>
2623

2724
<Import Project="../Locals/Tests.props" Condition="Exists('../Locals/Tests.props')" />

Locals/Directory.Packages.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<PackageVersion Include="Enums.NET" Version="5.0.0" />
55
<PackageVersion Include="FluentValidation" Version="11.10.0" />
66
<PackageVersion Include="Genbox.HttpBuilders" Version="1.1.0" />
7-
<PackageVersion Include="MartinCostello.Logging.XUnit" Version="0.6.0" />
7+
<PackageVersion Include="MartinCostello.Logging.XUnit.v3" Version="0.7.0" />
88
<PackageVersion Include="Microsoft.AspNetCore.DataProtection" Version="8.0.10" />
99
<PackageVersion Include="Microsoft.AspNetCore.Server.Kestrel.Core" Version="2.2.0" />
1010
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />

Locals/Tests.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
</ItemGroup>
1010

1111
<ItemGroup>
12-
<PackageReference Include="MartinCostello.Logging.XUnit" />
12+
<PackageReference Include="MartinCostello.Logging.XUnit.V3" />
1313
</ItemGroup>
1414

1515
</Project>

Src/Directory.Build.props

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<!--Default project info-->
44
<PropertyGroup>
55
<Authors>Ian Qvist</Authors>
6-
<Copyright>Copyright 2024, by Ian Qvist. All rights reserved.</Copyright>
6+
<Copyright>Copyright 2025, by Ian Qvist. All rights reserved.</Copyright>
77
</PropertyGroup>
88

99
<!--Default project settings-->
@@ -48,6 +48,7 @@
4848
<CopyRetryCount>2</CopyRetryCount>
4949
<CopyRetryDelayMilliseconds>500</CopyRetryDelayMilliseconds>
5050
<ErrorReport>none</ErrorReport>
51+
<SatelliteResourceLanguages>en-US;en</SatelliteResourceLanguages>
5152

5253
<!--Force reproducible builds-->
5354
<DisableImplicitNuGetFallbackFolder>true</DisableImplicitNuGetFallbackFolder>

Src/Directory.Packages.Analyzers.props

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,15 @@
66
<PackageVersion Include="AspNetCoreAnalyzers" Version="0.3.0" />
77
<PackageVersion Include="ConfigureAwaitChecker.Analyzer" Version="5.0.0.1" />
88
<PackageVersion Include="IDisposableAnalyzers" Version="4.0.8" />
9-
<PackageVersion Include="Meziantou.Analyzer" Version="2.0.205" />
9+
<PackageVersion Include="Meziantou.Analyzer" Version="2.0.253" />
1010
<PackageVersion Include="Microsoft.VisualStudio.Threading.Analyzers" Version="17.14.15" />
1111
<PackageVersion Include="NetFabric.Hyperlinq.Analyzer" Version="2.3.0" />
1212
<PackageVersion Include="ReflectionAnalyzers" Version="0.3.1" />
13-
<PackageVersion Include="Roslynator.Analyzers" Version="4.13.1" />
13+
<PackageVersion Include="Roslynator.Analyzers" Version="4.14.1" />
1414
<PackageVersion Include="SharpSource" Version="1.27.1" />
1515
<PackageVersion Include="SmartAnalyzers.MultithreadingAnalyzer" Version="1.1.31" />
1616
<PackageVersion Include="SmartanAlyzers.ExceptionAnalyzer" Version="1.0.10" />
17-
<PackageVersion Include="SonarAnalyzer.CSharp" Version="10.12.0.118525" />
17+
<PackageVersion Include="SonarAnalyzer.CSharp" Version="10.15.0.120848" />
1818
<PackageVersion Include="ToStringWithoutOverrideAnalyzer" Version="0.6.0" />
19-
20-
<!--test analyzers-->
21-
<PackageVersion Include="xunit.analyzers" Version="1.22.0" />
2219
</ItemGroup>
2320
</Project>

Src/Directory.Packages.props

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,13 @@
55

66
<ItemGroup>
77
<!--test packages-->
8-
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
9-
<PackageVersion Include="xunit" Version="2.9.3" />
10-
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2" />
8+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
9+
<PackageVersion Include="xunit.v3.mtp-v2" Version="3.2.0" />
1110
<!--dev packages-->
1211
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
1312
<PackageVersion Include="MinVer" Version="6.0.0" />
14-
<PackageVersion Include="JetBrains.Annotations" Version="2024.3.0" />
13+
<PackageVersion Include="JetBrains.Annotations" Version="2025.2.2" />
1514
<!--benchmark packages-->
16-
<PackageVersion Include="BenchmarkDotNet" Version="0.15.2" />
15+
<PackageVersion Include="BenchmarkDotNet" Version="0.15.6" />
1716
</ItemGroup>
1817
</Project>

Src/ProviderTests/Buckets/BucketLockConfigurationTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace Genbox.ProviderTests.Buckets;
99
public class BucketLockConfigurationTests : TestBase
1010
{
1111
[Theory]
12-
[MultipleProviders(S3Provider.AmazonS3, LockMode.Compliance, LockMode.Governance)]
12+
[MultipleProvidersWithData(S3Provider.AmazonS3, LockMode.Compliance, LockMode.Governance)]
1313
public async Task GetPutBucketLockConfiguration(S3Provider provider, string _, ISimpleClient client, LockMode mode)
1414
{
1515
await CreateTempBucketAsync(provider, client, async tempBucket =>

Src/ProviderTests/Code/MultipleProvidersAttribute.cs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,32 @@
33
using Genbox.SimpleS3.Extensions.ProfileManager.Abstracts;
44
using Genbox.SimpleS3.Utility.Shared;
55
using Xunit.Sdk;
6+
using Xunit.v3;
67

78
namespace Genbox.ProviderTests.Code;
89

910
/// <summary>
1011
/// Intended for multiple providers. Providers not enabled will show up as skipped. Used to show providers that don't support a particular action.
1112
/// </summary>
12-
internal sealed class MultipleProvidersAttribute(S3Provider providers, params object[] otherData) : DataAttribute
13+
internal sealed class MultipleProvidersAttribute(S3Provider providers) : DataAttribute
1314
{
14-
private bool _shouldSkip;
15-
16-
public override string? Skip => _shouldSkip ? "Not supported" : null;
17-
18-
public override IEnumerable<object?[]> GetData(MethodInfo testMethod)
15+
public override ValueTask<IReadOnlyCollection<ITheoryDataRow>> GetData(MethodInfo testMethod, DisposalTracker disposalTracker)
1916
{
17+
TheoryData<S3Provider, string, ISimpleClient> data = new TheoryData<S3Provider, string, ISimpleClient>();
18+
2019
foreach ((S3Provider provider, IProfile profile, ISimpleClient client) in ProviderSetup.Instance.Clients)
2120
{
22-
_shouldSkip = !providers.HasFlag(provider);
2321
string bucket = UtilityHelper.GetTestBucket(profile);
22+
TheoryDataRow<S3Provider, string, ISimpleClient> row = new TheoryDataRow<S3Provider, string, ISimpleClient>(provider, bucket, client);
2423

25-
if (otherData.Length > 0)
26-
{
27-
foreach (object o in otherData)
28-
yield return [provider, bucket, client, o];
29-
}
30-
else
31-
yield return [provider, bucket, client];
24+
if (!providers.HasFlag(provider))
25+
row.Skip = "Not supported";
26+
27+
data.Add(row);
3228
}
29+
30+
return ValueTask.FromResult<IReadOnlyCollection<ITheoryDataRow>>(data);
3331
}
32+
33+
public override bool SupportsDiscoveryEnumeration() => true;
3434
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using System.Reflection;
2+
using Genbox.SimpleS3.Core.Abstracts;
3+
using Genbox.SimpleS3.Extensions.ProfileManager.Abstracts;
4+
using Genbox.SimpleS3.Utility.Shared;
5+
using Xunit.Sdk;
6+
using Xunit.v3;
7+
8+
namespace Genbox.ProviderTests.Code;
9+
10+
internal sealed class MultipleProvidersWithDataAttribute(S3Provider providers, params object[] otherData) : DataAttribute
11+
{
12+
public override ValueTask<IReadOnlyCollection<ITheoryDataRow>> GetData(MethodInfo testMethod, DisposalTracker disposalTracker)
13+
{
14+
TheoryData<S3Provider, string, ISimpleClient, object> data = new TheoryData<S3Provider, string, ISimpleClient, object>();
15+
16+
foreach ((S3Provider provider, IProfile profile, ISimpleClient client) in ProviderSetup.Instance.Clients)
17+
{
18+
string bucket = UtilityHelper.GetTestBucket(profile);
19+
20+
foreach (object o in otherData)
21+
{
22+
TheoryDataRow<S3Provider, string, ISimpleClient, object> row = new TheoryDataRow<S3Provider, string, ISimpleClient, object>(provider, bucket, client, o);
23+
24+
if (!providers.HasFlag(provider))
25+
row.Skip = "Not supported";
26+
27+
data.Add(row);
28+
}
29+
}
30+
31+
return ValueTask.FromResult<IReadOnlyCollection<ITheoryDataRow>>(data);
32+
}
33+
34+
public override bool SupportsDiscoveryEnumeration() => true;
35+
}

Src/ProviderTests/Code/SingleProviderAttribute.cs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,30 @@
33
using Genbox.SimpleS3.Extensions.ProfileManager.Abstracts;
44
using Genbox.SimpleS3.Utility.Shared;
55
using Xunit.Sdk;
6+
using Xunit.v3;
67

78
namespace Genbox.ProviderTests.Code;
89

910
/// <summary>
1011
/// Used to perform an action against just one provider
1112
/// </summary>
12-
internal sealed class SingleProviderAttribute(S3Provider provider, params object[] otherData) : DataAttribute
13+
internal sealed class SingleProviderAttribute(S3Provider provider) : DataAttribute
1314
{
14-
public override string? Skip => null;
15-
16-
public override IEnumerable<object?[]> GetData(MethodInfo testMethod)
15+
public override ValueTask<IReadOnlyCollection<ITheoryDataRow>> GetData(MethodInfo testMethod, DisposalTracker disposalTracker)
1716
{
17+
TheoryData<S3Provider, string, ISimpleClient> data = new TheoryData<S3Provider, string, ISimpleClient>();
18+
1819
foreach ((S3Provider s3Provider, IProfile profile, ISimpleClient client) in ProviderSetup.Instance.Clients)
1920
{
2021
if (provider != s3Provider)
2122
continue;
2223

2324
string bucket = UtilityHelper.GetTestBucket(profile);
24-
25-
if (otherData.Length > 0)
26-
{
27-
foreach (object o in otherData)
28-
yield return [provider, bucket, client, o];
29-
}
30-
else
31-
yield return [provider, bucket, client];
25+
data.Add(provider, bucket, client);
3226
}
27+
28+
return ValueTask.FromResult<IReadOnlyCollection<ITheoryDataRow>>(data);
3329
}
30+
31+
public override bool SupportsDiscoveryEnumeration() => true;
3432
}

0 commit comments

Comments
 (0)