33using Genbox . SimpleS3 . Extensions . ProfileManager . Abstracts ;
44using Genbox . SimpleS3 . Utility . Shared ;
55using Xunit . Sdk ;
6+ using Xunit . v3 ;
67
78namespace 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}
0 commit comments