From 8d33ba65e41f107ecd3a081b50d9aa4718d9dac6 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 28 Jun 2023 06:11:36 +0000 Subject: [PATCH] [main] Update dependencies from dotnet/aspnetcore (#4129) [main] Update dependencies from dotnet/aspnetcore - Coherency Updates: - Microsoft.Bcl.TimeProvider: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Caching.Abstractions: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Caching.Memory: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Configuration.Abstractions: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Configuration.Binder: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Configuration.CommandLine: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Configuration.Json: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Configuration: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.DependencyInjection.Abstractions: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.DependencyInjection: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Hosting.Abstractions: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Hosting: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Http: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Logging.Abstractions: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Logging.Configuration: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Logging.Console: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Logging: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Options.ConfigurationExtensions: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Options.DataAnnotations: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Options: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Microsoft.Extensions.Primitives: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - System.Collections.Immutable: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - System.Configuration.ConfigurationManager: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - System.Diagnostics.DiagnosticSource: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - System.Diagnostics.PerformanceCounter: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - System.IO.Hashing: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - System.Net.Http.Json: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - System.Security.Cryptography.Pkcs: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - System.Security.Cryptography.Xml: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - System.Text.Encodings.Web: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - System.Text.Json: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - System.Runtime.Caching: from 8.0.0-preview.6.23314.15 to 8.0.0-preview.7.23325.2 (parent: Microsoft.AspNetCore.App.Runtime.win-x64) - Build fixes * Update local copy of ExperimentalAttribute per https://github.com/dotnet/runtime/pull/85444 * Deprecate this repo's option validator code gen in favor of the runtime'src - This removes traces of the option code generator in this repo, now that the code has moved to dotnet/runtime. Unfortunately, the generator in dotnet/runtime has currently dropped the use of the 'file' visibility accessor in generated code, which leads to some conflicting type definitions in this code base due to the use of IntervalsVisibleTo. This surfaces as build warnings which are safe to ignore, since the C# compiler ends up binding to the right thing. Fixing these warnings will require a new drop of the runtime's generator. * Suppress CS0436 - Bump SDK - fixup! Build fixes --- Directory.Build.targets | 20 +- eng/MSBuild/Generators.props | 4 - eng/Version.Details.xml | 164 +-- eng/Versions.props | 82 +- global.json | 4 +- .../Common/DiagDescriptors.cs | 98 -- .../Common/Emitter.cs | 368 ------- .../Common/Generator.cs | 100 -- .../Common/Model/ValidatedMember.cs | 19 - .../Common/Model/ValidatedModel.cs | 12 - .../Common/Model/ValidationAttributeInfo.cs | 12 - .../Common/Model/ValidatorType.cs | 15 - .../Common/Parser.cs | 696 ------------- .../Common/Resources.Designer.cs | 297 ------ .../Common/Resources.resx | 198 ---- .../Common/SymbolHolder.cs | 20 - .../Common/SymbolLoader.cs | 69 -- .../Directory.Build.props | 33 - ...oft.Gen.OptionsValidation.Roslyn3.8.csproj | 28 - ...oft.Gen.OptionsValidation.Roslyn4.0.csproj | 29 - .../ExperimentalAttribute.cs | 39 +- ...rosoft.AspNetCore.ConnectionTimeout.csproj | 1 - .../HeaderParsingOptionsValidator.cs | 1 - .../Microsoft.AspNetCore.HeaderParsing.csproj | 2 - ...RequestLatencyTelemetryOptionsValidator.cs | 1 - .../Internal/LoggingOptionsValidator.cs | 1 - .../Logging/LoggingOptions.cs | 4 +- ...oft.AspNetCore.Telemetry.Middleware.csproj | 2 - .../RequestHeadersEnricherExtensions.cs | 1 + .../RequestHeadersLogEnricherOptions.cs | 2 +- ...questHeadersLogEnricherOptionsValidator.cs | 1 - .../Microsoft.AspNetCore.Telemetry.csproj | 1 - .../Tracing/HttpTracingExtensions.cs | 4 +- .../Tracing/HttpTracingOptions.cs | 2 +- .../Internal/HttpTracingOptionsValidator.cs | 1 - .../ApplicationMetadataValidator.cs | 1 - ...ensions.AmbientMetadata.Application.csproj | 5 - .../IAsyncLocalContext.cs | 2 +- ...oft.Extensions.Compliance.Redaction.csproj | 1 - .../FakeRedactorOptionsAutoValidator.cs | 1 - ...osoft.Extensions.Compliance.Testing.csproj | 2 - ...althChecksExtensions.TelemetryPublisher.cs | 4 +- .../TelemetryHealthCheckPublisherOptions.cs | 2 +- ...cs.HealthChecks.ResourceUtilization.csproj | 1 - .../ResourceUtilizationHealthCheckOptions.cs | 2 +- ...eUtilizationHealthCheckOptionsValidator.cs | 1 - .../TcpEndpointHealthCheckOptionsValidator.cs | 1 - ...osoft.Extensions.Diagnostics.Probes.csproj | 2 - ...ourceUtilizationTrackerOptionsValidator.cs | 1 - ...urceUtilizationProviderOptionsValidator.cs | 1 - .../Linux/LinuxUtilizationExtensions.cs | 1 + ...ions.Diagnostics.ResourceMonitoring.csproj | 2 - .../ResourceMonitoringOptions.cs | 2 +- .../WindowsCountersOptionsValidator.cs | 1 - .../Windows/WindowsCountersOptions.cs | 4 +- .../Windows/WindowsUtilizationExtensions.cs | 6 +- .../HostingFakesExtensions.cs | 2 +- .../AutoClientAttribute.cs | 2 +- .../AutoClientException.cs | 2 +- .../AutoClientHttpError.cs | 2 +- .../AutoClientOptions.cs | 2 +- .../BodyAttribute.cs | 2 +- .../BodyContentType.cs | 2 +- .../HeaderAttribute.cs | 2 +- .../Methods/DeleteAttribute.cs | 2 +- .../Methods/GetAttribute.cs | 2 +- .../Methods/HeadAttribute.cs | 2 +- .../Methods/OptionsAttribute.cs | 2 +- .../Methods/PatchAttribute.cs | 2 +- .../Methods/PostAttribute.cs | 2 +- .../Methods/PutAttribute.cs | 2 +- ...icrosoft.Extensions.Http.AutoClient.csproj | 5 - .../QueryAttribute.cs | 2 +- .../RequestNameAttribute.cs | 2 +- .../StaticHeaderAttribute.cs | 2 +- .../FaultInjection/ContextExtensions.cs | 4 +- .../HttpClientFaultInjectionExtensions.cs | 4 +- .../Hedging/HedgingEndpointOptions.cs | 4 +- .../HttpStandardHedgingResilienceOptions.cs | 4 +- ...andardHedgingResilienceOptionsValidator.cs | 1 - ...StandardHedgingHandlerBuilderExtensions.cs | 4 +- ...icrosoft.Extensions.Http.Resilience.csproj | 2 - ...ndardResilienceBuilderBuilderExtensions.cs | 4 +- .../HttpStandardResilienceOptions.cs | 4 +- .../HttpStandardResilienceOptionsValidator.cs | 1 - .../Routing/EndpointGroup.cs | 2 +- .../OrderedGroupsRoutingOptionsValidator.cs | 1 - .../WeightedGroupsRoutingOptionsValidator.cs | 1 - .../Routing/OrderedGroupsRoutingOptions.cs | 2 +- .../RoutingStrategyBuilderExtensions.cs | 4 +- .../Routing/WeightedGroupsRoutingOptions.cs | 2 +- .../Internal/LoggingOptionsValidator.cs | 1 - .../Logging/LoggingOptions.cs | 2 +- .../Metering/HttpClientMeteringExtensions.cs | 2 +- .../Metering/HttpMeteringHandler.cs | 2 +- .../Metering/HttpRequestResultType.cs | 2 +- ...Microsoft.Extensions.Http.Telemetry.csproj | 2 - .../Tracing/HttpClientTracingExtensions.cs | 4 +- .../Tracing/HttpClientTracingOptions.cs | 2 +- .../Tracing/IHttpClientTraceEnricher.netfx.cs | 2 +- .../Tracing/IHttpPathRedactor.cs | 2 +- .../HttpClientTracingOptionsValidator.cs | 1 - .../DependencyInjectionPoolOptions.cs | 2 +- .../ObjectPoolServiceCollectionExtensions.cs | 2 +- ...osoft.Extensions.Options.Validation.csproj | 38 - ...crosoft.Extensions.Options.Validation.json | 55 -- .../OptionsValidatorAttribute.cs | 16 - .../ValidateEnumeratedItemsAttribute.cs | 45 - .../ValidateObjectMembersAttribute.cs | 43 - ...rosoft.Extensions.Options.Validation.props | 2 - ...soft.Extensions.Options.Validation.targets | 3 - .../FaultInjectionExtensions.cs | 2 +- .../FaultInjectionOptionsBuilder.cs | 2 +- .../FaultInjection/IChaosPolicyFactory.cs | 2 +- .../Options/ChaosPolicyOptionsGroup.cs | 4 +- .../Options/CustomResultPolicyOptions.cs | 4 +- .../FaultPolicyWeightAssignmentsOptions.cs | 2 +- .../Microsoft.Extensions.Resilience.csproj | 2 - .../Polly/Internals/PipelineId.cs | 6 +- .../BulkheadPolicyOptionsValidator.cs | 1 - .../CircuitBreakerPolicyOptionsValidator.cs | 1 - .../CircuitBreakerPolicyOptionsValidatorT.cs | 1 - .../HedgingPolicyOptionsValidator.cs | 1 - .../HedgingPolicyOptionsValidatorT.cs | 1 - .../Generated/RetryPolicyOptionsValidator.cs | 1 - .../Generated/RetryPolicyOptionsValidatorT.cs | 1 - .../TimeoutPolicyOptionsValidator.cs | 1 - .../Polly/ResilienceDimensions.cs | 24 +- .../Internal/OptionsBuilderExtensions.cs | 2 +- .../ResiliencePipelineBuilderExtensions.cs | 2 +- ...iliencePipelineFactoryOptionsValidatorT.cs | 1 - .../Http/TelemetryConstants.cs | 4 +- .../Logging/LogMethodAttribute.cs | 2 +- .../Metering/MeterT.cs | 4 +- .../Metering/MeteringExtensions.cs | 2 +- .../Metering/CollectedMeasurement.cs | 2 +- .../Metering/MeasurementExtensions.cs | 2 +- .../Metering/MetricCollector.cs | 4 +- .../Logging/LoggerProvider.cs | 2 +- .../Logging/LoggingOptions.cs | 2 +- .../Logging/LoggingOptionsValidator.cs | 1 - .../EventCountersCollectorOptions.cs | 2 +- .../EventCountersCollectorOptionsValidator.cs | 1 - .../Metering/MeteringOptions.cs | 2 +- .../Metering/OTelMeteringExtensions.cs | 8 +- .../Microsoft.Extensions.Telemetry.csproj | 3 +- .../Telemetry.Internal/IHttpRouteFormatter.cs | 4 +- .../Telemetry/TelemetryExtensions.cs | 4 +- .../Internal/SamplingOptionsAutoValidator.cs | 1 - .../ParentBasedSamplerOptions.cs | 2 +- .../Tracing.Sampling/SamplingOptions.cs | 2 +- .../Tracing/TracingEnricherExtensions.cs | 4 +- .../FakeTimeProvider.cs | 16 +- .../Hosting.StartupInitialization.csproj | 2 - .../Internal/StartupInitializationBuilder.cs | 1 - .../StartupInitializationOptionsValidator.cs | 1 - .../StartupInitializationExtensions.cs | 1 + .../HttpClient.SocketHandling.csproj | 2 - .../SocketsHttpHandlerOptionsValidator.cs | 1 - .../UsingExperimentalApiAnalyzerTest.cs | 11 +- .../ApiLifecycle/ApiLifecycleAnalyzerTest.cs | 18 +- .../Generated/Common/CustomAttrTests.cs | 39 - .../Generated/Common/EnumerationTests.cs | 93 -- .../Generated/Common/FieldTests.cs | 62 -- .../Generated/Common/FunnyStringsTests.cs | 37 - .../Generated/Common/GenericsTests.cs | 49 - .../Common/MultiModelValidatorTests.cs | 49 - .../Generated/Common/NestedTests.cs | 67 -- .../Generated/Common/NoNamespaceTests.cs | 60 -- .../Common/OptionsValidationTests.cs | 442 --------- .../Generated/Common/RandomMembersTests.cs | 37 - .../Generated/Common/RecordTypesTests.cs | 67 -- .../Generated/Common/RepeatedTypesTests.cs | 61 -- .../Generated/Common/SelfValidationTests.cs | 37 - .../Generated/Common/TestResource.Designer.cs | 72 -- .../Generated/Common/TestResource.resx | 123 --- .../Generated/Common/Utils.cs | 31 - .../Generated/Common/ValueTypesTests.cs | 53 - .../Generated/Directory.Build.props | 33 - ...alidation.Roslyn3.8.Generated.Tests.csproj | 13 - ...alidation.Roslyn4.0.Generated.Tests.csproj | 14 - .../TestClasses/CustomAttr.cs | 69 -- .../TestClasses/Enumeration.cs | 94 -- .../TestClasses/Fields.cs | 72 -- .../TestClasses/FileScopedNamespace.cs | 22 - .../TestClasses/FunnyStrings.cs | 23 - .../TestClasses/Generics.cs | 36 - .../TestClasses/Models.cs | 252 ----- .../TestClasses/MultiModelValidator.cs | 34 - .../TestClasses/Nested.cs | 106 -- .../TestClasses/NoNamespace.cs | 46 - .../TestClasses/RandomMembers.cs | 35 - .../TestClasses/RecordTypes.cs | 68 -- .../TestClasses/RepeatedTypes.cs | 47 - .../TestClasses/SelfValidation.cs | 34 - .../TestClasses/ValueTypes.cs | 46 - .../Unit/Common/EmitterTests.cs | 58 -- .../Unit/Common/ParserTests.Enumeration.cs | 212 ---- .../Unit/Common/ParserTests.cs | 930 ------------------ .../Unit/Common/SymbolLoaderTests.cs | 80 -- .../Unit/Directory.Build.props | 31 - ...ionsValidation.Roslyn3.8.Unit.Tests.csproj | 5 - ...ionsValidation.Roslyn4.0.Unit.Tests.csproj | 6 - ...Extensions.Options.Validation.Tests.csproj | 22 - .../ValidateEnumeratedItemsAttributeTests.cs | 20 - .../ValidateObjectMembersAttributeTest.cs | 20 - .../Helpers/OptionsValidationModels.cs | 4 +- .../Options.ValidateOnStart.Tests.csproj | 2 - 208 files changed, 303 insertions(+), 6369 deletions(-) delete mode 100644 src/Generators/Microsoft.Gen.OptionsValidation/Common/DiagDescriptors.cs delete mode 100644 src/Generators/Microsoft.Gen.OptionsValidation/Common/Emitter.cs delete mode 100644 src/Generators/Microsoft.Gen.OptionsValidation/Common/Generator.cs delete mode 100644 src/Generators/Microsoft.Gen.OptionsValidation/Common/Model/ValidatedMember.cs delete mode 100644 src/Generators/Microsoft.Gen.OptionsValidation/Common/Model/ValidatedModel.cs delete mode 100644 src/Generators/Microsoft.Gen.OptionsValidation/Common/Model/ValidationAttributeInfo.cs delete mode 100644 src/Generators/Microsoft.Gen.OptionsValidation/Common/Model/ValidatorType.cs delete mode 100644 src/Generators/Microsoft.Gen.OptionsValidation/Common/Parser.cs delete mode 100644 src/Generators/Microsoft.Gen.OptionsValidation/Common/Resources.Designer.cs delete mode 100644 src/Generators/Microsoft.Gen.OptionsValidation/Common/Resources.resx delete mode 100644 src/Generators/Microsoft.Gen.OptionsValidation/Common/SymbolHolder.cs delete mode 100644 src/Generators/Microsoft.Gen.OptionsValidation/Common/SymbolLoader.cs delete mode 100644 src/Generators/Microsoft.Gen.OptionsValidation/Directory.Build.props delete mode 100644 src/Generators/Microsoft.Gen.OptionsValidation/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.csproj delete mode 100644 src/Generators/Microsoft.Gen.OptionsValidation/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.csproj delete mode 100644 src/Libraries/Microsoft.Extensions.Options.Validation/Microsoft.Extensions.Options.Validation.csproj delete mode 100644 src/Libraries/Microsoft.Extensions.Options.Validation/Microsoft.Extensions.Options.Validation.json delete mode 100644 src/Libraries/Microsoft.Extensions.Options.Validation/OptionsValidatorAttribute.cs delete mode 100644 src/Libraries/Microsoft.Extensions.Options.Validation/ValidateEnumeratedItemsAttribute.cs delete mode 100644 src/Libraries/Microsoft.Extensions.Options.Validation/ValidateObjectMembersAttribute.cs delete mode 100644 src/Libraries/Microsoft.Extensions.Options.Validation/buildTransitive/Microsoft.Extensions.Options.Validation.props delete mode 100644 src/Libraries/Microsoft.Extensions.Options.Validation/buildTransitive/Microsoft.Extensions.Options.Validation.targets delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/CustomAttrTests.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/EnumerationTests.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/FieldTests.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/FunnyStringsTests.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/GenericsTests.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/MultiModelValidatorTests.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/NestedTests.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/NoNamespaceTests.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/OptionsValidationTests.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RandomMembersTests.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RecordTypesTests.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RepeatedTypesTests.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/SelfValidationTests.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/TestResource.Designer.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/TestResource.resx delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/Utils.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/ValueTypesTests.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Directory.Build.props delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.Generated.Tests.csproj delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Generated/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.Generated.Tests.csproj delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/CustomAttr.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Enumeration.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Fields.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/FileScopedNamespace.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/FunnyStrings.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Generics.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Models.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/MultiModelValidator.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Nested.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/NoNamespace.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RandomMembers.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RecordTypes.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RepeatedTypes.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/SelfValidation.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/ValueTypes.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/EmitterTests.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/ParserTests.Enumeration.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/ParserTests.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/SymbolLoaderTests.cs delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Unit/Directory.Build.props delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Unit/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.Unit.Tests.csproj delete mode 100644 test/Generators/Microsoft.Gen.OptionsValidation/Unit/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.Unit.Tests.csproj delete mode 100644 test/Libraries/Microsoft.Extensions.Options.Validation.Tests/Microsoft.Extensions.Options.Validation.Tests.csproj delete mode 100644 test/Libraries/Microsoft.Extensions.Options.Validation.Tests/ValidateEnumeratedItemsAttributeTests.cs delete mode 100644 test/Libraries/Microsoft.Extensions.Options.Validation.Tests/ValidateObjectMembersAttributeTest.cs diff --git a/Directory.Build.targets b/Directory.Build.targets index c96d110b2dd..ff17457a836 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -16,7 +16,17 @@ false - + + $(NoWarn);CS0436 + + $(NoWarn);IL2026;IL2087;IL2067;IL2075;IL2091;IL2072;IL2090;CA1825;IL2070;IL2098;IL2057 @@ -35,14 +45,14 @@ $(NoWarn);CA1062 - + $(NoWarn);ASP0019 - + $(NoWarn);RS1024 @@ -66,7 +76,9 @@ - + + <_Parameter1>TBD + diff --git a/eng/MSBuild/Generators.props b/eng/MSBuild/Generators.props index 580c36c5592..52f47521cfe 100644 --- a/eng/MSBuild/Generators.props +++ b/eng/MSBuild/Generators.props @@ -7,10 +7,6 @@ - - - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f7e546395fc..cd7146dc124 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,168 +1,168 @@ - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/runtime - 171a525880315369e48c6adf6c181f98357352a5 + eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e - + https://github.com/dotnet/aspnetcore - d1f00b02ef24762bca23653fd963629749743334 + 9c664bc65a52bc959138ec76c0250874fb38174d - + https://github.com/dotnet/aspnetcore - d1f00b02ef24762bca23653fd963629749743334 + 9c664bc65a52bc959138ec76c0250874fb38174d - + https://github.com/dotnet/aspnetcore - d1f00b02ef24762bca23653fd963629749743334 + 9c664bc65a52bc959138ec76c0250874fb38174d - + https://github.com/dotnet/aspnetcore - d1f00b02ef24762bca23653fd963629749743334 + 9c664bc65a52bc959138ec76c0250874fb38174d - + https://github.com/dotnet/aspnetcore - d1f00b02ef24762bca23653fd963629749743334 + 9c664bc65a52bc959138ec76c0250874fb38174d - + https://github.com/dotnet/aspnetcore - d1f00b02ef24762bca23653fd963629749743334 + 9c664bc65a52bc959138ec76c0250874fb38174d - + https://github.com/dotnet/aspnetcore - d1f00b02ef24762bca23653fd963629749743334 + 9c664bc65a52bc959138ec76c0250874fb38174d - + https://github.com/dotnet/aspnetcore - d1f00b02ef24762bca23653fd963629749743334 + 9c664bc65a52bc959138ec76c0250874fb38174d - + https://github.com/dotnet/aspnetcore - d1f00b02ef24762bca23653fd963629749743334 + 9c664bc65a52bc959138ec76c0250874fb38174d diff --git a/eng/Versions.props b/eng/Versions.props index 63e0fcf7882..446c97afa52 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -25,48 +25,48 @@ --> - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 - 8.0.0-preview.6.23314.15 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 + 8.0.0-preview.7.23325.2 - 8.0.0-preview.6.23315.13 - 8.0.0-preview.6.23315.13 - 8.0.0-preview.6.23315.13 - 8.0.0-preview.6.23315.13 - 8.0.0-preview.6.23315.13 - 8.0.0-preview.6.23315.13 - 8.0.0-preview.6.23315.13 - 8.0.0-preview.6.23315.13 - 8.0.0-preview.6.23315.13 + 8.0.0-preview.7.23327.18 + 8.0.0-preview.7.23327.18 + 8.0.0-preview.7.23327.18 + 8.0.0-preview.7.23327.18 + 8.0.0-preview.7.23327.18 + 8.0.0-preview.7.23327.18 + 8.0.0-preview.7.23327.18 + 8.0.0-preview.7.23327.18 + 8.0.0-preview.7.23327.18 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Type {0} already implements the Validate method - - - A type already includes an implementation of the `Validate` method - - - [OptionsValidator] cannot be applied to static class {0} - - - `OptionsValidatorAttribute` can't be applied to a static class - - - Can't use [ValidateObjectMembers] or [ValidateEnumeratedItems] on fields or properties with open generic type {0} - - - Can't use `ValidateObjectMembersAttribute` or `ValidateEnumeratedItemsAttribute` on fields or properties with open generic types - - - There is a circular type reference involving type {0} preventing it from being used for static validation - - - Unsupported circular references in model types - - - Type {0} does not implement the required IValidateOptions<{1}> interface - - - A type annotated with `OptionsValidatorAttribute` doesn't implement the necessary interface - - - Can't apply validation attributes to private field or property {0} - - - Can't validate private fields or properties - - - Type {0} has no fields or properties to validate, referenced from member {1} - - - Type {0} has no fields or properties to validate, referenced by type {1} - - - A type has no fields or properties to validate - - - A member type has no fields or properties to validate - - - [ValidateEnumeratedItems] cannot be used on members of type {0} as it doesn't implement IEnumerable<T> - - - Member type is not enumerable - - - Null validator type specified in [ValidateObjectMembers] or [ValidateEnumeratedItems] attributes - - - Null validator type specified for the `ValidateObjectMembersAttribute` or `ValidateEnumeratedItemsAttribute` attributes - - - Type {0} has validation annotations, but member {1} doesn't specify [ValidateEnumeratedItems] which could be an oversight - - - Member potentially missing enumerable validation - - - Type {0} has validation annotations, but member {1} doesn't specify [ValidateObjectMembers] which could be an oversight - - - Member potentially missing transitive validation - - - Validator type {0} doesn't have a parameterless constructor - - - Validators used for transitive or enumerable validation must have a constructor with no parameters - - diff --git a/src/Generators/Microsoft.Gen.OptionsValidation/Common/SymbolHolder.cs b/src/Generators/Microsoft.Gen.OptionsValidation/Common/SymbolHolder.cs deleted file mode 100644 index 02d8deb9cd4..00000000000 --- a/src/Generators/Microsoft.Gen.OptionsValidation/Common/SymbolHolder.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Microsoft.CodeAnalysis; - -namespace Microsoft.Gen.OptionsValidation; - -/// -/// Holds required symbols for the . -/// -internal sealed record class SymbolHolder( - INamedTypeSymbol OptionsValidatorSymbol, - INamedTypeSymbol ValidationAttributeSymbol, - INamedTypeSymbol DataTypeAttributeSymbol, - INamedTypeSymbol ValidateOptionsSymbol, - INamedTypeSymbol IValidatableObjectSymbol, - INamedTypeSymbol TypeSymbol, - INamedTypeSymbol? LegacyValidateTransitivelyAttributeSymbol, - INamedTypeSymbol? ValidateObjectMembersAttributeSymbol, - INamedTypeSymbol? ValidateEnumeratedItemsAttributeSymbol); diff --git a/src/Generators/Microsoft.Gen.OptionsValidation/Common/SymbolLoader.cs b/src/Generators/Microsoft.Gen.OptionsValidation/Common/SymbolLoader.cs deleted file mode 100644 index 8b365c7f68a..00000000000 --- a/src/Generators/Microsoft.Gen.OptionsValidation/Common/SymbolLoader.cs +++ /dev/null @@ -1,69 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Microsoft.CodeAnalysis; - -namespace Microsoft.Gen.OptionsValidation; - -internal static class SymbolLoader -{ - public const string OptionsValidatorAttribute = "Microsoft.Extensions.Options.Validation.OptionsValidatorAttribute"; - internal const string ValidationAttribute = "System.ComponentModel.DataAnnotations.ValidationAttribute"; - internal const string DataTypeAttribute = "System.ComponentModel.DataAnnotations.DataTypeAttribute"; - internal const string IValidatableObjectType = "System.ComponentModel.DataAnnotations.IValidatableObject"; - internal const string IValidateOptionsType = "Microsoft.Extensions.Options.IValidateOptions`1"; - internal const string TypeOfType = "System.Type"; - internal const string LegacyValidateTransitivelyAttribute = "Microsoft.Extensions.Data.Validation.ValidateTransitivelyObjectMembersAttribute"; - internal const string ValidateObjectMembersAttribute = "Microsoft.Extensions.Options.Validation.ValidateObjectMembersAttribute"; - internal const string ValidateEnumeratedItemsAttribute = "Microsoft.Extensions.Options.Validation.ValidateEnumeratedItemsAttribute"; - - public static bool TryLoad(Compilation compilation, out SymbolHolder? symbolHolder) - { - INamedTypeSymbol? GetSymbol(string metadataName, bool optional = false) - { - var symbol = compilation.GetTypeByMetadataName(metadataName); - if (symbol == null && !optional) - { - return null; - } - - return symbol; - } - - // required - var optionsValidatorSymbol = GetSymbol(OptionsValidatorAttribute); - var validationAttributeSymbol = GetSymbol(ValidationAttribute); - var dataTypeAttributeSymbol = GetSymbol(DataTypeAttribute); - var ivalidatableObjectSymbol = GetSymbol(IValidatableObjectType); - var validateOptionsSymbol = GetSymbol(IValidateOptionsType); - var typeSymbol = GetSymbol(TypeOfType); - -#pragma warning disable S1067 // Expressions should not be too complex - if (optionsValidatorSymbol == null || - validationAttributeSymbol == null || - dataTypeAttributeSymbol == null || - ivalidatableObjectSymbol == null || - validateOptionsSymbol == null || - typeSymbol == null) - { - symbolHolder = default; - return false; - } -#pragma warning restore S1067 // Expressions should not be too complex - - symbolHolder = new( - optionsValidatorSymbol, - validationAttributeSymbol, - dataTypeAttributeSymbol, - validateOptionsSymbol, - ivalidatableObjectSymbol, - typeSymbol, - - // optional - GetSymbol(LegacyValidateTransitivelyAttribute, optional: true), - GetSymbol(ValidateObjectMembersAttribute, optional: true), - GetSymbol(ValidateEnumeratedItemsAttribute, optional: true)); - - return true; - } -} diff --git a/src/Generators/Microsoft.Gen.OptionsValidation/Directory.Build.props b/src/Generators/Microsoft.Gen.OptionsValidation/Directory.Build.props deleted file mode 100644 index 882655d5161..00000000000 --- a/src/Generators/Microsoft.Gen.OptionsValidation/Directory.Build.props +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Microsoft.Gen.OptionsValidation - Code generator to support Microsoft.Extensions.Options.Validation. - Fundamentals - - - - cs - true - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Generators/Microsoft.Gen.OptionsValidation/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.csproj b/src/Generators/Microsoft.Gen.OptionsValidation/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.csproj deleted file mode 100644 index e1ef356a7da..00000000000 --- a/src/Generators/Microsoft.Gen.OptionsValidation/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.csproj +++ /dev/null @@ -1,28 +0,0 @@ - - - Microsoft.Gen.OptionsValidation - 3.8 - $(MicrosoftCodeAnalysisVersion_3_8) - - - - normal - 94 - 85 - 85 - - - - - True - True - Resources.resx - - - - - - - - - diff --git a/src/Generators/Microsoft.Gen.OptionsValidation/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.csproj b/src/Generators/Microsoft.Gen.OptionsValidation/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.csproj deleted file mode 100644 index 69d0da6a100..00000000000 --- a/src/Generators/Microsoft.Gen.OptionsValidation/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.csproj +++ /dev/null @@ -1,29 +0,0 @@ - - - Microsoft.Gen.OptionsValidation - 4.0 - $(MicrosoftCodeAnalysisVersion_4_0) - $(DefineConstants);ROSLYN_4_0_OR_GREATER - - - - normal - 94 - 85 - 50 - - - - - True - True - Resources.resx - - - - - - - - - diff --git a/src/LegacySupport/ExperimentalAttribute/ExperimentalAttribute.cs b/src/LegacySupport/ExperimentalAttribute/ExperimentalAttribute.cs index 6d7d44a95f8..af31c0f8151 100644 --- a/src/LegacySupport/ExperimentalAttribute/ExperimentalAttribute.cs +++ b/src/LegacySupport/ExperimentalAttribute/ExperimentalAttribute.cs @@ -1,6 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +#if !NET8_0_OR_GREATER + namespace System.Diagnostics.CodeAnalysis; /// @@ -24,30 +26,31 @@ internal sealed class ExperimentalAttribute : Attribute /// /// Initializes a new instance of the class. /// - public ExperimentalAttribute() + /// Human readable explanation for marking experimental API. + public ExperimentalAttribute(string diagnosticId) { - // Intentionally left empty. + DiagnosticId = diagnosticId; } /// - /// Initializes a new instance of the class. + /// Gets the ID that the compiler will use when reporting a use of the API the attribute applies to. /// - /// Human readable explanation for marking experimental API. - public ExperimentalAttribute(string message) - { -#pragma warning disable R9A014 // Use the 'Microsoft.Extensions.Diagnostics.Throws' class instead of explicitly throwing exception for improved performance -#pragma warning disable R9A039 // Remove superfluous null check when compiling in a nullable context -#pragma warning disable R9A060 // Consider removing unnecessary null coalescing (??) since the left-hand value is statically known not to be null -#pragma warning disable SA1101 // Prefix local calls with this - Message = message ?? throw new ArgumentNullException(nameof(message)); -#pragma warning restore SA1101 // Prefix local calls with this -#pragma warning restore R9A060 // Consider removing unnecessary null coalescing (??) since the left-hand value is statically known not to be null -#pragma warning restore R9A039 // Remove superfluous null check when compiling in a nullable context -#pragma warning restore R9A014 // Use the 'Microsoft.Extensions.Diagnostics.Throws' class instead of explicitly throwing exception for improved performance - } + /// The unique diagnostic ID. + /// + /// The diagnostic ID is shown in build output for warnings and errors. + /// This property represents the unique ID that can be used to suppress the warnings or errors, if needed. + /// + public string DiagnosticId { get; } /// - /// Gets a human readable explanation for marking API as experimental. + /// Gets or sets the URL for corresponding documentation. + /// The API accepts a format string instead of an actual URL, creating a generic URL that includes the diagnostic ID. /// - public string? Message { get; } + /// The format string that represents a URL to corresponding documentation. + /// An example format string is https://contoso.com/obsoletion-warnings/{0}. +#pragma warning disable S3996 // URI properties should not be strings + public string? UrlFormat { get; set; } +#pragma warning restore S3996 // URI properties should not be strings } + +#endif diff --git a/src/Libraries/Microsoft.AspNetCore.ConnectionTimeout/Microsoft.AspNetCore.ConnectionTimeout.csproj b/src/Libraries/Microsoft.AspNetCore.ConnectionTimeout/Microsoft.AspNetCore.ConnectionTimeout.csproj index e9d691fe350..56c24014a2c 100644 --- a/src/Libraries/Microsoft.AspNetCore.ConnectionTimeout/Microsoft.AspNetCore.ConnectionTimeout.csproj +++ b/src/Libraries/Microsoft.AspNetCore.ConnectionTimeout/Microsoft.AspNetCore.ConnectionTimeout.csproj @@ -23,7 +23,6 @@ - diff --git a/src/Libraries/Microsoft.AspNetCore.HeaderParsing/HeaderParsingOptionsValidator.cs b/src/Libraries/Microsoft.AspNetCore.HeaderParsing/HeaderParsingOptionsValidator.cs index 0e46ce7a346..772c1d7061d 100644 --- a/src/Libraries/Microsoft.AspNetCore.HeaderParsing/HeaderParsingOptionsValidator.cs +++ b/src/Libraries/Microsoft.AspNetCore.HeaderParsing/HeaderParsingOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.AspNetCore.HeaderParsing; diff --git a/src/Libraries/Microsoft.AspNetCore.HeaderParsing/Microsoft.AspNetCore.HeaderParsing.csproj b/src/Libraries/Microsoft.AspNetCore.HeaderParsing/Microsoft.AspNetCore.HeaderParsing.csproj index 80a4d8bb74e..af2b631d905 100644 --- a/src/Libraries/Microsoft.AspNetCore.HeaderParsing/Microsoft.AspNetCore.HeaderParsing.csproj +++ b/src/Libraries/Microsoft.AspNetCore.HeaderParsing/Microsoft.AspNetCore.HeaderParsing.csproj @@ -8,7 +8,6 @@ true - true true true true @@ -23,7 +22,6 @@ - diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Latency/Internal/RequestLatencyTelemetryOptionsValidator.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Latency/Internal/RequestLatencyTelemetryOptionsValidator.cs index 02665354649..ddfe44114dd 100644 --- a/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Latency/Internal/RequestLatencyTelemetryOptionsValidator.cs +++ b/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Latency/Internal/RequestLatencyTelemetryOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.AspNetCore.Telemetry.Internal; diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Logging/Internal/LoggingOptionsValidator.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Logging/Internal/LoggingOptionsValidator.cs index 851a41a3c8e..2cb7f021047 100644 --- a/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Logging/Internal/LoggingOptionsValidator.cs +++ b/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Logging/Internal/LoggingOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.AspNetCore.Telemetry.Http.Logging; diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Logging/LoggingOptions.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Logging/LoggingOptions.cs index 9eb5339d5c9..5085a820bad 100644 --- a/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Logging/LoggingOptions.cs +++ b/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Logging/LoggingOptions.cs @@ -67,7 +67,7 @@ public class LoggingOptions /// /// The default value is . /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public HttpRouteParameterRedactionMode RequestPathParameterRedactionMode { get; set; } = DefaultPathParameterRedactionMode; /// @@ -208,7 +208,7 @@ public class LoggingOptions /// }; /// /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [Required] [SuppressMessage("Usage", "CA2227:Collection properties should be read only", Justification = "Options pattern.")] diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Microsoft.AspNetCore.Telemetry.Middleware.csproj b/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Microsoft.AspNetCore.Telemetry.Middleware.csproj index 94d8909aa14..97bb0654713 100644 --- a/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Microsoft.AspNetCore.Telemetry.Middleware.csproj +++ b/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Microsoft.AspNetCore.Telemetry.Middleware.csproj @@ -8,7 +8,6 @@ $(NetCoreTargetFrameworks) - true true true false @@ -29,7 +28,6 @@ - diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersEnricherExtensions.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersEnricherExtensions.cs index 5e55a98f1c7..fb01da4fba3 100644 --- a/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersEnricherExtensions.cs +++ b/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersEnricherExtensions.cs @@ -5,6 +5,7 @@ using System.Diagnostics.CodeAnalysis; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; using Microsoft.Extensions.Options.Validation; using Microsoft.Extensions.Telemetry.Enrichment; using Microsoft.Shared.Diagnostics; diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersLogEnricherOptions.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersLogEnricherOptions.cs index 1f46f1d898a..eaf16a28132 100644 --- a/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersLogEnricherOptions.cs +++ b/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersLogEnricherOptions.cs @@ -20,7 +20,7 @@ public class RequestHeadersLogEnricherOptions /// Default value is an empty dictionary. /// [Required] - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] #pragma warning disable CA2227 // Collection properties should be read only public IDictionary HeadersDataClasses { get; set; } = new Dictionary(); #pragma warning restore CA2227 // Collection properties should be read only diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersLogEnricherOptionsValidator.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersLogEnricherOptionsValidator.cs index 43213594e43..86e322270ac 100644 --- a/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersLogEnricherOptionsValidator.cs +++ b/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersLogEnricherOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.AspNetCore.Telemetry; diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry/Microsoft.AspNetCore.Telemetry.csproj b/src/Libraries/Microsoft.AspNetCore.Telemetry/Microsoft.AspNetCore.Telemetry.csproj index 94f50e5b3a5..ab52ba161bf 100644 --- a/src/Libraries/Microsoft.AspNetCore.Telemetry/Microsoft.AspNetCore.Telemetry.csproj +++ b/src/Libraries/Microsoft.AspNetCore.Telemetry/Microsoft.AspNetCore.Telemetry.csproj @@ -8,7 +8,6 @@ true - true false false false diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/HttpTracingExtensions.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/HttpTracingExtensions.cs index 0a2eaef5181..24f72a1ef9b 100644 --- a/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/HttpTracingExtensions.cs +++ b/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/HttpTracingExtensions.cs @@ -116,7 +116,7 @@ public static TracerProviderBuilder AddHttpTraceEnricher(this TracerProviderBuil /// The to add this enricher. /// for chaining. /// The argument is . - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IServiceCollection AddHttpTraceEnricher(this IServiceCollection services) where T : class, IHttpTraceEnricher { @@ -132,7 +132,7 @@ public static IServiceCollection AddHttpTraceEnricher(this IServiceCollection /// Enricher to be added. /// for chaining. /// The argument or is . - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IServiceCollection AddHttpTraceEnricher(this IServiceCollection services, IHttpTraceEnricher enricher) { _ = Throw.IfNull(services); diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/HttpTracingOptions.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/HttpTracingOptions.cs index baf648ebaf6..1b4f1d8a5a6 100644 --- a/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/HttpTracingOptions.cs +++ b/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/HttpTracingOptions.cs @@ -51,7 +51,7 @@ public class HttpTracingOptions /// /// This property is applicable when the option is enabled. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public HttpRouteParameterRedactionMode RequestPathParameterRedactionMode { get; set; } = DefaultPathParameterRedactionMode; /// diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/Internal/HttpTracingOptionsValidator.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/Internal/HttpTracingOptionsValidator.cs index 5a7146850a4..69bb8139805 100644 --- a/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/Internal/HttpTracingOptionsValidator.cs +++ b/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/Internal/HttpTracingOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.AspNetCore.Telemetry.Internal; diff --git a/src/Libraries/Microsoft.Extensions.AmbientMetadata.Application/ApplicationMetadataValidator.cs b/src/Libraries/Microsoft.Extensions.AmbientMetadata.Application/ApplicationMetadataValidator.cs index cf8e27ded88..8a129d03b8a 100644 --- a/src/Libraries/Microsoft.Extensions.AmbientMetadata.Application/ApplicationMetadataValidator.cs +++ b/src/Libraries/Microsoft.Extensions.AmbientMetadata.Application/ApplicationMetadataValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.AmbientMetadata; diff --git a/src/Libraries/Microsoft.Extensions.AmbientMetadata.Application/Microsoft.Extensions.AmbientMetadata.Application.csproj b/src/Libraries/Microsoft.Extensions.AmbientMetadata.Application/Microsoft.Extensions.AmbientMetadata.Application.csproj index 0aaa9620fba..7d860c650ba 100644 --- a/src/Libraries/Microsoft.Extensions.AmbientMetadata.Application/Microsoft.Extensions.AmbientMetadata.Application.csproj +++ b/src/Libraries/Microsoft.Extensions.AmbientMetadata.Application/Microsoft.Extensions.AmbientMetadata.Application.csproj @@ -5,10 +5,6 @@ Fundamentals - - true - - normal 100 @@ -16,7 +12,6 @@ - diff --git a/src/Libraries/Microsoft.Extensions.AsyncState/IAsyncLocalContext.cs b/src/Libraries/Microsoft.Extensions.AsyncState/IAsyncLocalContext.cs index a180eb275fb..be5e9025591 100644 --- a/src/Libraries/Microsoft.Extensions.AsyncState/IAsyncLocalContext.cs +++ b/src/Libraries/Microsoft.Extensions.AsyncState/IAsyncLocalContext.cs @@ -11,7 +11,7 @@ namespace Microsoft.Extensions.AsyncState; /// /// The type of the asynchronous state. /// This type is intended for internal use. Use instead. -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [EditorBrowsable(EditorBrowsableState.Never)] #pragma warning disable S4023 // Interfaces should not be empty public interface IAsyncLocalContext : IAsyncContext diff --git a/src/Libraries/Microsoft.Extensions.Compliance.Redaction/Microsoft.Extensions.Compliance.Redaction.csproj b/src/Libraries/Microsoft.Extensions.Compliance.Redaction/Microsoft.Extensions.Compliance.Redaction.csproj index d88e014f05a..15442d1a835 100644 --- a/src/Libraries/Microsoft.Extensions.Compliance.Redaction/Microsoft.Extensions.Compliance.Redaction.csproj +++ b/src/Libraries/Microsoft.Extensions.Compliance.Redaction/Microsoft.Extensions.Compliance.Redaction.csproj @@ -6,7 +6,6 @@ - true true diff --git a/src/Libraries/Microsoft.Extensions.Compliance.Testing/FakeRedactorOptionsAutoValidator.cs b/src/Libraries/Microsoft.Extensions.Compliance.Testing/FakeRedactorOptionsAutoValidator.cs index 848234268c9..91ea505e36c 100644 --- a/src/Libraries/Microsoft.Extensions.Compliance.Testing/FakeRedactorOptionsAutoValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Compliance.Testing/FakeRedactorOptionsAutoValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.Compliance.Testing; diff --git a/src/Libraries/Microsoft.Extensions.Compliance.Testing/Microsoft.Extensions.Compliance.Testing.csproj b/src/Libraries/Microsoft.Extensions.Compliance.Testing/Microsoft.Extensions.Compliance.Testing.csproj index a09c5578f9b..10f6491f9df 100644 --- a/src/Libraries/Microsoft.Extensions.Compliance.Testing/Microsoft.Extensions.Compliance.Testing.csproj +++ b/src/Libraries/Microsoft.Extensions.Compliance.Testing/Microsoft.Extensions.Compliance.Testing.csproj @@ -7,7 +7,6 @@ - true true true true @@ -23,7 +22,6 @@ - diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.Common/CommonHealthChecksExtensions.TelemetryPublisher.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.Common/CommonHealthChecksExtensions.TelemetryPublisher.cs index ac7cbf8edee..9034b7b9884 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.Common/CommonHealthChecksExtensions.TelemetryPublisher.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.Common/CommonHealthChecksExtensions.TelemetryPublisher.cs @@ -30,7 +30,7 @@ public static IServiceCollection AddTelemetryHealthCheckPublisher(this IServiceC /// Configuration for . /// The value of . /// or are . - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IServiceCollection AddTelemetryHealthCheckPublisher(this IServiceCollection services, IConfigurationSection section) => Throw.IfNull(services) .Configure(Throw.IfNull(section)) @@ -44,7 +44,7 @@ public static IServiceCollection AddTelemetryHealthCheckPublisher(this IServiceC /// Configuration for . /// The value of . /// or are . - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IServiceCollection AddTelemetryHealthCheckPublisher(this IServiceCollection services, Action configure) => Throw.IfNull(services) .Configure(Throw.IfNull(configure)) diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.Common/TelemetryHealthCheckPublisherOptions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.Common/TelemetryHealthCheckPublisherOptions.cs index bf5d07c5dce..d2b1155551a 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.Common/TelemetryHealthCheckPublisherOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.Common/TelemetryHealthCheckPublisherOptions.cs @@ -8,7 +8,7 @@ namespace Microsoft.Extensions.Diagnostics.HealthChecks; /// /// Options for the telemetry health check publisher. /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public class TelemetryHealthCheckPublisherOptions { /// diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization.csproj b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization.csproj index cacc4326872..8497c054823 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization.csproj +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization.csproj @@ -6,7 +6,6 @@ - true true true diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptions.cs index 29afe898c19..115c94da936 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptions.cs @@ -3,7 +3,7 @@ using System; using Microsoft.Extensions.Diagnostics.ResourceMonitoring; -using Microsoft.Extensions.Options.Validation; +using Microsoft.Extensions.Options; using Microsoft.Shared.Data.Validation; namespace Microsoft.Extensions.Diagnostics.HealthChecks; diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptionsValidator.cs index 5ed6da4d506..2ed4d499a14 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.Diagnostics.HealthChecks; diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Kubernetes/TcpEndpointHealthCheckOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Kubernetes/TcpEndpointHealthCheckOptionsValidator.cs index b606417706d..0a11191883e 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Kubernetes/TcpEndpointHealthCheckOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Kubernetes/TcpEndpointHealthCheckOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.Diagnostics.Probes; diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Microsoft.Extensions.Diagnostics.Probes.csproj b/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Microsoft.Extensions.Diagnostics.Probes.csproj index deaa8dc277a..ec64ad46cc5 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Microsoft.Extensions.Diagnostics.Probes.csproj +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Microsoft.Extensions.Diagnostics.Probes.csproj @@ -7,7 +7,6 @@ true - true true true @@ -21,7 +20,6 @@ - diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerOptionsValidator.cs index e7c38f1bbeb..6295ecdaecd 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/Internal/LinuxResourceUtilizationProviderOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/Internal/LinuxResourceUtilizationProviderOptionsValidator.cs index b8e0ebc445c..7631d2d4d10 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/Internal/LinuxResourceUtilizationProviderOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/Internal/LinuxResourceUtilizationProviderOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Internal; diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/LinuxUtilizationExtensions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/LinuxUtilizationExtensions.cs index 7c4163199ca..5183b37810e 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/LinuxUtilizationExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/LinuxUtilizationExtensions.cs @@ -6,6 +6,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Diagnostics.ResourceMonitoring.Internal; +using Microsoft.Extensions.Options; using Microsoft.Extensions.Options.Validation; using Microsoft.Extensions.Telemetry.Metering; using Microsoft.Shared.Diagnostics; diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.csproj b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.csproj index 532e55ea400..c09459bdb77 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.csproj +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.csproj @@ -7,7 +7,6 @@ true - true true true true @@ -27,7 +26,6 @@ - diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitoringOptions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitoringOptions.cs index d6b55d14820..97f2b805ff1 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitoringOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitoringOptions.cs @@ -50,7 +50,7 @@ public class ResourceMonitoringOptions /// The value needs to be less than or equal to the . /// Most importantly, this period is used to calculate instances pushed to publishers. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [TimeSpan(MinimumSamplingWindow, MaximumSamplingWindow)] public TimeSpan CalculationPeriod { get; set; } = DefaultCollectionWindow; } diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/Internal/WindowsCountersOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/Internal/WindowsCountersOptionsValidator.cs index 501d31049df..2058dd53ecb 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/Internal/WindowsCountersOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/Internal/WindowsCountersOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsCountersOptions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsCountersOptions.cs index 5d90106ce54..1678918817c 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsCountersOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsCountersOptions.cs @@ -12,7 +12,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; /// /// Options for WindowsCounters. /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public class WindowsCountersOptions { internal const int MinimumCachingInterval = 100; @@ -33,7 +33,7 @@ public class WindowsCountersOptions /// /// The default value is 5 seconds. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [TimeSpan(MinimumCachingInterval, MaximumCachingInterval)] public TimeSpan CachingInterval { get; set; } = DefaultCachingInterval; } diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsUtilizationExtensions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsUtilizationExtensions.cs index 211f6976e5e..1718e85d9e9 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsUtilizationExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsUtilizationExtensions.cs @@ -65,7 +65,7 @@ public static IResourceMonitorBuilder AddWindowsPerfCounterPublisher(this IResou /// The value of . /// is . /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IResourceMonitorBuilder AddWindowsCounters(this IResourceMonitorBuilder builder) { _ = Throw.IfNull(builder); @@ -93,7 +93,7 @@ public static IResourceMonitorBuilder AddWindowsCounters(this IResourceMonitorBu /// The value of . /// is . /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IResourceMonitorBuilder AddWindowsCounters(this IResourceMonitorBuilder builder, IConfigurationSection section) { _ = Throw.IfNull(builder); @@ -123,7 +123,7 @@ public static IResourceMonitorBuilder AddWindowsCounters(this IResourceMonitorBu /// The value of . /// is . /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IResourceMonitorBuilder AddWindowsCounters(this IResourceMonitorBuilder builder, Action configure) { _ = Throw.IfNull(builder); diff --git a/src/Libraries/Microsoft.Extensions.Hosting.Testing/HostingFakesExtensions.cs b/src/Libraries/Microsoft.Extensions.Hosting.Testing/HostingFakesExtensions.cs index 57234351d7c..9d61e191b86 100644 --- a/src/Libraries/Microsoft.Extensions.Hosting.Testing/HostingFakesExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Hosting.Testing/HostingFakesExtensions.cs @@ -19,7 +19,7 @@ namespace Microsoft.Extensions.Hosting.Testing; /// /// Extension methods supporting host unit testing scenarios. /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static class HostingFakesExtensions { /// diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientAttribute.cs index 0c3323cde5f..43f66cda85e 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientAttribute.cs +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientAttribute.cs @@ -27,7 +27,7 @@ namespace Microsoft.Extensions.Http.AutoClient; /// } /// /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [AttributeUsage(AttributeTargets.Interface)] [Conditional("CODE_GENERATION_ATTRIBUTES")] public sealed class AutoClientAttribute : Attribute diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientException.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientException.cs index e244ea0691d..56bdd54dae6 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientException.cs +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientException.cs @@ -27,7 +27,7 @@ namespace Microsoft.Extensions.Http.AutoClient; /// /// [SuppressMessage("Design", "CA1032:Implement standard exception constructors", Justification = "Not applicable to this exception")] -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public class AutoClientException : Exception { /// diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientHttpError.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientHttpError.cs index 05b9b713973..a194a4c2d1c 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientHttpError.cs +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientHttpError.cs @@ -19,7 +19,7 @@ namespace Microsoft.Extensions.Http.AutoClient; /// When a REST API client fails, it will throw a . /// This exception contains a instance that holds details like content, headers and status code. /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public class AutoClientHttpError { /// diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientOptions.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientOptions.cs index 63a961dcde7..11df36f248c 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientOptions.cs @@ -21,7 +21,7 @@ namespace Microsoft.Extensions.Http.AutoClient; /// }); /// /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public class AutoClientOptions { /// diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/BodyAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/BodyAttribute.cs index d6b3d8bf8d4..697c8806ee8 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/BodyAttribute.cs +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/BodyAttribute.cs @@ -24,7 +24,7 @@ namespace Microsoft.Extensions.Http.AutoClient; /// } /// /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [AttributeUsage(AttributeTargets.Parameter)] [Conditional("CODE_GENERATION_ATTRIBUTES")] public sealed class BodyAttribute : Attribute diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/BodyContentType.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/BodyContentType.cs index 93baae2b791..4a4617cdc0b 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/BodyContentType.cs +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/BodyContentType.cs @@ -8,7 +8,7 @@ namespace Microsoft.Extensions.Http.AutoClient; /// /// Defines the types of encoding possible for request bodies. /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public enum BodyContentType { /// diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/HeaderAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/HeaderAttribute.cs index 48a3d45a679..e1af6b6240f 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/HeaderAttribute.cs +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/HeaderAttribute.cs @@ -23,7 +23,7 @@ namespace Microsoft.Extensions.Http.AutoClient; /// } /// /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [AttributeUsage(AttributeTargets.Parameter)] [Conditional("CODE_GENERATION_ATTRIBUTES")] public sealed class HeaderAttribute : Attribute diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/DeleteAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/DeleteAttribute.cs index 8b2a2fd473f..ab67d7e61f8 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/DeleteAttribute.cs +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/DeleteAttribute.cs @@ -29,7 +29,7 @@ namespace Microsoft.Extensions.Http.AutoClient; /// } /// /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [AttributeUsage(AttributeTargets.Method)] public sealed class DeleteAttribute : Attribute { diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/GetAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/GetAttribute.cs index 577a82321e2..29859dac58a 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/GetAttribute.cs +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/GetAttribute.cs @@ -29,7 +29,7 @@ namespace Microsoft.Extensions.Http.AutoClient; /// } /// /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [AttributeUsage(AttributeTargets.Method)] public sealed class GetAttribute : Attribute { diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/HeadAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/HeadAttribute.cs index e9121a281b4..7ede1879fc4 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/HeadAttribute.cs +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/HeadAttribute.cs @@ -29,7 +29,7 @@ namespace Microsoft.Extensions.Http.AutoClient; /// } /// /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [AttributeUsage(AttributeTargets.Method)] public sealed class HeadAttribute : Attribute { diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/OptionsAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/OptionsAttribute.cs index de23fa8d0f9..11659f78b06 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/OptionsAttribute.cs +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/OptionsAttribute.cs @@ -29,7 +29,7 @@ namespace Microsoft.Extensions.Http.AutoClient; /// } /// /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [AttributeUsage(AttributeTargets.Method)] public sealed class OptionsAttribute : Attribute { diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PatchAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PatchAttribute.cs index 04e5803ab8d..489259c9c28 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PatchAttribute.cs +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PatchAttribute.cs @@ -29,7 +29,7 @@ namespace Microsoft.Extensions.Http.AutoClient; /// } /// /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [AttributeUsage(AttributeTargets.Method)] public sealed class PatchAttribute : Attribute { diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PostAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PostAttribute.cs index a42a3f6bb16..52385dc5873 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PostAttribute.cs +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PostAttribute.cs @@ -29,7 +29,7 @@ namespace Microsoft.Extensions.Http.AutoClient; /// } /// /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [AttributeUsage(AttributeTargets.Method)] public sealed class PostAttribute : Attribute { diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PutAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PutAttribute.cs index c7de67fa335..9342d15fca2 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PutAttribute.cs +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PutAttribute.cs @@ -29,7 +29,7 @@ namespace Microsoft.Extensions.Http.AutoClient; /// } /// /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [AttributeUsage(AttributeTargets.Method)] public sealed class PutAttribute : Attribute { diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Microsoft.Extensions.Http.AutoClient.csproj b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Microsoft.Extensions.Http.AutoClient.csproj index 5c5b7eca3bc..4d4185e35b1 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Microsoft.Extensions.Http.AutoClient.csproj +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Microsoft.Extensions.Http.AutoClient.csproj @@ -6,7 +6,6 @@ - true true @@ -25,10 +24,6 @@ - - - - diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/QueryAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/QueryAttribute.cs index 0b9b9da47d1..306ad18839d 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/QueryAttribute.cs +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/QueryAttribute.cs @@ -23,7 +23,7 @@ namespace Microsoft.Extensions.Http.AutoClient; /// } /// /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [AttributeUsage(AttributeTargets.Parameter)] [Conditional("CODE_GENERATION_ATTRIBUTES")] public sealed class QueryAttribute : Attribute diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/RequestNameAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/RequestNameAttribute.cs index e3fbc2a2e8b..48cefbdc1e9 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/RequestNameAttribute.cs +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/RequestNameAttribute.cs @@ -26,7 +26,7 @@ namespace Microsoft.Extensions.Http.AutoClient; /// } /// /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [AttributeUsage(AttributeTargets.Method)] [Conditional("CODE_GENERATION_ATTRIBUTES")] public sealed class RequestNameAttribute : Attribute diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/StaticHeaderAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/StaticHeaderAttribute.cs index 774d9716267..5c44944c918 100644 --- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/StaticHeaderAttribute.cs +++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/StaticHeaderAttribute.cs @@ -27,7 +27,7 @@ namespace Microsoft.Extensions.Http.AutoClient; /// } /// /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [AttributeUsage(AttributeTargets.Interface | AttributeTargets.Method, AllowMultiple = true)] [Conditional("CODE_GENERATION_ATTRIBUTES")] public sealed class StaticHeaderAttribute : Attribute diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/FaultInjection/ContextExtensions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/FaultInjection/ContextExtensions.cs index 7ff798724cc..72f6fc491b8 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Resilience/FaultInjection/ContextExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/FaultInjection/ContextExtensions.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Diagnostics.CodeAnalysis; @@ -11,7 +11,7 @@ namespace Microsoft.Extensions.Http.Resilience.FaultInjection; /// /// Provides extension methods for . /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static class ContextExtensions { private const string CallingRequestMessage = "CallingRequestMessage"; diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/FaultInjection/HttpClientFaultInjectionExtensions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/FaultInjection/HttpClientFaultInjectionExtensions.cs index a4d5e91c5c8..289b9aed156 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Resilience/FaultInjection/HttpClientFaultInjectionExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/FaultInjection/HttpClientFaultInjectionExtensions.cs @@ -147,7 +147,7 @@ public static IHttpClientBuilder AddFaultInjectionPolicyHandler(this IHttpClient /// /// The so that additional calls can be chained. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IHttpClientBuilder AddWeightedFaultInjectionPolicyHandlers(this IHttpClientBuilder httpClientBuilder, Action weightAssignmentsConfig) { @@ -176,7 +176,7 @@ public static IHttpClientBuilder AddWeightedFaultInjectionPolicyHandlers(this IH /// /// The so that additional calls can be chained. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [DynamicDependency( DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.PublicParameterlessConstructor, typeof(FaultPolicyWeightAssignmentsOptions))] diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HedgingEndpointOptions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HedgingEndpointOptions.cs index d3b73a59afa..0e95be87f24 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HedgingEndpointOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HedgingEndpointOptions.cs @@ -1,10 +1,10 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.ComponentModel.DataAnnotations; using Microsoft.Extensions.Http.Resilience.Internal.Validators; -using Microsoft.Extensions.Options.Validation; +using Microsoft.Extensions.Options; using Polly.Timeout; namespace Microsoft.Extensions.Http.Resilience; diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HttpStandardHedgingResilienceOptions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HttpStandardHedgingResilienceOptions.cs index 7f4f560b2d4..e30ce2862ff 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HttpStandardHedgingResilienceOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HttpStandardHedgingResilienceOptions.cs @@ -1,11 +1,11 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.ComponentModel.DataAnnotations; using Microsoft.Extensions.Compliance.Classification; using Microsoft.Extensions.Http.Resilience.Internal.Validators; -using Microsoft.Extensions.Options.Validation; +using Microsoft.Extensions.Options; namespace Microsoft.Extensions.Http.Resilience; diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/Internals/Validators/HttpStandardHedgingResilienceOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/Internals/Validators/HttpStandardHedgingResilienceOptionsValidator.cs index d9c81573d81..7cc7faa75fd 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/Internals/Validators/HttpStandardHedgingResilienceOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/Internals/Validators/HttpStandardHedgingResilienceOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.Http.Resilience.Internal.Validators; diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/StandardHedgingHandlerBuilderExtensions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/StandardHedgingHandlerBuilderExtensions.cs index acfe72386ae..a51f69f3a82 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/StandardHedgingHandlerBuilderExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/StandardHedgingHandlerBuilderExtensions.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; @@ -65,7 +65,7 @@ public static IStandardHedgingHandlerBuilder Configure(this IStandardHedgingHand /// The strategy builder. /// The configure method. /// The same builder instance. - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IStandardHedgingHandlerBuilder Configure(this IStandardHedgingHandlerBuilder builder, Action configure) { _ = Throw.IfNull(builder); diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Microsoft.Extensions.Http.Resilience.csproj b/src/Libraries/Microsoft.Extensions.Http.Resilience/Microsoft.Extensions.Http.Resilience.csproj index b63bf4ab1c4..733b5ae0bb8 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Microsoft.Extensions.Http.Resilience.csproj +++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Microsoft.Extensions.Http.Resilience.csproj @@ -10,7 +10,6 @@ true true true - true true true false @@ -28,7 +27,6 @@ - diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResilienceBuilderBuilderExtensions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResilienceBuilderBuilderExtensions.cs index ce8acf3c861..b3cee1fc974 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResilienceBuilderBuilderExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResilienceBuilderBuilderExtensions.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; @@ -65,7 +65,7 @@ public static IHttpStandardResilienceStrategyBuilder Configure(this IHttpStandar /// The configure method. /// The same builder instance. #pragma warning disable S3872 // Parameter names should not duplicate the names of their methods - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IHttpStandardResilienceStrategyBuilder Configure(this IHttpStandardResilienceStrategyBuilder builder, Action configure) #pragma warning restore S3872 // Parameter names should not duplicate the names of their methods { diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResilienceOptions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResilienceOptions.cs index b3c58506e13..cd3fa7a94cf 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResilienceOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResilienceOptions.cs @@ -1,10 +1,10 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.ComponentModel.DataAnnotations; using Microsoft.Extensions.Http.Resilience.Internal; -using Microsoft.Extensions.Options.Validation; +using Microsoft.Extensions.Options; using Polly.Timeout; namespace Microsoft.Extensions.Http.Resilience; diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/Internal/Validators/HttpStandardResilienceOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/Internal/Validators/HttpStandardResilienceOptionsValidator.cs index d07c5564bf4..06018537821 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/Internal/Validators/HttpStandardResilienceOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/Internal/Validators/HttpStandardResilienceOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.Http.Resilience.Internal.Validators; diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/EndpointGroup.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/EndpointGroup.cs index 12a43a3959d..2c95550db07 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/EndpointGroup.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/EndpointGroup.cs @@ -2,7 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Generic; -using Microsoft.Extensions.Options.Validation; +using Microsoft.Extensions.Options; namespace Microsoft.Extensions.Http.Resilience; diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/Internal/OrderedGroups/OrderedGroupsRoutingOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/Internal/OrderedGroups/OrderedGroupsRoutingOptionsValidator.cs index f69a0cd7226..3ba6ed3df24 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/Internal/OrderedGroups/OrderedGroupsRoutingOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/Internal/OrderedGroups/OrderedGroupsRoutingOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.Http.Resilience.Internal.Routing; diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/Internal/WeightedGroups/WeightedGroupsRoutingOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/Internal/WeightedGroups/WeightedGroupsRoutingOptionsValidator.cs index 34659cd2bcb..35686af2ba3 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/Internal/WeightedGroups/WeightedGroupsRoutingOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/Internal/WeightedGroups/WeightedGroupsRoutingOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.Http.Resilience.Internal.Routing; diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/OrderedGroupsRoutingOptions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/OrderedGroupsRoutingOptions.cs index 0b99daabf7b..6d856ab6345 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/OrderedGroupsRoutingOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/OrderedGroupsRoutingOptions.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using Microsoft.Extensions.Options.Validation; +using Microsoft.Extensions.Options; namespace Microsoft.Extensions.Http.Resilience; diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/RoutingStrategyBuilderExtensions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/RoutingStrategyBuilderExtensions.cs index fbd3530f7c1..f1ef1667a4a 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/RoutingStrategyBuilderExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/RoutingStrategyBuilderExtensions.cs @@ -67,7 +67,7 @@ public static IRoutingStrategyBuilder ConfigureOrderedGroups(this IRoutingStrate /// /// The same routing builder instance. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IRoutingStrategyBuilder ConfigureOrderedGroups(this IRoutingStrategyBuilder builder, Action configure) { _ = Throw.IfNull(builder); @@ -121,7 +121,7 @@ public static IRoutingStrategyBuilder ConfigureWeightedGroups(this IRoutingStrat /// /// The same routing builder instance. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IRoutingStrategyBuilder ConfigureWeightedGroups(this IRoutingStrategyBuilder builder, Action configure) { _ = Throw.IfNull(builder); diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/WeightedGroupsRoutingOptions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/WeightedGroupsRoutingOptions.cs index 7ce868e494d..5d3bdfa8bdd 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/WeightedGroupsRoutingOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/WeightedGroupsRoutingOptions.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using Microsoft.Extensions.Options.Validation; +using Microsoft.Extensions.Options; namespace Microsoft.Extensions.Http.Resilience; diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Logging/Internal/LoggingOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Logging/Internal/LoggingOptionsValidator.cs index 582d87fd874..64103a74b4d 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Logging/Internal/LoggingOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Logging/Internal/LoggingOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.Http.Telemetry.Logging.Internal; diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Logging/LoggingOptions.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Logging/LoggingOptions.cs index 0d44db5149a..aa05eb08e3f 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Logging/LoggingOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Logging/LoggingOptions.cs @@ -134,7 +134,7 @@ public class LoggingOptions /// /// The default value is . /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public HttpRouteParameterRedactionMode RequestPathParameterRedactionMode { get; set; } = DefaultPathParameterRedactionMode; /// diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpClientMeteringExtensions.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpClientMeteringExtensions.cs index 7927428efaf..5a96349c2ba 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpClientMeteringExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpClientMeteringExtensions.cs @@ -34,7 +34,7 @@ public static class HttpClientMeteringExtensions /// /// instance for chaining. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IServiceCollection AddHttpClientMeteringForAllHttpClients(this IServiceCollection services) { _ = Throw.IfNull(services); diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpMeteringHandler.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpMeteringHandler.cs index ba946b7198b..309ed468fc2 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpMeteringHandler.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpMeteringHandler.cs @@ -49,7 +49,7 @@ public class HttpMeteringHandler : DelegatingHandler /// /// The meter. /// Enumerable of outgoing request metric enrichers. - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public HttpMeteringHandler( Meter meter, IEnumerable enrichers) diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpRequestResultType.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpRequestResultType.cs index d6c33a18376..a24204404d5 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpRequestResultType.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpRequestResultType.cs @@ -9,7 +9,7 @@ namespace Microsoft.Extensions.Http.Telemetry.Metering; /// /// Statuses for classifying http request result. /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [EnumStrings] public enum HttpRequestResultType { diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Microsoft.Extensions.Http.Telemetry.csproj b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Microsoft.Extensions.Http.Telemetry.csproj index 2e1f3b162ae..5da0cb9d370 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Microsoft.Extensions.Http.Telemetry.csproj +++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Microsoft.Extensions.Http.Telemetry.csproj @@ -8,7 +8,6 @@ true true - true true true false @@ -32,7 +31,6 @@ - diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/HttpClientTracingExtensions.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/HttpClientTracingExtensions.cs index 5901f2668f3..85fff0062b3 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/HttpClientTracingExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/HttpClientTracingExtensions.cs @@ -82,7 +82,7 @@ public static TracerProviderBuilder AddHttpClientTracing(this TracerProviderBuil /// The to add this enricher to. /// for chaining. /// The argument is . - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IServiceCollection AddHttpClientTraceEnricher(this IServiceCollection services) where T : class, IHttpClientTraceEnricher { @@ -98,7 +98,7 @@ public static IServiceCollection AddHttpClientTraceEnricher(this IServiceColl /// Enricher to be added. /// for chaining. /// The argument or is . - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IServiceCollection AddHttpClientTraceEnricher(this IServiceCollection services, IHttpClientTraceEnricher enricher) { _ = Throw.IfNull(services); diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/HttpClientTracingOptions.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/HttpClientTracingOptions.cs index ac0e56ff31c..a1b678643a9 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/HttpClientTracingOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/HttpClientTracingOptions.cs @@ -23,7 +23,7 @@ public class HttpClientTracingOptions /// /// The default value is . /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public HttpRouteParameterRedactionMode RequestPathParameterRedactionMode { get; set; } = DefaultPathParameterRedactionMode; /// diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/IHttpClientTraceEnricher.netfx.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/IHttpClientTraceEnricher.netfx.cs index e557eb5ac59..307325ab00f 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/IHttpClientTraceEnricher.netfx.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/IHttpClientTraceEnricher.netfx.cs @@ -23,7 +23,7 @@ public interface IHttpClientTraceEnricher /// /// If your enricher fetches some information from or to enrich HTTP traces, then make sure to check it for . /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] void Enrich(Activity activity, HttpWebRequest? webRequest, HttpWebResponse? webResponse); } diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/IHttpPathRedactor.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/IHttpPathRedactor.cs index f15a5465e66..1ec02d6758f 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/IHttpPathRedactor.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/IHttpPathRedactor.cs @@ -10,7 +10,7 @@ namespace Microsoft.Extensions.Http.Telemetry.Tracing; /// /// Interface for implementing a redaction mechanism for outgoing HTTP request paths. /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public interface IHttpPathRedactor { /// diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/Internal/HttpClientTracingOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/Internal/HttpClientTracingOptionsValidator.cs index bdae1d856eb..efb9c70c443 100644 --- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/Internal/HttpClientTracingOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/Internal/HttpClientTracingOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.Http.Telemetry.Tracing.Internal; diff --git a/src/Libraries/Microsoft.Extensions.ObjectPool.DependencyInjection/DependencyInjectionPoolOptions.cs b/src/Libraries/Microsoft.Extensions.ObjectPool.DependencyInjection/DependencyInjectionPoolOptions.cs index cbb398634ee..f5002f122ca 100644 --- a/src/Libraries/Microsoft.Extensions.ObjectPool.DependencyInjection/DependencyInjectionPoolOptions.cs +++ b/src/Libraries/Microsoft.Extensions.ObjectPool.DependencyInjection/DependencyInjectionPoolOptions.cs @@ -8,7 +8,7 @@ namespace Microsoft.Extensions.ObjectPool; /// /// Contains configuration for pools. /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public sealed class DependencyInjectionPoolOptions { internal const int DefaultCapacity = 1024; diff --git a/src/Libraries/Microsoft.Extensions.ObjectPool.DependencyInjection/ObjectPoolServiceCollectionExtensions.cs b/src/Libraries/Microsoft.Extensions.ObjectPool.DependencyInjection/ObjectPoolServiceCollectionExtensions.cs index 2622a9d9958..29ea71e2995 100644 --- a/src/Libraries/Microsoft.Extensions.ObjectPool.DependencyInjection/ObjectPoolServiceCollectionExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.ObjectPool.DependencyInjection/ObjectPoolServiceCollectionExtensions.cs @@ -15,7 +15,7 @@ namespace Microsoft.Extensions.ObjectPool; /// /// Extension methods for adding to DI container. /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static class ObjectPoolServiceCollectionExtensions { /// diff --git a/src/Libraries/Microsoft.Extensions.Options.Validation/Microsoft.Extensions.Options.Validation.csproj b/src/Libraries/Microsoft.Extensions.Options.Validation/Microsoft.Extensions.Options.Validation.csproj deleted file mode 100644 index be466cb0dc0..00000000000 --- a/src/Libraries/Microsoft.Extensions.Options.Validation/Microsoft.Extensions.Options.Validation.csproj +++ /dev/null @@ -1,38 +0,0 @@ - - - Microsoft.Extensions.Options.Validation - Support for extended option validation. - Fundamentals - - - - true - true - true - true - - - - normal - 100 - 95 - 92 - - - - - - - - - - - - - - - - - - - diff --git a/src/Libraries/Microsoft.Extensions.Options.Validation/Microsoft.Extensions.Options.Validation.json b/src/Libraries/Microsoft.Extensions.Options.Validation/Microsoft.Extensions.Options.Validation.json deleted file mode 100644 index 89c2e051c7d..00000000000 --- a/src/Libraries/Microsoft.Extensions.Options.Validation/Microsoft.Extensions.Options.Validation.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "Name": "Microsoft.Extensions.Options.Validation, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", - "Types": [ - { - "Type": "sealed class Microsoft.Extensions.Options.Validation.OptionsValidatorAttribute : System.Attribute", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Options.Validation.OptionsValidatorAttribute.OptionsValidatorAttribute();", - "Stage": "Stable" - } - ] - }, - { - "Type": "sealed class Microsoft.Extensions.Options.Validation.ValidateEnumeratedItemsAttribute : System.Attribute", - "Stage": "Experimental", - "Methods": [ - { - "Member": "Microsoft.Extensions.Options.Validation.ValidateEnumeratedItemsAttribute.ValidateEnumeratedItemsAttribute();", - "Stage": "Experimental" - }, - { - "Member": "Microsoft.Extensions.Options.Validation.ValidateEnumeratedItemsAttribute.ValidateEnumeratedItemsAttribute(System.Type validator);", - "Stage": "Experimental" - } - ], - "Properties": [ - { - "Member": "System.Type? Microsoft.Extensions.Options.Validation.ValidateEnumeratedItemsAttribute.Validator { get; }", - "Stage": "Experimental" - } - ] - }, - { - "Type": "sealed class Microsoft.Extensions.Options.Validation.ValidateObjectMembersAttribute : System.Attribute", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Options.Validation.ValidateObjectMembersAttribute.ValidateObjectMembersAttribute();", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Options.Validation.ValidateObjectMembersAttribute.ValidateObjectMembersAttribute(System.Type validator);", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "System.Type? Microsoft.Extensions.Options.Validation.ValidateObjectMembersAttribute.Validator { get; }", - "Stage": "Stable" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/Libraries/Microsoft.Extensions.Options.Validation/OptionsValidatorAttribute.cs b/src/Libraries/Microsoft.Extensions.Options.Validation/OptionsValidatorAttribute.cs deleted file mode 100644 index c5a8fa15ba4..00000000000 --- a/src/Libraries/Microsoft.Extensions.Options.Validation/OptionsValidatorAttribute.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Diagnostics; - -namespace Microsoft.Extensions.Options.Validation; - -/// -/// Triggers the automatic generation of the implementation of at compile time. -/// -[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)] -[Conditional("CODE_GENERATION_ATTRIBUTES")] -public sealed class OptionsValidatorAttribute : Attribute -{ -} diff --git a/src/Libraries/Microsoft.Extensions.Options.Validation/ValidateEnumeratedItemsAttribute.cs b/src/Libraries/Microsoft.Extensions.Options.Validation/ValidateEnumeratedItemsAttribute.cs deleted file mode 100644 index 11ccd1c22fd..00000000000 --- a/src/Libraries/Microsoft.Extensions.Options.Validation/ValidateEnumeratedItemsAttribute.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Diagnostics.CodeAnalysis; -using Microsoft.Extensions.Options; - -namespace Microsoft.Extensions.Options.Validation; - -/// -/// Marks a field or property to be enumerated, and each enumerated object to be validated. -/// -[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] -[Experimental] -public sealed class ValidateEnumeratedItemsAttribute : Attribute -{ - /// - /// Initializes a new instance of the class. - /// - /// - /// Using this constructor for a field/property tells the code generator to - /// generate validation for the individual members of the enumerable's type. - /// - public ValidateEnumeratedItemsAttribute() - { - } - - /// - /// Initializes a new instance of the class. - /// - /// A type that implements for the enumerable's type. - /// - /// Using this constructor for a field/property tells the code generator to use the given type to validate - /// the object held by the enumerable. - /// - public ValidateEnumeratedItemsAttribute(Type validator) - { - Validator = validator; - } - - /// - /// Gets the type to use to validate the enumerable's objects. - /// - public Type? Validator { get; } -} diff --git a/src/Libraries/Microsoft.Extensions.Options.Validation/ValidateObjectMembersAttribute.cs b/src/Libraries/Microsoft.Extensions.Options.Validation/ValidateObjectMembersAttribute.cs deleted file mode 100644 index 6bdd46261f7..00000000000 --- a/src/Libraries/Microsoft.Extensions.Options.Validation/ValidateObjectMembersAttribute.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using Microsoft.Extensions.Options; - -namespace Microsoft.Extensions.Options.Validation; - -/// -/// Marks a field or property to be validated transitively. -/// -[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] -public sealed class ValidateObjectMembersAttribute : Attribute -{ - /// - /// Initializes a new instance of the class. - /// - /// - /// Using this constructor for a field/property tells the code generator to - /// generate validation for the individual members of the field/property's type. - /// - public ValidateObjectMembersAttribute() - { - } - - /// - /// Initializes a new instance of the class. - /// - /// A type that implements for the field/property's type. - /// - /// Using this constructor for a field/property tells the code generator to use the given type to validate - /// the object held by the field/property. - /// - public ValidateObjectMembersAttribute(Type validator) - { - Validator = validator; - } - - /// - /// Gets the type to use to validate a field or property. - /// - public Type? Validator { get; } -} diff --git a/src/Libraries/Microsoft.Extensions.Options.Validation/buildTransitive/Microsoft.Extensions.Options.Validation.props b/src/Libraries/Microsoft.Extensions.Options.Validation/buildTransitive/Microsoft.Extensions.Options.Validation.props deleted file mode 100644 index 7bc91e44385..00000000000 --- a/src/Libraries/Microsoft.Extensions.Options.Validation/buildTransitive/Microsoft.Extensions.Options.Validation.props +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/src/Libraries/Microsoft.Extensions.Options.Validation/buildTransitive/Microsoft.Extensions.Options.Validation.targets b/src/Libraries/Microsoft.Extensions.Options.Validation/buildTransitive/Microsoft.Extensions.Options.Validation.targets deleted file mode 100644 index ceadfacb28c..00000000000 --- a/src/Libraries/Microsoft.Extensions.Options.Validation/buildTransitive/Microsoft.Extensions.Options.Validation.targets +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/FaultInjectionExtensions.cs b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/FaultInjectionExtensions.cs index 315decc55e3..f57611abe36 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/FaultInjectionExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/FaultInjectionExtensions.cs @@ -125,7 +125,7 @@ public static Context WithFaultInjection(this Context context, string groupName) /// /// Any of the parameters are . /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static Context WithFaultInjection(this Context context, FaultPolicyWeightAssignmentsOptions weightAssignments) { _ = Throw.IfNull(context); diff --git a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/FaultInjectionOptionsBuilder.cs b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/FaultInjectionOptionsBuilder.cs index eb126f6615f..93d68bd3c86 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/FaultInjectionOptionsBuilder.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/FaultInjectionOptionsBuilder.cs @@ -126,7 +126,7 @@ public FaultInjectionOptionsBuilder AddException(string key, Exception exception /// /// is an empty string or . /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public FaultInjectionOptionsBuilder AddCustomResult(string key, object customResult) { _ = Throw.IfNull(customResult); diff --git a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/IChaosPolicyFactory.cs b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/IChaosPolicyFactory.cs index f89120b5073..32906ec0217 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/IChaosPolicyFactory.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/IChaosPolicyFactory.cs @@ -40,6 +40,6 @@ public interface IChaosPolicyFactory /// /// The type of value policies created by this method will inject. /// A custom result policy, an instance of . - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public AsyncInjectOutcomePolicy CreateCustomResultPolicy(); } diff --git a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/ChaosPolicyOptionsGroup.cs b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/ChaosPolicyOptionsGroup.cs index 13473760cc1..ee261e4c747 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/ChaosPolicyOptionsGroup.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/ChaosPolicyOptionsGroup.cs @@ -2,7 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Diagnostics.CodeAnalysis; -using Microsoft.Extensions.Options.Validation; +using Microsoft.Extensions.Options; namespace Microsoft.Extensions.Resilience.FaultInjection; @@ -42,6 +42,6 @@ public class ChaosPolicyOptionsGroup /// Gets or sets the custom result policy options of the chaos policy options group. /// [ValidateObjectMembers] - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public CustomResultPolicyOptions? CustomResultPolicyOptions { get; set; } } diff --git a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/CustomResultPolicyOptions.cs b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/CustomResultPolicyOptions.cs index 92cea07fe31..8fd856fbe58 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/CustomResultPolicyOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/CustomResultPolicyOptions.cs @@ -9,7 +9,7 @@ namespace Microsoft.Extensions.Resilience.FaultInjection; /// /// Custom Result chaos policy options definition. /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public class CustomResultPolicyOptions : ChaosPolicyOptionsBase { /// @@ -20,7 +20,7 @@ public class CustomResultPolicyOptions : ChaosPolicyOptionsBase /// from . /// Default is set to . /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [Required] public string CustomResultKey { get; set; } = string.Empty; } diff --git a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/FaultPolicyWeightAssignmentsOptions.cs b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/FaultPolicyWeightAssignmentsOptions.cs index 05254afa450..53daba3e416 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/FaultPolicyWeightAssignmentsOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/FaultPolicyWeightAssignmentsOptions.cs @@ -9,7 +9,7 @@ namespace Microsoft.Extensions.Resilience.FaultInjection; /// /// Class to contain fault-injection policy weight assignments. /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public class FaultPolicyWeightAssignmentsOptions { /// diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Microsoft.Extensions.Resilience.csproj b/src/Libraries/Microsoft.Extensions.Resilience/Microsoft.Extensions.Resilience.csproj index 24fddc1e8f9..4205a709204 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/Microsoft.Extensions.Resilience.csproj +++ b/src/Libraries/Microsoft.Extensions.Resilience/Microsoft.Extensions.Resilience.csproj @@ -8,7 +8,6 @@ true true - true true true true @@ -27,7 +26,6 @@ - diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/PipelineId.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/PipelineId.cs index 94afb13edd6..4c995c9bcc6 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/PipelineId.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/PipelineId.cs @@ -9,7 +9,7 @@ namespace Microsoft.Extensions.Resilience.Internal; /// /// Composite key for the pipeline. /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] internal sealed record PipelineId(string PipelineName, string PipelineKey, string? ResultType, string PolicyPipelineKey) { /// @@ -19,7 +19,7 @@ internal sealed record PipelineId(string PipelineName, string PipelineKey, strin /// The pipeline name. /// The pipeline key. /// The pipeline id instance. - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static PipelineId Create(string pipelineName, string pipelineKey) { var policyPipelineKey = string.IsNullOrEmpty(pipelineKey) ? $"{typeof(T).Name}-{pipelineName}" : $"{typeof(T).Name}-{pipelineName}-{pipelineKey}"; @@ -33,7 +33,7 @@ public static PipelineId Create(string pipelineName, string pipelineKey) /// The pipeline name. /// The pipeline key. /// The pipeline id instance. - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static PipelineId Create(string pipelineName, string pipelineKey) { var policyPipelineKey = string.IsNullOrEmpty(pipelineKey) ? pipelineName : $"{pipelineName}-{pipelineKey}"; diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/BulkheadPolicyOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/BulkheadPolicyOptionsValidator.cs index 933add3b643..936851360e0 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/BulkheadPolicyOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/BulkheadPolicyOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; using Microsoft.Extensions.Resilience.Options; namespace Microsoft.Extensions.Resilience.Internal; diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/CircuitBreakerPolicyOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/CircuitBreakerPolicyOptionsValidator.cs index b9e44fb2c27..697662e702d 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/CircuitBreakerPolicyOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/CircuitBreakerPolicyOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; using Microsoft.Extensions.Resilience.Options; namespace Microsoft.Extensions.Resilience.Internal; diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/CircuitBreakerPolicyOptionsValidatorT.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/CircuitBreakerPolicyOptionsValidatorT.cs index 1721378ee28..f206d6f5b60 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/CircuitBreakerPolicyOptionsValidatorT.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/CircuitBreakerPolicyOptionsValidatorT.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; using Microsoft.Extensions.Resilience.Options; namespace Microsoft.Extensions.Resilience.Internal; diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/HedgingPolicyOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/HedgingPolicyOptionsValidator.cs index 96912a27e8c..c337243b3e8 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/HedgingPolicyOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/HedgingPolicyOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; using Microsoft.Extensions.Resilience.Options; namespace Microsoft.Extensions.Resilience.Internal; diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/HedgingPolicyOptionsValidatorT.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/HedgingPolicyOptionsValidatorT.cs index 7a01df2ddfb..d96ec809a5d 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/HedgingPolicyOptionsValidatorT.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/HedgingPolicyOptionsValidatorT.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; using Microsoft.Extensions.Resilience.Options; namespace Microsoft.Extensions.Resilience.Internal; diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/RetryPolicyOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/RetryPolicyOptionsValidator.cs index 79de3d93c12..0e5267a1be0 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/RetryPolicyOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/RetryPolicyOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; using Microsoft.Extensions.Resilience.Options; namespace Microsoft.Extensions.Resilience.Internal; diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/RetryPolicyOptionsValidatorT.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/RetryPolicyOptionsValidatorT.cs index 4f17bf0bbb0..80c1abb7fc0 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/RetryPolicyOptionsValidatorT.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/RetryPolicyOptionsValidatorT.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; using Microsoft.Extensions.Resilience.Options; namespace Microsoft.Extensions.Resilience.Internal; diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/TimeoutPolicyOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/TimeoutPolicyOptionsValidator.cs index a12aee93c2c..adfd092cebf 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/TimeoutPolicyOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/TimeoutPolicyOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; using Microsoft.Extensions.Resilience.Options; namespace Microsoft.Extensions.Resilience.Internal; diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/ResilienceDimensions.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/ResilienceDimensions.cs index 52705a74e0a..a4343075435 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/ResilienceDimensions.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/ResilienceDimensions.cs @@ -15,77 +15,77 @@ namespace Microsoft.Extensions.Resilience; /// Constants are standardized in MS Common Schema. /// // Avoid changing const values in this class by all means. Such a breaking change would break customer's monitoring. -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [EditorBrowsable(EditorBrowsableState.Never)] public static class ResilienceDimensions { /// /// Pipeline name. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [EditorBrowsable(EditorBrowsableState.Never)] public const string PipelineName = "pipeline_name"; /// /// Pipeline key. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [EditorBrowsable(EditorBrowsableState.Never)] public const string PipelineKey = "pipeline_key"; /// /// Result type. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [EditorBrowsable(EditorBrowsableState.Never)] public const string ResultType = "result_type"; /// /// Policy name. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [EditorBrowsable(EditorBrowsableState.Never)] public const string PolicyName = "policy_name"; /// /// Event name. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [EditorBrowsable(EditorBrowsableState.Never)] public const string EventName = "event_name"; /// /// Failure source. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [EditorBrowsable(EditorBrowsableState.Never)] public const string FailureSource = "failure_source"; /// /// Failure reason. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [EditorBrowsable(EditorBrowsableState.Never)] public const string FailureReason = "failure_reason"; /// /// Failure summary. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [EditorBrowsable(EditorBrowsableState.Never)] public const string FailureSummary = "failure_summary"; /// /// Dependency name. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [EditorBrowsable(EditorBrowsableState.Never)] public const string DependencyName = "dep_name"; /// /// Request name. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [EditorBrowsable(EditorBrowsableState.Never)] public const string RequestName = "req_name"; @@ -93,7 +93,7 @@ public static class ResilienceDimensions /// Gets a list of all dimension names. /// /// A read-only of all dimension names. - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [EditorBrowsable(EditorBrowsableState.Never)] public static IReadOnlyList DimensionNames { get; } = Array.AsReadOnly(new[] diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/OptionsBuilderExtensions.cs b/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/OptionsBuilderExtensions.cs index 0bff0195411..2a7fd66022a 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/OptionsBuilderExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/OptionsBuilderExtensions.cs @@ -13,7 +13,7 @@ namespace Microsoft.Extensions.Resilience.Internal; /// /// Extensions for . /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] internal static class OptionsBuilderExtensions { /// diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/ResiliencePipelineBuilderExtensions.cs b/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/ResiliencePipelineBuilderExtensions.cs index bc3e5c58506..9a6106c6e0b 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/ResiliencePipelineBuilderExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/ResiliencePipelineBuilderExtensions.cs @@ -15,7 +15,7 @@ namespace Microsoft.Extensions.Resilience.Internal; /// Pub-internal extension methods for the . /// /// Do not use this class directly, it's reserved for internal use and can change at any time. -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] internal static class ResiliencePipelineBuilderExtensions { /// diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/ResiliencePipelineFactoryOptionsValidatorT.cs b/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/ResiliencePipelineFactoryOptionsValidatorT.cs index 12b23fc8587..11d677c1883 100644 --- a/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/ResiliencePipelineFactoryOptionsValidatorT.cs +++ b/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/ResiliencePipelineFactoryOptionsValidatorT.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.Resilience.Internal; diff --git a/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Http/TelemetryConstants.cs b/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Http/TelemetryConstants.cs index 7ccb595318c..e942a25099d 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Http/TelemetryConstants.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Http/TelemetryConstants.cs @@ -28,12 +28,12 @@ public static class TelemetryConstants /// /// Header for client application name, sent on an outgoing http call. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public const string ClientApplicationNameHeader = "X-ClientApplication"; /// /// Header for server application name, sent on a http request. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public const string ServerApplicationNameHeader = "X-ServerApplication"; } diff --git a/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Logging/LogMethodAttribute.cs b/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Logging/LogMethodAttribute.cs index 5942a141091..8e7659d3cc2 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Logging/LogMethodAttribute.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Logging/LogMethodAttribute.cs @@ -266,7 +266,7 @@ public LogMethodAttribute(int eventId) /// } /// /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public LogMethodAttribute() { EventId = 0; diff --git a/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Metering/MeterT.cs b/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Metering/MeterT.cs index 6726b6cd6d2..3f2f6a034ab 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Metering/MeterT.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Metering/MeterT.cs @@ -12,13 +12,13 @@ namespace Microsoft.Extensions.Telemetry.Metering; /// A meter class where the meter name is derived from the specified type name. /// /// The type whose name is used as the meter name. -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public class Meter : Meter { /// /// Initializes a new instance of the class. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public Meter() : base(typeof(TMeterName).FullName!) { diff --git a/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Metering/MeteringExtensions.cs b/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Metering/MeteringExtensions.cs index e69dbb13093..a4f6354dabc 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Metering/MeteringExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Metering/MeteringExtensions.cs @@ -17,7 +17,7 @@ public static class MeteringExtensions /// /// The dependency injection container to register metering into. /// The value of . - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IServiceCollection RegisterMetering(this IServiceCollection services) { services.TryAdd(ServiceDescriptor.Singleton(typeof(Meter<>), typeof(Meter<>))); diff --git a/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/CollectedMeasurement.cs b/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/CollectedMeasurement.cs index c3624db32c0..687a62b44d7 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/CollectedMeasurement.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/CollectedMeasurement.cs @@ -14,7 +14,7 @@ namespace Microsoft.Extensions.Telemetry.Testing.Metering; /// Represents a single measurement performed by an instrument. /// /// The type of metric measurement value. -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [DebuggerDisplay("{DebuggerToString(),nq}")] public sealed class CollectedMeasurement where T : struct diff --git a/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/MeasurementExtensions.cs b/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/MeasurementExtensions.cs index 9986306f002..ee8bed03241 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/MeasurementExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/MeasurementExtensions.cs @@ -11,7 +11,7 @@ namespace Microsoft.Extensions.Telemetry.Testing.Metering; /// /// Extensions to simplify working with lists of measurements. /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static class MeasurementExtensions { /// diff --git a/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/MetricCollector.cs b/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/MetricCollector.cs index 4d162b9b5ab..cdf8405b73f 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/MetricCollector.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/MetricCollector.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; @@ -17,7 +17,7 @@ namespace Microsoft.Extensions.Telemetry.Testing.Metering; /// Collects the measurements published from an or . /// /// The type of metric data being recorded. -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [DebuggerDisplay("{_measurements.Count} measurements")] public sealed class MetricCollector : IDisposable where T : struct diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggerProvider.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggerProvider.cs index b913abc9027..7a724330783 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggerProvider.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggerProvider.cs @@ -19,7 +19,7 @@ namespace Microsoft.Extensions.Telemetry.Logging; /// OpenTelemetry Logger provider class. /// [ProviderAlias("R9")] -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public sealed class LoggerProvider : BaseProvider, ILoggerProvider, ISupportExternalScope { private const int ProcessorShutdownGracePeriodInMs = 5000; diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingOptions.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingOptions.cs index 1188d2f7e11..8cdc35b2251 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingOptions.cs @@ -59,7 +59,7 @@ public class LoggingOptions /// /// When set to a value less than 2 KB or greater than 32 KB, an exception will be thrown. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] [Range(MinDefinedStackTraceLength, MaxDefinedStackTraceLength, ErrorMessage = "Maximum stack trace length should be between 2kb and 32kb")] public int MaxStackTraceLength { get; set; } = DefaultStackTraceLength; } diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingOptionsValidator.cs index 9d9489c9a66..3f396c504e6 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.Telemetry.Logging; diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Metering.Collectors.EventCounters/EventCountersCollectorOptions.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Metering.Collectors.EventCounters/EventCountersCollectorOptions.cs index 2bb199698a3..d9be1869744 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry/Metering.Collectors.EventCounters/EventCountersCollectorOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry/Metering.Collectors.EventCounters/EventCountersCollectorOptions.cs @@ -69,7 +69,7 @@ public class EventCountersCollectorOptions /// EventSource: "Microsoft-AspNetCore-Server-Kestrel", Counters: /// - "connection-queue-length", "request-queue-length". /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public bool IncludeRecommendedDefault { get; set; } #if NET5_0_OR_GREATER diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Metering.Collectors.EventCounters/Internal/EventCountersCollectorOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Metering.Collectors.EventCounters/Internal/EventCountersCollectorOptionsValidator.cs index 8eb3e85bc89..0c70de10791 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry/Metering.Collectors.EventCounters/Internal/EventCountersCollectorOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry/Metering.Collectors.EventCounters/Internal/EventCountersCollectorOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.Telemetry.Metering.Internal; diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Metering/MeteringOptions.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Metering/MeteringOptions.cs index 76b4234fd6f..141a982c8f4 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry/Metering/MeteringOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry/Metering/MeteringOptions.cs @@ -9,7 +9,7 @@ namespace Microsoft.Extensions.Telemetry.Metering; /// /// Options for configuring metering. /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public class MeteringOptions { /// diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Metering/OTelMeteringExtensions.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Metering/OTelMeteringExtensions.cs index 688762886bc..3fccb6ef825 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry/Metering/OTelMeteringExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry/Metering/OTelMeteringExtensions.cs @@ -14,7 +14,7 @@ namespace Microsoft.Extensions.Telemetry.Metering; /// /// Metering extensions for OpenTelemetry based metrics. /// -[Experimental] +[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static class OTelMeteringExtensions { /// @@ -22,7 +22,7 @@ public static class OTelMeteringExtensions /// /// instance. /// Returns for chaining. - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static MeterProviderBuilder AddMetering( this MeterProviderBuilder builder) { @@ -35,7 +35,7 @@ public static MeterProviderBuilder AddMetering( /// instance. /// Configuration section that contains . /// Returns for chaining. - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static MeterProviderBuilder AddMetering( this MeterProviderBuilder builder, IConfigurationSection configurationSection) @@ -52,7 +52,7 @@ public static MeterProviderBuilder AddMetering( /// instance. /// The configuration delegate. /// Returns for chaining. - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static MeterProviderBuilder AddMetering( this MeterProviderBuilder builder, Action configure) diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Microsoft.Extensions.Telemetry.csproj b/src/Libraries/Microsoft.Extensions.Telemetry/Microsoft.Extensions.Telemetry.csproj index 026721a8001..31890f7372b 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry/Microsoft.Extensions.Telemetry.csproj +++ b/src/Libraries/Microsoft.Extensions.Telemetry/Microsoft.Extensions.Telemetry.csproj @@ -16,7 +16,6 @@ true true true - true @@ -29,12 +28,12 @@ - + diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Telemetry.Internal/IHttpRouteFormatter.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Telemetry.Internal/IHttpRouteFormatter.cs index f109271773f..258e30afd33 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry/Telemetry.Internal/IHttpRouteFormatter.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry/Telemetry.Internal/IHttpRouteFormatter.cs @@ -21,7 +21,7 @@ internal interface IHttpRouteFormatter /// Strategy to decide how parameters are redacted. /// Dictionary of parameters with their data classification that needs to be redacted. /// Returns formatted path with sensitive parameter values redacted. - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] string Format(string httpRoute, string httpPath, HttpRouteParameterRedactionMode redactionMode, IReadOnlyDictionary parametersToRedact); /// @@ -32,6 +32,6 @@ internal interface IHttpRouteFormatter /// Strategy to decide how parameters are redacted. /// Dictionary of parameters with their data classification that needs to be redacted. /// Returns formatted path with sensitive parameter values redacted. - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] string Format(in ParsedRouteSegments routeSegments, string httpPath, HttpRouteParameterRedactionMode redactionMode, IReadOnlyDictionary parametersToRedact); } diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Telemetry/TelemetryExtensions.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Telemetry/TelemetryExtensions.cs index 1d106201a91..911759ca8d1 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry/Telemetry/TelemetryExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry/Telemetry/TelemetryExtensions.cs @@ -25,7 +25,7 @@ public static class TelemetryExtensions /// /// object. /// Metadata for the request. - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static void SetRequestMetadata(this HttpWebRequest request, RequestMetadata metadata) { _ = Throw.IfNull(request); @@ -58,7 +58,7 @@ public static void SetRequestMetadata(this HttpRequestMessage request, RequestMe /// /// object. /// Request metadata. - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static RequestMetadata? GetRequestMetadata(this HttpWebRequest request) { _ = Throw.IfNull(request); diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/Internal/SamplingOptionsAutoValidator.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/Internal/SamplingOptionsAutoValidator.cs index 083fd1c358f..6ad25eb2e93 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/Internal/SamplingOptionsAutoValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/Internal/SamplingOptionsAutoValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.Telemetry.Tracing.Internal; diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/ParentBasedSamplerOptions.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/ParentBasedSamplerOptions.cs index aee2e9731ea..b77dffb8eba 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/ParentBasedSamplerOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/ParentBasedSamplerOptions.cs @@ -1,7 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using Microsoft.Extensions.Options.Validation; +using Microsoft.Extensions.Options; namespace Microsoft.Extensions.Telemetry.Tracing; diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/SamplingOptions.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/SamplingOptions.cs index 5c109e773bc..a91b19dcce8 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/SamplingOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/SamplingOptions.cs @@ -1,7 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using Microsoft.Extensions.Options.Validation; +using Microsoft.Extensions.Options; namespace Microsoft.Extensions.Telemetry.Tracing; diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Tracing/TracingEnricherExtensions.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Tracing/TracingEnricherExtensions.cs index 36cc62c5b47..76854f58e0d 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry/Tracing/TracingEnricherExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry/Tracing/TracingEnricherExtensions.cs @@ -53,7 +53,7 @@ public static TracerProviderBuilder AddTraceEnricher(this TracerProviderBuilder /// The to add this enricher to. /// The so that additional calls can be chained. /// The argument is . - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IServiceCollection AddTraceEnricher(this IServiceCollection services) where T : class, ITraceEnricher { @@ -71,7 +71,7 @@ public static IServiceCollection AddTraceEnricher(this IServiceCollection ser /// Enricher to be added. /// The so that additional calls can be chained. /// The argument or is . - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static IServiceCollection AddTraceEnricher(this IServiceCollection services, ITraceEnricher enricher) { _ = Throw.IfNull(services); diff --git a/src/Libraries/Microsoft.Extensions.TimeProvider.Testing/FakeTimeProvider.cs b/src/Libraries/Microsoft.Extensions.TimeProvider.Testing/FakeTimeProvider.cs index 55c8310299b..b45f50d29f8 100644 --- a/src/Libraries/Microsoft.Extensions.TimeProvider.Testing/FakeTimeProvider.cs +++ b/src/Libraries/Microsoft.Extensions.TimeProvider.Testing/FakeTimeProvider.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; @@ -30,7 +30,7 @@ public class FakeTimeProvider : TimeProvider /// This creates a provider whose time is initially set to midnight January 1st 2000. /// The provider is set to not automatically advance time each time it is read. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public FakeTimeProvider() { Start = _now; @@ -43,7 +43,7 @@ public FakeTimeProvider() /// /// The provider is set to not automatically advance time each time it is read. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public FakeTimeProvider(DateTimeOffset startDateTime) { _ = Throw.IfLessThan(startDateTime.Ticks, 0); @@ -55,7 +55,7 @@ public FakeTimeProvider(DateTimeOffset startDateTime) /// /// Gets the starting date and time for this provider. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public DateTimeOffset Start { get; } /// @@ -64,7 +64,7 @@ public FakeTimeProvider(DateTimeOffset startDateTime) /// /// This defaults to . /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public TimeSpan AutoAdvanceAmount { get => _autoAdvanceAmount; @@ -94,7 +94,7 @@ public override DateTimeOffset GetUtcNow() /// Sets the date and time in the UTC time zone. /// /// The date and time in the UTC time zone. - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public void SetUtcNow(DateTimeOffset value) { lock (Waiters) @@ -120,7 +120,7 @@ public void SetUtcNow(DateTimeOffset value) /// marches forward automatically in hardware, for the fake time provider the application is responsible for /// doing this explicitly by calling this method. /// - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public void Advance(TimeSpan delta) { _ = Throw.IfLessThan(delta.Ticks, 0); @@ -155,7 +155,7 @@ public override long GetTimestamp() /// Sets the local time zone. /// /// The local time zone. - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public void SetLocalTimeZone(TimeZoneInfo localTimeZone) => _localTimeZone = localTimeZone; /// diff --git a/src/ToBeMoved/Hosting.StartupInitialization/Hosting.StartupInitialization.csproj b/src/ToBeMoved/Hosting.StartupInitialization/Hosting.StartupInitialization.csproj index 58974307386..6efbe56cc68 100644 --- a/src/ToBeMoved/Hosting.StartupInitialization/Hosting.StartupInitialization.csproj +++ b/src/ToBeMoved/Hosting.StartupInitialization/Hosting.StartupInitialization.csproj @@ -6,7 +6,6 @@ Provides infrastructure to execute asynchronous functions on server startups Fundamentals Application Bootstrap - true true true true @@ -28,7 +27,6 @@ - diff --git a/src/ToBeMoved/Hosting.StartupInitialization/Internal/StartupInitializationBuilder.cs b/src/ToBeMoved/Hosting.StartupInitialization/Internal/StartupInitializationBuilder.cs index 6c70493a12c..c82281e9cae 100644 --- a/src/ToBeMoved/Hosting.StartupInitialization/Internal/StartupInitializationBuilder.cs +++ b/src/ToBeMoved/Hosting.StartupInitialization/Internal/StartupInitializationBuilder.cs @@ -6,7 +6,6 @@ using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; -using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options.Validation; using Microsoft.Shared.Diagnostics; diff --git a/src/ToBeMoved/Hosting.StartupInitialization/Internal/StartupInitializationOptionsValidator.cs b/src/ToBeMoved/Hosting.StartupInitialization/Internal/StartupInitializationOptionsValidator.cs index a15058129ea..20b926881e5 100644 --- a/src/ToBeMoved/Hosting.StartupInitialization/Internal/StartupInitializationOptionsValidator.cs +++ b/src/ToBeMoved/Hosting.StartupInitialization/Internal/StartupInitializationOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.Hosting.Testing.Internal; diff --git a/src/ToBeMoved/Hosting.StartupInitialization/StartupInitializationExtensions.cs b/src/ToBeMoved/Hosting.StartupInitialization/StartupInitializationExtensions.cs index 31276de6c92..00371c48685 100644 --- a/src/ToBeMoved/Hosting.StartupInitialization/StartupInitializationExtensions.cs +++ b/src/ToBeMoved/Hosting.StartupInitialization/StartupInitializationExtensions.cs @@ -6,6 +6,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting.Testing.Internal; +using Microsoft.Extensions.Options; using Microsoft.Extensions.Options.Validation; using Microsoft.Shared.Diagnostics; diff --git a/src/ToBeMoved/HttpClient.SocketHandling/HttpClient.SocketHandling.csproj b/src/ToBeMoved/HttpClient.SocketHandling/HttpClient.SocketHandling.csproj index 288becef1e3..03b7a3f67da 100644 --- a/src/ToBeMoved/HttpClient.SocketHandling/HttpClient.SocketHandling.csproj +++ b/src/ToBeMoved/HttpClient.SocketHandling/HttpClient.SocketHandling.csproj @@ -7,7 +7,6 @@ Fundamentals HTTP Processing $(NetCoreTargetFrameworks) - true true @@ -23,7 +22,6 @@ - diff --git a/src/ToBeMoved/HttpClient.SocketHandling/SocketsHttpHandlerOptionsValidator.cs b/src/ToBeMoved/HttpClient.SocketHandling/SocketsHttpHandlerOptionsValidator.cs index c5c343d8ef2..4a05de361d1 100644 --- a/src/ToBeMoved/HttpClient.SocketHandling/SocketsHttpHandlerOptionsValidator.cs +++ b/src/ToBeMoved/HttpClient.SocketHandling/SocketsHttpHandlerOptionsValidator.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; namespace Microsoft.Extensions.HttpClient.SocketHandling; diff --git a/test/Analyzers/Microsoft.Extensions.ExtraAnalyzers/Common/UsingExperimentalApiAnalyzerTest.cs b/test/Analyzers/Microsoft.Extensions.ExtraAnalyzers/Common/UsingExperimentalApiAnalyzerTest.cs index 972b29df052..3e2771f0a7e 100644 --- a/test/Analyzers/Microsoft.Extensions.ExtraAnalyzers/Common/UsingExperimentalApiAnalyzerTest.cs +++ b/test/Analyzers/Microsoft.Extensions.ExtraAnalyzers/Common/UsingExperimentalApiAnalyzerTest.cs @@ -13,19 +13,12 @@ public static class UsingExperimentalApiAnalyzerTest [MemberData(nameof(TestData))] public static async Task Common(string source) { - const string AttributeSource = @" - namespace System.Diagnostics.CodeAnalysis - { - public sealed class ExperimentalAttribute : System.Attribute { } - }"; - var d = await RoslynTestUtils.RunAnalyzer( new UsingExperimentalApiAnalyzer(), null, new[] { source, - AttributeSource, }).ConfigureAwait(false); var expectedCount = source.CountSpans(); @@ -67,7 +60,7 @@ public void Test() } } - [Experimental] + [Experimental(diagnosticId: ""TBD"", UrlFormat = ""TBD"")] public class ExpClass { } @@ -81,7 +74,7 @@ public class ExpClass using System.Diagnostics.CodeAnalysis; #pragma warning disable R9A029 - [assembly: Experimental] + [assembly: Experimental(diagnosticId: ""TBD"", UrlFormat = ""TBD"")] #pragma warning restore R9A029 public class TestClass : /*0+*/ExpClass/*-0*/ diff --git a/test/Analyzers/Microsoft.Extensions.LocalAnalyzers/ApiLifecycle/ApiLifecycleAnalyzerTest.cs b/test/Analyzers/Microsoft.Extensions.LocalAnalyzers/ApiLifecycle/ApiLifecycleAnalyzerTest.cs index 4f81b21e6fd..379a0fe65df 100644 --- a/test/Analyzers/Microsoft.Extensions.LocalAnalyzers/ApiLifecycle/ApiLifecycleAnalyzerTest.cs +++ b/test/Analyzers/Microsoft.Extensions.LocalAnalyzers/ApiLifecycle/ApiLifecycleAnalyzerTest.cs @@ -228,7 +228,7 @@ namespace Microsoft.Extensions.Security.Identity; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public class AdditionalContext2 { protected IReadOnlyDictionary Features { get; } = new Dictionary(); @@ -347,7 +347,7 @@ public sealed class BufferWriter2 : IBufferWriter private T[] _buffer = Array.Empty(); - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public BufferWriter2() { } public ReadOnlyMemory WrittenMemory => _buffer.AsMemory(0, WrittenCount); @@ -474,7 +474,7 @@ public interface IClassifiedData public DataClass DataClass { get; } } - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public enum DataClass { @@ -562,10 +562,10 @@ namespace SomePackage; using System.Diagnostics.CodeAnalysis; - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static class Test { - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public static void Load() { // Intentionally left empty. @@ -707,7 +707,7 @@ namespace Microsoft.Extensions.Diagnostics; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public class WindowsCountersOptions2 { [Required] @@ -728,7 +728,7 @@ namespace Test; using System.Diagnostics.CodeAnalysis; - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public sealed class BufferWriter { internal const int MaxArrayLength = 0X7FEF_FFFF; // Copy of the internal Array.MaxArrayLength const @@ -751,7 +751,7 @@ namespace Inheritance; using System.Diagnostics.CodeAnalysis; - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public class BaseType { public virtual int P => 1; @@ -774,7 +774,7 @@ namespace Nested; using System.Diagnostics.CodeAnalysis; - [Experimental] + [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")] public class OuterType { public int ReadValue(string s) => new InnerType().P; diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/CustomAttrTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/CustomAttrTests.cs deleted file mode 100644 index 9770924b5b1..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/CustomAttrTests.cs +++ /dev/null @@ -1,39 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using CustomAttr; -using Microsoft.Extensions.Options; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public class CustomAttrTests -{ - [Fact] - public void Invalid() - { - var firstModel = new FirstModel - { - P1 = 'a', - P2 = 'x', - }; - - var validator = new FirstValidator(); - var vr = validator.Validate("CustomAttr", firstModel); - - Utils.VerifyValidateOptionsResult(vr, 2, "P1", "P2"); - } - - [Fact] - public void Valid() - { - var firstModel = new FirstModel - { - P1 = 'A', - P2 = 'A', - }; - - var validator = new FirstValidator(); - Assert.Equal(ValidateOptionsResult.Success, validator.Validate("CustomAttr", firstModel)); - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/EnumerationTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/EnumerationTests.cs deleted file mode 100644 index d2f9bddca28..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/EnumerationTests.cs +++ /dev/null @@ -1,93 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Enumeration; -using Microsoft.Extensions.Options; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public class EnumerationTests -{ - [Fact] - public void Invalid() - { - var secondModelC = new SecondModel - { - P6 = "1234", - }; - - var secondModelB = new SecondModel - { - P6 = "12345", - }; - - var secondModel = new SecondModel - { - P6 = "1234", - }; - - ThirdModel? thirdModel = new ThirdModel - { - Value = 11 - }; - - var firstModel = new FirstModel - { - P1 = new[] { secondModel }, - P2 = new[] { secondModel, secondModelB, secondModelC }, - P51 = new[] { thirdModel } - }; - - var validator = default(FirstValidator); - var vr = validator.Validate("Enumeration", firstModel); - - Utils.VerifyValidateOptionsResult(vr, 4, "P1[0].P6", "P2[0].P6", "P2[2].P6", "P51[0].Value"); - } - - [Fact] - public void NullElement() - { - var firstModel = new FirstModel - { - P1 = new[] { (SecondModel)null! }, - }; - - var validator = default(FirstValidator); - var vr = validator.Validate("Enumeration", firstModel); - - Utils.VerifyValidateOptionsResult(vr, 1, "P1[0]"); - } - - [Fact] - public void Valid() - { - var secondModel = new SecondModel - { - P6 = "12345", - }; - - var thirdModelA = new ThirdModel - { - Value = 2 - }; - - var thirdModelB = new ThirdModel - { - Value = 9 - }; - - var firstModel = new FirstModel - { - P1 = new[] { secondModel }, - P2 = new[] { secondModel }, - P3 = new[] { (SecondModel?)null }, - P4 = new[] { thirdModelA, thirdModelB }, - P5 = new ThirdModel?[] { thirdModelA, default }, - P51 = new ThirdModel?[] { thirdModelB, default } - }; - - var validator = default(FirstValidator); - Assert.Equal(ValidateOptionsResult.Success, validator.Validate("Enumeration", firstModel)); - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/FieldTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/FieldTests.cs deleted file mode 100644 index 3656d4f359e..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/FieldTests.cs +++ /dev/null @@ -1,62 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Fields; -using Microsoft.Extensions.Options; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public class FieldTests -{ - [Fact] - public void Invalid() - { - var thirdModel = new ThirdModel - { - P5 = "1234", - }; - - var secondModel = new SecondModel - { - P4 = "1234", - }; - - var firstModel = new FirstModel - { - P1 = "1234", - P2 = secondModel, - P3 = thirdModel, - }; - - var validator = default(FirstValidator); - var vr = validator.Validate("Fields", firstModel); - - Utils.VerifyValidateOptionsResult(vr, 3, "P1", "P2.P4", "P3.P5"); - } - - [Fact] - public void Valid() - { - var thirdModel = new ThirdModel - { - P5 = "12345", - P6 = 1 - }; - - var secondModel = new SecondModel - { - P4 = "12345", - }; - - var firstModel = new FirstModel - { - P1 = "12345", - P2 = secondModel, - P3 = thirdModel, - }; - - var validator = default(FirstValidator); - Assert.Equal(ValidateOptionsResult.Success, validator.Validate("Fields", firstModel)); - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/FunnyStringsTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/FunnyStringsTests.cs deleted file mode 100644 index 29b62a5c4b4..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/FunnyStringsTests.cs +++ /dev/null @@ -1,37 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using FunnyStrings; -using Microsoft.Extensions.Options; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public class FunnyStringsTests -{ - [Fact] - public void Invalid() - { - var firstModel = new FirstModel - { - P1 = "XXX", - }; - - var validator = default(FirstValidator); - var vr = validator.Validate("FunnyStrings", firstModel); - - Utils.VerifyValidateOptionsResult(vr, 1, "P1"); - } - - [Fact] - public void Valid() - { - var firstModel = new FirstModel - { - P1 = "\"\r\n\\", - }; - - var validator = default(FirstValidator); - Assert.Equal(ValidateOptionsResult.Success, validator.Validate("FunnyStrings", firstModel)); - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/GenericsTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/GenericsTests.cs deleted file mode 100644 index 838fe529689..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/GenericsTests.cs +++ /dev/null @@ -1,49 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Generics; -using Microsoft.Extensions.Options; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public class GenericsTests -{ - [Fact] - public void Invalid() - { - var secondModel = new SecondModel - { - P4 = "1234", - }; - - var firstModel = new FirstModel - { - P1 = "1234", - P3 = secondModel, - }; - - var validator = new FirstValidator(); - var vr = validator.Validate("Generics", firstModel); - - Utils.VerifyValidateOptionsResult(vr, 2, "P1", "P3.P4"); - } - - [Fact] - public void Valid() - { - var secondModel = new SecondModel - { - P4 = "12345", - }; - - var firstModel = new FirstModel - { - P1 = "12345", - P3 = secondModel, - }; - - var validator = new FirstValidator(); - Assert.Equal(ValidateOptionsResult.Success, validator.Validate("Generics", firstModel)); - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/MultiModelValidatorTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/MultiModelValidatorTests.cs deleted file mode 100644 index fff83ced918..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/MultiModelValidatorTests.cs +++ /dev/null @@ -1,49 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Microsoft.Extensions.Options; -using MultiModelValidator; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public class MultiModelValidatorTests -{ - [Fact] - public void Invalid() - { - var secondModel = new SecondModel - { - P3 = "1234", - }; - - var firstModel = new FirstModel - { - P1 = "1234", - P2 = secondModel, - }; - - var validator = default(MultiValidator); - var vr = validator.Validate("MultiModelValidator", firstModel); - - Utils.VerifyValidateOptionsResult(vr, 2, "P1", "P2.P3"); - } - - [Fact] - public void Valid() - { - var secondModel = new SecondModel - { - P3 = "12345", - }; - - var firstModel = new FirstModel - { - P1 = "12345", - P2 = secondModel, - }; - - var validator = default(MultiValidator); - Assert.Equal(ValidateOptionsResult.Success, validator.Validate("MultiModelValidator", firstModel)); - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/NestedTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/NestedTests.cs deleted file mode 100644 index 8a4b04361a3..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/NestedTests.cs +++ /dev/null @@ -1,67 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -#if ROSLYN_4_0_OR_GREATER - -using Microsoft.Extensions.Options; -using Nested; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public class NestedTests -{ - [Fact] - public void Invalid() - { - var thirdModel = new Container1.ThirdModel - { - P6 = "1234", - }; - - var secondModel = new Container1.SecondModel - { - P5 = "1234", - }; - - var firstModel = new Container1.FirstModel - { - P1 = "1234", - P2 = secondModel, - P3 = thirdModel, - P4 = secondModel, - }; - - var validator = default(Container2.Container3.FirstValidator); - var vr = validator.Validate("Nested", firstModel); - - Utils.VerifyValidateOptionsResult(vr, 4, "P1", "P2.P5", "P3.P6", "P4.P5"); - } - - [Fact] - public void Valid() - { - var thirdModel = new Container1.ThirdModel - { - P6 = "12345", - }; - - var secondModel = new Container1.SecondModel - { - P5 = "12345", - }; - - var firstModel = new Container1.FirstModel - { - P1 = "12345", - P2 = secondModel, - P3 = thirdModel, - P4 = secondModel, - }; - - var validator = default(Container2.Container3.FirstValidator); - Assert.Equal(ValidateOptionsResult.Success, validator.Validate("Nested", firstModel)); - } -} - -#endif diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/NoNamespaceTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/NoNamespaceTests.cs deleted file mode 100644 index 5530b639531..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/NoNamespaceTests.cs +++ /dev/null @@ -1,60 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Microsoft.Extensions.Options; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public class NoNamespaceTests -{ - [Fact] - public void Invalid() - { - var thirdModel = new ThirdModelNoNamespace - { - P5 = "1234", - }; - - var secondModel = new SecondModelNoNamespace - { - P4 = "1234", - }; - - var firstModel = new FirstModelNoNamespace - { - P1 = "1234", - P2 = secondModel, - P3 = thirdModel, - }; - - var validator = new FirstValidatorNoNamespace(); - var vr = validator.Validate("NoNamespace", firstModel); - - Utils.VerifyValidateOptionsResult(vr, 3, "P1", "P2.P4", "P3.P5"); - } - - [Fact] - public void Valid() - { - var thirdModel = new ThirdModelNoNamespace - { - P5 = "12345", - }; - - var secondModel = new SecondModelNoNamespace - { - P4 = "12345", - }; - - var firstModel = new FirstModelNoNamespace - { - P1 = "12345", - P2 = secondModel, - P3 = thirdModel, - }; - - var validator = new FirstValidatorNoNamespace(); - Assert.Equal(ValidateOptionsResult.Success, validator.Validate("NoNamespace", firstModel)); - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/OptionsValidationTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/OptionsValidationTests.cs deleted file mode 100644 index 49941010f1a..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/OptionsValidationTests.cs +++ /dev/null @@ -1,442 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.ComponentModel.DataAnnotations; -using System.Globalization; -using Microsoft.Extensions.Options; -using TestClasses.OptionsValidation; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public class OptionsValidationTests -{ - [Fact] - public void RequiredAttributeValid() - { - var validModel = new RequiredAttributeModel - { - Val = "val" - }; - - var modelValidator = new RequiredAttributeModelValidator(); - var result = modelValidator.Validate(nameof(validModel), validModel); - - Assert.Equal(ValidateOptionsResult.Success, result); - } - - [Fact] - public void RequiredAttributeInvalid() - { - var validModel = new RequiredAttributeModel - { - Val = null - }; - - var modelValidator = new RequiredAttributeModelValidator(); - Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1); - } - - [Fact] - public void RegularExpressionAttributeValid() - { - var validModel = new RegularExpressionAttributeModel - { - Val = " " - }; - - var modelValidator = new RegularExpressionAttributeModelValidator(); - var result = modelValidator.Validate(nameof(validModel), validModel); - - Assert.Equal(ValidateOptionsResult.Success, result); - } - - [Fact] - public void RegularExpressionAttributeInvalid() - { - var validModel = new RegularExpressionAttributeModel - { - Val = "Not Space" - }; - - var modelValidator = new RegularExpressionAttributeModelValidator(); - Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1); - } - - [Fact] - public void EmailAttributeValid() - { - var validModel = new EmailAttributeModel - { - Val = "abc@xyz.com" - }; - - var modelValidator = new EmailAttributeModelValidator(); - var result = modelValidator.Validate(nameof(validModel), validModel); - - Assert.Equal(ValidateOptionsResult.Success, result); - } - - [Fact] - public void EmailAttributeInvalid() - { - var validModel = new EmailAttributeModel - { - Val = "Not Email Address" - }; - - var modelValidator = new EmailAttributeModelValidator(); - Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1); - } - - [Fact] - public void CustomValidationAttributeValid() - { - var validModel = new CustomValidationAttributeModel - { - Val = "Pass" - }; - - var modelValidator = new CustomValidationAttributeModelValidator(); - var result = modelValidator.Validate(nameof(validModel), validModel); - - Assert.Equal(ValidateOptionsResult.Success, result); - } - - [Fact] - public void CustomValidationAttributeInvalid() - { - var validModel = new CustomValidationAttributeModel - { - Val = "NOT PASS" - }; - - var modelValidator = new CustomValidationAttributeModelValidator(); - Assert.Throws(() => modelValidator.Validate(nameof(validModel), validModel)); - } - - [Fact] - public void DataTypeAttributeValid() - { - var validModel = new DataTypeAttributeModel - { - Val = "ABC" - }; - - var modelValidator = new DataTypeAttributeModelValidator(); - var result = modelValidator.Validate(nameof(validModel), validModel); - - Assert.Equal(ValidateOptionsResult.Success, result); - } - - [Fact] - public void RangeAttributeModelIntValid() - { - var validModel = new RangeAttributeModelInt - { - Val = 1 - }; - - var modelValidator = new RangeAttributeModelIntValidator(); - var result = modelValidator.Validate(nameof(validModel), validModel); - - Assert.Equal(ValidateOptionsResult.Success, result); - } - - [Fact] - public void RangeAttributeModelIntInvalid() - { - var validModel = new RangeAttributeModelInt - { - Val = 0 - }; - - var modelValidator = new RangeAttributeModelIntValidator(); - Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1); - } - - [Fact] - public void RangeAttributeModelDoubleValid() - { - var validModel = new RangeAttributeModelDouble - { - Val = 0.6 - }; - - var modelValidator = new RangeAttributeModelDoubleValidator(); - var result = modelValidator.Validate(nameof(validModel), validModel); - - Assert.Equal(ValidateOptionsResult.Success, result); - } - - [Fact] - public void RangeAttributeModelDoubleInvalid() - { - var validModel = new RangeAttributeModelDouble - { - Val = 0.1 - }; - - var modelValidator = new RangeAttributeModelDoubleValidator(); - Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1); - } - - [Fact] - public void RangeAttributeModelDateValid() - { -#if NETCOREAPP3_1_OR_GREATER - // Setting non-invariant culture to check that - // attribute's "ParseLimitsInInvariantCulture" property - // was set up correctly in the validator: - CultureInfo.CurrentCulture = new CultureInfo("cs"); -#else - // Setting invariant culture to avoid DateTime parsing discrepancies: - CultureInfo.CurrentCulture = CultureInfo.InvariantCulture; -#endif - var validModel = new RangeAttributeModelDate - { - Val = new DateTime(day: 3, month: 1, year: 2004) - }; - - var modelValidator = new RangeAttributeModelDateValidator(); - var result = modelValidator.Validate(nameof(validModel), validModel); - - Assert.Equal(ValidateOptionsResult.Success, result); - } - - [Fact] - public void RangeAttributeModelDateInvalid() - { - var validModel = new RangeAttributeModelDate - { - Val = new DateTime(day: 1, month: 1, year: 2004) - }; - - var modelValidator = new RangeAttributeModelDateValidator(); - Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1); - } - - [Fact] - public void MultipleAttributeModelValid() - { - var validModel = new MultipleAttributeModel - { - Val1 = "abc", - Val2 = 2, - Val3 = 4, - Val4 = 6 - }; - - var modelValidator = new MultipleAttributeModelValidator(); - var result = modelValidator.Validate(nameof(validModel), validModel); - - Assert.Equal(ValidateOptionsResult.Success, result); - } - - [Theory] - [InlineData("", 2, 4, 7)] - [InlineData(null, 2, 4, 7)] - [InlineData("abc", 0, 4, 9)] - [InlineData("abc", 2, 8, 8)] - [InlineData("abc", 2, 4, 10)] - public void MultipleAttributeModelInvalid(string val1, int val2, int val3, int val4) - { - var validModel = new MultipleAttributeModel - { - Val1 = val1, - Val2 = val2, - Val3 = val3, - Val4 = val4 - }; - - var modelValidator = new MultipleAttributeModelValidator(); - Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1); - } - - [Fact] - public void CustomTypeCustomValidationAttributeModelValid() - { - var validModel = new CustomTypeCustomValidationAttributeModel - { - Val = new CustomType { Val1 = "Pass", Val2 = "Pass" } - }; - - var modelValidator = new CustomTypeCustomValidationAttributeModelValidator(); - var result = modelValidator.Validate(nameof(validModel), validModel); - - Assert.Equal(ValidateOptionsResult.Success, result); - } - - [Fact] - public void CustomTypeCustomValidationAttributeModelInvalid() - { - var validModel = new CustomTypeCustomValidationAttributeModel - { - Val = new CustomType { Val1 = "Pass", Val2 = "Not Pass" } - }; - - var modelValidator = new CustomTypeCustomValidationAttributeModelValidator(); - Assert.Throws(() => modelValidator.Validate(nameof(validModel), validModel)); - } - - [Fact] - public void DerivedModelIsValid() - { - var validModel = new DerivedModel - { - Val = 1, - DerivedVal = "Valid", - VirtualValWithAttr = 1, - VirtualValWithoutAttr = null - }; - - ((RequiredAttributeModel)validModel).Val = "Valid hidden member from base class"; - - var validator = new DerivedModelValidator(); - var result = validator.Validate(nameof(validModel), validModel); - Assert.Equal(ValidateOptionsResult.Success, result); - } - - [Theory] - [InlineData(0, "", 1, null, "Valid hidden member from base class")] - [InlineData(null, "Valid", 1, null, "Valid hidden member from base class")] - [InlineData(1, "Valid", null, null, "Valid hidden member from base class")] - public void DerivedModelIsInvalid(int? val, string? derivedVal, int? virtValAttr, int? virtVal, string? hiddenValBaseClass) - { - var invalidModel = new DerivedModel - { - Val = val, - DerivedVal = derivedVal, - VirtualValWithAttr = virtValAttr, - VirtualValWithoutAttr = virtVal - }; - - ((RequiredAttributeModel)invalidModel).Val = hiddenValBaseClass; - - var validator = new DerivedModelValidator(); - Utils.VerifyValidateOptionsResult(validator.Validate(nameof(invalidModel), invalidModel), 1); - } - - [Fact] - public void LeafModelIsValid() - { - var validModel = new LeafModel - { - Val = 1, - DerivedVal = "Valid", - VirtualValWithAttr = null, - VirtualValWithoutAttr = 1 - }; - - ((RequiredAttributeModel)validModel).Val = "Valid hidden member from base class"; - - var validator = new LeafModelValidator(); - var result = validator.Validate(nameof(validModel), validModel); - Assert.Equal(ValidateOptionsResult.Success, result); - } - - [Fact] - public void ComplexModelValid() - { - var validModel = new ComplexModel - { - ComplexVal = new RequiredAttributeModel { Val = "Valid" } - }; - - var modelValidator = new ComplexModelValidator(); - var result = modelValidator.Validate(nameof(validModel), validModel); - Assert.Equal(ValidateOptionsResult.Success, result); - - validModel = new ComplexModel - { - ValWithoutOptionsValidator = new TypeWithoutOptionsValidator - { - Val1 = "Valid", - Val2 = new DateTime(day: 3, month: 1, year: 2004) - } - }; - - // Setting invariant culture to avoid DateTime parsing discrepancies: - CultureInfo.CurrentCulture = CultureInfo.InvariantCulture; - result = modelValidator.Validate(nameof(validModel), validModel); - Assert.Equal(ValidateOptionsResult.Success, result); - - validModel = new ComplexModel - { - ValWithoutOptionsValidator = new TypeWithoutOptionsValidator - { - Val1 = "A", - Val2 = new DateTime(day: 2, month: 2, year: 2004), - YetAnotherComplexVal = new RangeAttributeModelDouble { Val = 0.7 } - } - }; - - result = modelValidator.Validate(nameof(validModel), validModel); - Assert.Equal(ValidateOptionsResult.Success, result); - } - - [Fact] - public void ComplexModelInvalid() - { - var invalidModel = new ComplexModel - { - ComplexVal = new RequiredAttributeModel { Val = null } - }; - - var modelValidator = new ComplexModelValidator(); - Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(invalidModel), invalidModel), 1); - - invalidModel = new ComplexModel - { - ValWithoutOptionsValidator = new TypeWithoutOptionsValidator { Val1 = "Valid", Val2 = new DateTime(2003, 3, 3) } - }; - - Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(invalidModel), invalidModel), 1); - - invalidModel = new ComplexModel - { - ValWithoutOptionsValidator = new TypeWithoutOptionsValidator { Val1 = string.Empty, Val2 = new DateTime(2004, 3, 3) } - }; - - Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(invalidModel), invalidModel), 1); - - invalidModel = new ComplexModel - { - ValWithoutOptionsValidator = new TypeWithoutOptionsValidator - { - Val1 = "A", - Val2 = new DateTime(2004, 2, 2), - YetAnotherComplexVal = new RangeAttributeModelDouble { Val = 0.4999 } - } - }; - - Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(invalidModel), invalidModel), 1); - } - - [Fact] - public void AttributePropertyModelTestOnErrorMessage() - { - var validModel = new AttributePropertyModel - { - Val1 = 5, - Val2 = 1 - }; - - var modelValidator = new AttributePropertyModelValidator(); - Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1); - } - - [Fact] - public void AttributePropertyModelTestOnErrorMessageResource() - { - var validModel = new AttributePropertyModel - { - Val1 = 1, - Val2 = 5 - }; - - var modelValidator = new AttributePropertyModelValidator(); - Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1); - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RandomMembersTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RandomMembersTests.cs deleted file mode 100644 index 1c87892b279..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RandomMembersTests.cs +++ /dev/null @@ -1,37 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Microsoft.Extensions.Options; -using RandomMembers; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public class RandomMembersTests -{ - [Fact] - public void Invalid() - { - var firstModel = new FirstModel - { - P1 = "1234", - }; - - var validator = new FirstValidator(); - var vr = validator.Validate("RandomMembers", firstModel); - - Utils.VerifyValidateOptionsResult(vr, 1, "P1"); - } - - [Fact] - public void Valid() - { - var firstModel = new FirstModel - { - P1 = "12345", - }; - - var validator = new FirstValidator(); - Assert.Equal(ValidateOptionsResult.Success, validator.Validate("RandomMembers", firstModel)); - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RecordTypesTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RecordTypesTests.cs deleted file mode 100644 index bd0d872c8b6..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RecordTypesTests.cs +++ /dev/null @@ -1,67 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -#if ROSLYN_4_0_OR_GREATER - -using Microsoft.Extensions.Options; -using RecordTypes; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public class RecordTypesTests -{ - [Fact] - public void Invalid() - { - var thirdModel = new ThirdModel - { - P6 = "1234", - }; - - var secondModel = new SecondModel - { - P5 = "1234", - }; - - var firstModel = new FirstModel - { - P1 = "1234", - P2 = secondModel, - P3 = secondModel, - P4 = thirdModel, - }; - - var validator = default(FirstValidator); - var vr = validator.Validate("RecordTypes", firstModel); - - Utils.VerifyValidateOptionsResult(vr, 4, "P1", "P2.P5", "P3.P5", "P4.P6"); - } - - [Fact] - public void Valid() - { - var thirdModel = new ThirdModel - { - P6 = "12345", - }; - - var secondModel = new SecondModel - { - P5 = "12345", - }; - - var firstModel = new FirstModel - { - P1 = "12345", - P2 = secondModel, - P3 = secondModel, - P4 = thirdModel, - }; - - var validator = default(FirstValidator); - Assert.Equal(ValidateOptionsResult.Success, validator.Validate("RecordTypes", firstModel)); - } -} - -#endif diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RepeatedTypesTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RepeatedTypesTests.cs deleted file mode 100644 index b45fcbf9ced..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RepeatedTypesTests.cs +++ /dev/null @@ -1,61 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Microsoft.Extensions.Options; -using RepeatedTypes; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public class RepeatedTypesTests -{ - [Fact] - public void Invalid() - { - var thirdModel = new ThirdModel - { - P5 = "1234", - }; - - var secondModel = new SecondModel - { - P4 = thirdModel, - }; - - var firstModel = new FirstModel - { - P1 = secondModel, - P2 = secondModel, - P3 = thirdModel, - }; - - var validator = new FirstValidator(); - var vr = validator.Validate("RepeatedTypes", firstModel); - - Utils.VerifyValidateOptionsResult(vr, 3, "P1.P4.P5", "P2.P4.P5", "P3.P5"); - } - - [Fact] - public void Valid() - { - var thirdModel = new ThirdModel - { - P5 = "12345", - }; - - var secondModel = new SecondModel - { - P4 = thirdModel, - }; - - var firstModel = new FirstModel - { - P1 = secondModel, - P2 = secondModel, - P3 = thirdModel, - }; - - var validator = new FirstValidator(); - Assert.Equal(ValidateOptionsResult.Success, validator.Validate("RepeatedTypes", firstModel)); - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/SelfValidationTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/SelfValidationTests.cs deleted file mode 100644 index 0a511333f03..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/SelfValidationTests.cs +++ /dev/null @@ -1,37 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Microsoft.Extensions.Options; -using SelfValidation; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public class SelfValidationTests -{ - [Fact] - public void Invalid() - { - var firstModel = new FirstModel - { - P1 = "1234", - }; - - var validator = default(FirstValidator); - var vr = validator.Validate("SelfValidation", firstModel); - - Utils.VerifyValidateOptionsResult(vr, 1, "P1"); - } - - [Fact] - public void Valid() - { - var firstModel = new FirstModel - { - P1 = "12345", - }; - - var validator = default(FirstValidator); - Assert.Equal(ValidateOptionsResult.Success, validator.Validate("SelfValidation", firstModel)); - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/TestResource.Designer.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/TestResource.Designer.cs deleted file mode 100644 index 4fa3e97cbd2..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/TestResource.Designer.cs +++ /dev/null @@ -1,72 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Microsoft.Gen.OptionsValidation.Test { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class TestResource { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal TestResource() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.Gen.OptionsValidation.Test.TestResource", typeof(TestResource).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized string similar to ErrorMessageResourceName. - /// - internal static string ErrorMessageResourceName { - get { - return ResourceManager.GetString("ErrorMessageResourceName", resourceCulture); - } - } - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/TestResource.resx b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/TestResource.resx deleted file mode 100644 index 70f767945b3..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/TestResource.resx +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ErrorMessageResourceName - - \ No newline at end of file diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/Utils.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/Utils.cs deleted file mode 100644 index 7412374f18a..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/Utils.cs +++ /dev/null @@ -1,31 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -#if NETCOREAPP3_1_OR_GREATER -using System.Linq; -#endif -using Microsoft.Extensions.Options; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -internal static class Utils -{ - public static void VerifyValidateOptionsResult(ValidateOptionsResult vr, int expectedErrorCount, params string[] expectedErrorSubstrings) - { - Assert.NotNull(vr); - -#if NETCOREAPP3_1_OR_GREATER - var failures = vr.Failures!.ToArray(); -#else - var failures = vr.FailureMessage!.Split(';'); -#endif - - Assert.Equal(expectedErrorCount, failures.Length); - - for (int i = 0; i < expectedErrorSubstrings.Length; i++) - { - Assert.Contains(expectedErrorSubstrings[i], failures[i]); - } - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/ValueTypesTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/ValueTypesTests.cs deleted file mode 100644 index 543e8eb882b..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/ValueTypesTests.cs +++ /dev/null @@ -1,53 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Microsoft.Extensions.Options; -using ValueTypes; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public class ValueTypesTests -{ - [Fact] - public void Invalid() - { - var secondModel = new SecondModel - { - P4 = "1234", - }; - - var firstModel = new FirstModel - { - P1 = "1234", - P3 = secondModel, - P2 = secondModel, - P4 = default, - }; - - var validator = default(FirstValidator); - var vr = validator.Validate("ValueTypes", firstModel); - - Utils.VerifyValidateOptionsResult(vr, 3, "P1", "P2.P4", "P3.P4"); - } - - [Fact] - public void Valid() - { - var secondModel = new SecondModel - { - P4 = "12345", - }; - - var firstModel = new FirstModel - { - P1 = "12345", - P3 = secondModel, - P2 = secondModel, - P4 = default, - }; - - var validator = default(FirstValidator); - Assert.Equal(ValidateOptionsResult.Success, validator.Validate("ValueTypes", firstModel)); - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Directory.Build.props b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Directory.Build.props deleted file mode 100644 index ee32cd31896..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Directory.Build.props +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Microsoft.Gen.OptionsValidation.Test - Tests for code generated by Gen.OptionsValidation. - - - - $(TestNetCoreTargetFrameworks) - $(TestNetCoreTargetFrameworks)$(ConditionalNet462) - true - true - true - true - $(NoWarn);CA1824 - - - - - - - - - - - - - - - - - diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.Generated.Tests.csproj b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.Generated.Tests.csproj deleted file mode 100644 index 68a4e354e8c..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.Generated.Tests.csproj +++ /dev/null @@ -1,13 +0,0 @@ - - - 3.8 - - - - - True - True - TestResource.resx - - - diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.Generated.Tests.csproj b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.Generated.Tests.csproj deleted file mode 100644 index 1dbe0b6f25c..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.Generated.Tests.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - 4.0 - $(DefineConstants);ROSLYN_4_0_OR_GREATER - - - - - True - True - TestResource.resx - - - diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/CustomAttr.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/CustomAttr.cs deleted file mode 100644 index 4259af039bc..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/CustomAttr.cs +++ /dev/null @@ -1,69 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.ComponentModel.DataAnnotations; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; - -namespace CustomAttr -{ -#pragma warning disable SA1649 -#pragma warning disable SA1402 -#pragma warning disable CA1019 -#pragma warning disable IDE0052 - - [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)] - public sealed class CustomAttribute : ValidationAttribute - { - private readonly char _ch; - private readonly bool _caseSensitive; - private readonly string? _extra; - - public CustomAttribute(char ch, bool caseSensitive, string? extra) - { - _ch = ch; - _caseSensitive = caseSensitive; - _extra = extra; - } - - protected override ValidationResult IsValid(object? value, ValidationContext? validationContext) - { - if (value == null) - { - return ValidationResult.Success!; - } - - if (_caseSensitive) - { - if ((char)value != _ch) - { - return new ValidationResult($"{validationContext?.MemberName} didn't match"); - } - } - else - { - if (char.ToUpperInvariant((char)value) != char.ToUpperInvariant(_ch)) - { - return new ValidationResult($"{validationContext?.MemberName} didn't match"); - } - } - - return ValidationResult.Success!; - } - } - - public class FirstModel - { - [Custom('A', true, null)] - public char P1 { get; set; } - - [Custom('A', false, "X")] - public char P2 { get; set; } - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Enumeration.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Enumeration.cs deleted file mode 100644 index bf5d1f7c634..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Enumeration.cs +++ /dev/null @@ -1,94 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Diagnostics.CodeAnalysis; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; - -namespace Enumeration -{ -#pragma warning disable SA1649 -#pragma warning disable SA1402 - - public class FirstModel - { - [ValidateEnumeratedItems] - public IList? P1; - - [ValidateEnumeratedItems(typeof(SecondValidator))] - public IList? P2; - - [ValidateEnumeratedItems] - public IList? P3; - - [ValidateEnumeratedItems] - public IList? P4; - - [ValidateEnumeratedItems] - public IList? P5; - - [ValidateEnumeratedItems] - [SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1125:Use shorthand for nullable types", Justification = "Testing System>Nullable")] - public IList>? P51; - - [ValidateEnumeratedItems] - public SynteticEnumerable? P6; - - [ValidateEnumeratedItems] - public SynteticEnumerable P7; - - [ValidateEnumeratedItems] - [SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1125:Use shorthand for nullable types", Justification = "Testing System>Nullable")] - public Nullable P8; - } - - public class SecondModel - { - [Required] - [MinLength(5)] - public string P6 = string.Empty; - } - - public struct ThirdModel - { - [Range(0, 10)] - public int Value; - } - - public struct SynteticEnumerable : IEnumerable - { - IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); - - public IEnumerator GetEnumerator() => new InternalEnumerator(); - - private class InternalEnumerator : IEnumerator - { - public SecondModel Current => throw new NotSupportedException(); - - object IEnumerator.Current => Current; - - public void Dispose() - { - // Nothing to dispose... - } - - public bool MoveNext() => false; - - public void Reset() => throw new NotSupportedException(); - } - } - - [OptionsValidator] - public partial struct FirstValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial struct SecondValidator : IValidateOptions - { - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Fields.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Fields.cs deleted file mode 100644 index ddf54f49f4e..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Fields.cs +++ /dev/null @@ -1,72 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.ComponentModel.DataAnnotations; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; - -namespace Fields -{ -#pragma warning disable SA1649 -#pragma warning disable SA1402 -#pragma warning disable S1186 -#pragma warning disable CA1822 - - public class FirstModel - { - [Required] - [MinLength(5)] - public string P1 = string.Empty; - - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers(typeof(SecondValidator))] - public SecondModel? P2; - - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers] - public ThirdModel P3; - } - - public class SecondModel - { - [Required] - [MinLength(5)] - public string P4 = string.Empty; - } - - public struct ThirdModel - { - [Required] - [MinLength(5)] - public string P5 = string.Empty; - - public int P6 = default; - - public ThirdModel(object _) - { - } - } - - [OptionsValidator] - public partial struct FirstValidator : IValidateOptions - { - public void Validate() - { - } - - public void Validate(int _) - { - } - - public void Validate(string? _) - { - } - - public void Validate(string? _0, object _1) - { - } - } - - [OptionsValidator] - public partial struct SecondValidator : IValidateOptions - { - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/FileScopedNamespace.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/FileScopedNamespace.cs deleted file mode 100644 index 1341181d24d..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/FileScopedNamespace.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.ComponentModel.DataAnnotations; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; - -namespace FileScopedNamespace; - -#pragma warning disable SA1649 // File name should match first type name - -public class FirstModel -{ - [Required] - [MinLength(5)] - public string P1 = string.Empty; -} - -[OptionsValidator] -public partial struct FirstValidator : IValidateOptions -{ -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/FunnyStrings.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/FunnyStrings.cs deleted file mode 100644 index 401109dd621..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/FunnyStrings.cs +++ /dev/null @@ -1,23 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.ComponentModel.DataAnnotations; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; - -namespace FunnyStrings -{ -#pragma warning disable SA1649 -#pragma warning disable SA1402 - - public class FirstModel - { - [RegularExpression("\"\r\n\\\\")] - public string P1 { get; set; } = string.Empty; - } - - [OptionsValidator] - public partial struct FirstValidator : IValidateOptions - { - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Generics.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Generics.cs deleted file mode 100644 index bde80402a18..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Generics.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.ComponentModel.DataAnnotations; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; - -namespace Generics -{ -#pragma warning disable SA1649 -#pragma warning disable SA1402 - - public class FirstModel - { - [Required] - [MinLength(5)] - public string P1 { get; set; } = string.Empty; - - public T? P2 { get; set; } - - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers] - public SecondModel? P3 { get; set; } - } - - public class SecondModel - { - [Required] - [MinLength(5)] - public string P4 { get; set; } = string.Empty; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions> - { - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Models.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Models.cs deleted file mode 100644 index 2234bd650da..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Models.cs +++ /dev/null @@ -1,252 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.ComponentModel.DataAnnotations; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; -using Microsoft.Gen.OptionsValidation.Test; - -#pragma warning disable SA1649 -#pragma warning disable SA1402 - -namespace TestClasses.OptionsValidation -{ - // ValidationAttribute without parameter - public class RequiredAttributeModel - { - [Required] - public string? Val { get; set; } - } - - // ValidationAttribute with string parameter - public class RegularExpressionAttributeModel - { - [RegularExpression("\\s")] - public string Val { get; set; } = string.Empty; - } - - // DataTypeAttribute - public class EmailAttributeModel - { - [EmailAddress] - public string Val { get; set; } = string.Empty; - } - - // ValidationAttribute with System.Type parameter - public class CustomValidationAttributeModel - { - [CustomValidation(typeof(CustomValidationTest), "TestMethod")] - public string Val { get; set; } = string.Empty; - } - -#pragma warning disable SA1204 // Static elements should appear before instance elements - public static class CustomValidationTest -#pragma warning restore SA1204 // Static elements should appear before instance elements - { - public static ValidationResult? TestMethod(string val, ValidationContext _) - { - if (val.Equals("Pass", StringComparison.Ordinal)) - { - return ValidationResult.Success; - } - - throw new ValidationException(); - } - } - - // ValidationAttribute with DataType parameter - public class DataTypeAttributeModel - { - [DataType(DataType.Text)] - public string Val { get; set; } = string.Empty; - } - - // ValidationAttribute with type, double, int parameters - public class RangeAttributeModelInt - { - [Range(1, 3)] - public int Val { get; set; } - } - - public class RangeAttributeModelDouble - { - [Range(0.5, 0.9)] - public double Val { get; set; } - } - - public class RangeAttributeModelDate - { -#if NETCOREAPP3_1_OR_GREATER - [Range(typeof(DateTime), "1/2/2004", "3/4/2004", ParseLimitsInInvariantCulture = true)] -#else - [Range(typeof(DateTime), "1/2/2004", "3/4/2004")] -#endif - public DateTime Val { get; set; } - } - - public class MultipleAttributeModel - { - [Required] - [DataType(DataType.Password)] - public string Val1 { get; set; } = string.Empty; - - [Range(1, 3)] - public int Val2 { get; set; } - - [Range(3, 5)] - public int Val3 { get; set; } - - [Range(5, 9)] - public int Val4 { get; set; } - } - - public class CustomTypeCustomValidationAttributeModel - { - [CustomValidation(typeof(CustomTypeCustomValidationTest), "TestMethod")] - public CustomType? Val { get; set; } - } - - public class CustomType - { - public string Val1 { get; set; } = string.Empty; - public string Val2 { get; set; } = string.Empty; - } - -#pragma warning disable SA1204 // Static elements should appear before instance elements - public static class CustomTypeCustomValidationTest -#pragma warning restore SA1204 // Static elements should appear before instance elements - { - public static ValidationResult? TestMethod(CustomType val, ValidationContext _) - { - if (val.Val1.Equals("Pass", StringComparison.Ordinal) && val.Val2.Equals("Pass", StringComparison.Ordinal)) - { - return ValidationResult.Success; - } - - throw new ValidationException(); - } - } - - public class AttributePropertyModel - { - [Range(1, 3, ErrorMessage = "ErrorMessage")] - public int Val1 { get; set; } - - [Range(1, 3, ErrorMessageResourceType = typeof(TestResource), ErrorMessageResourceName = "ErrorMessageResourceName")] - public int Val2 { get; set; } - } - - public class TypeWithoutOptionsValidator - { - [Required] - public string? Val1 { get; set; } - - [Range(typeof(DateTime), "1/2/2004", "3/4/2004")] - public DateTime Val2 { get; set; } - - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers] - public RangeAttributeModelDouble? YetAnotherComplexVal { get; set; } - } - - public class DerivedModel : RequiredAttributeModel - { - [Required] - public string? DerivedVal { get; set; } - - [Required] - internal virtual int? VirtualValWithAttr { get; set; } - - public virtual int? VirtualValWithoutAttr { get; set; } - - [Required] - public new int? Val { get; set; } - } - - public class LeafModel : DerivedModel - { - internal override int? VirtualValWithAttr { get; set; } - - [Required] - public override int? VirtualValWithoutAttr { get; set; } - } - - public class ComplexModel - { - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers] - public RequiredAttributeModel? ComplexVal { get; set; } - - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers] - public TypeWithoutOptionsValidator? ValWithoutOptionsValidator { get; set; } - } - - [OptionsValidator] - public partial class RequiredAttributeModelValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class RegularExpressionAttributeModelValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class EmailAttributeModelValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class CustomValidationAttributeModelValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class DataTypeAttributeModelValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class RangeAttributeModelIntValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class RangeAttributeModelDoubleValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class RangeAttributeModelDateValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class MultipleAttributeModelValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class CustomTypeCustomValidationAttributeModelValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class AttributePropertyModelValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class DerivedModelValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class LeafModelValidator : IValidateOptions - { - } - - [OptionsValidator] - internal sealed partial class ComplexModelValidator : IValidateOptions - { - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/MultiModelValidator.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/MultiModelValidator.cs deleted file mode 100644 index fd725d8403c..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/MultiModelValidator.cs +++ /dev/null @@ -1,34 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.ComponentModel.DataAnnotations; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; - -namespace MultiModelValidator -{ -#pragma warning disable SA1649 -#pragma warning disable SA1402 - - public class FirstModel - { - [Required] - [MinLength(5)] - public string P1 = string.Empty; - - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers(typeof(MultiValidator))] - public SecondModel? P2; - } - - public class SecondModel - { - [Required] - [MinLength(5)] - public string P3 = string.Empty; - } - - [OptionsValidator] - public partial struct MultiValidator : IValidateOptions, IValidateOptions - { - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Nested.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Nested.cs deleted file mode 100644 index 531e0eed0d1..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Nested.cs +++ /dev/null @@ -1,106 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -#if ROSLYN_4_0_OR_GREATER - -using System.ComponentModel.DataAnnotations; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; - -namespace Nested -{ -#pragma warning disable SA1649 -#pragma warning disable SA1402 - - public static class Container1 - { - public class FirstModel - { - [Required] - [MinLength(5)] - public string P1 { get; set; } = string.Empty; - - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers(typeof(Container2.Container3.SecondValidator))] - public SecondModel? P2 { get; set; } - - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers] - public ThirdModel P3 { get; set; } - - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers(typeof(Container4.Container5.ThirdValidator))] - public SecondModel? P4 { get; set; } - } - - public class SecondModel - { - [Required] - [MinLength(5)] - public string P5 { get; set; } = string.Empty; - } - - public struct ThirdModel - { - public ThirdModel(int _) - { - } - - [Required] - [MinLength(5)] - public string P6 { get; set; } = string.Empty; - } - } - - public static partial class Container2 - { - public partial class Container3 - { - public Container3(int _) - { - // nothing to do - } - - [OptionsValidator] - public partial struct FirstValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial struct SecondValidator : IValidateOptions - { - } - } - } - - public partial record class Container4 - { - public partial record class Container5 - { - public Container5(int _) - { - // nothing to do - } - - [OptionsValidator] - public partial struct ThirdValidator : IValidateOptions - { - } - } - } - - public partial struct Container6 - { - [OptionsValidator] - public partial struct FourthValidator : IValidateOptions - { - } - } - - public partial record struct Container7 - { - [OptionsValidator] - public partial record struct FifthValidator : IValidateOptions - { - } - } -} - -#endif diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/NoNamespace.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/NoNamespace.cs deleted file mode 100644 index db6461ddf18..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/NoNamespace.cs +++ /dev/null @@ -1,46 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.ComponentModel.DataAnnotations; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; - -#pragma warning disable SA1649 -#pragma warning disable SA1402 - -public class FirstModelNoNamespace -{ - [Required] - [MinLength(5)] - public string P1 { get; set; } = string.Empty; - - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers(typeof(SecondValidatorNoNamespace))] - public SecondModelNoNamespace? P2 { get; set; } - - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers] - public ThirdModelNoNamespace? P3 { get; set; } -} - -public class SecondModelNoNamespace -{ - [Required] - [MinLength(5)] - public string P4 { get; set; } = string.Empty; -} - -public class ThirdModelNoNamespace -{ - [Required] - [MinLength(5)] - public string P5 { get; set; } = string.Empty; -} - -[OptionsValidator] -public partial class FirstValidatorNoNamespace : IValidateOptions -{ -} - -[OptionsValidator] -public partial class SecondValidatorNoNamespace : IValidateOptions -{ -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RandomMembers.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RandomMembers.cs deleted file mode 100644 index 08a3327a874..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RandomMembers.cs +++ /dev/null @@ -1,35 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.ComponentModel.DataAnnotations; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; - -namespace RandomMembers -{ -#pragma warning disable SA1649 -#pragma warning disable SA1402 -#pragma warning disable CA1822 - - public class FirstModel - { - [Required] - [MinLength(5)] - public string? P1 { get; set; } - - public void Foo() - { - throw new NotSupportedException(); - } - - public class Nested - { - } - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RecordTypes.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RecordTypes.cs deleted file mode 100644 index b0b393f737d..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RecordTypes.cs +++ /dev/null @@ -1,68 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -#if ROSLYN_4_0_OR_GREATER - -using System.ComponentModel.DataAnnotations; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; - -namespace RecordTypes -{ -#pragma warning disable SA1649 - - public record class FirstModel - { - [Required] - [MinLength(5)] - public string P1 { get; set; } = string.Empty; - - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers(typeof(SecondValidator))] - public SecondModel? P2 { get; set; } - - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers(typeof(ThirdValidator))] - public SecondModel P3 { get; set; } = new SecondModel(); - - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers] - public ThirdModel P4 { get; set; } - } - - public record class SecondModel - { - [Required] - [MinLength(5)] - public string P5 { get; set; } = string.Empty; - } - - public record struct ThirdModel - { - [Required] - [MinLength(5)] - public string P6 { get; set; } = string.Empty; - - public ThirdModel(int _) - { - } - - public ThirdModel(object _) - { - } - } - - [OptionsValidator] - public partial record struct FirstValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial record struct SecondValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial record class ThirdValidator : IValidateOptions - { - } -} - -#endif diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RepeatedTypes.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RepeatedTypes.cs deleted file mode 100644 index f5fa327bae5..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RepeatedTypes.cs +++ /dev/null @@ -1,47 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.ComponentModel.DataAnnotations; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; - -namespace RepeatedTypes -{ -#pragma warning disable SA1649 -#pragma warning disable SA1402 -#pragma warning disable CA1019 - - public class FirstModel - { - [Required] - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers] - public SecondModel? P1 { get; set; } - - [Required] - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers] - public SecondModel? P2 { get; set; } - - [Required] - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers] - public ThirdModel? P3 { get; set; } - } - - public class SecondModel - { - [Required] - [Microsoft.Extensions.Options.Validation.ValidateObjectMembers] - public ThirdModel? P4 { get; set; } - } - - public class ThirdModel - { - [Required] - [MinLength(5)] - public string? P5; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/SelfValidation.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/SelfValidation.cs deleted file mode 100644 index 673af4a0896..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/SelfValidation.cs +++ /dev/null @@ -1,34 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; - -namespace SelfValidation -{ -#pragma warning disable SA1649 - - public class FirstModel : IValidatableObject - { - [Required] - public string P1 = string.Empty; - - public IEnumerable Validate(ValidationContext validationContext) - { - if (P1.Length < 5) - { - return new[] { new ValidationResult("P1 is not long enough") }; - } - - return Array.Empty(); - } - } - - [OptionsValidator] - public partial struct FirstValidator : IValidateOptions - { - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/ValueTypes.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/ValueTypes.cs deleted file mode 100644 index aa6a8c3f972..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/ValueTypes.cs +++ /dev/null @@ -1,46 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.ComponentModel.DataAnnotations; -using System.Diagnostics.CodeAnalysis; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; - -namespace ValueTypes -{ -#pragma warning disable SA1649 - - public class FirstModel - { - [Required] - [MinLength(5)] - public string P1 { get; set; } = string.Empty; - - [ValidateObjectMembers] - public SecondModel? P2 { get; set; } - - [ValidateObjectMembers] - public SecondModel P3 { get; set; } - - [ValidateObjectMembers] - [SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1125:Use shorthand for nullable types", Justification = "Testing System>Nullable")] - public Nullable P4 { get; set; } - } - - public struct SecondModel - { - [Required] - [MinLength(5)] - public string P4 { get; set; } = string.Empty; - - public SecondModel(object _) - { - } - } - - [OptionsValidator] - public partial struct FirstValidator : IValidateOptions - { - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/EmitterTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/EmitterTests.cs deleted file mode 100644 index 56c0abdbfcb..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/EmitterTests.cs +++ /dev/null @@ -1,58 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.IO; -using System.Reflection; -using System.Threading.Tasks; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; -using Microsoft.Gen.Shared; -using Microsoft.Shared.Data.Validation; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public class EmitterTests -{ - [Fact] - public async Task TestEmitter() - { - var sources = new List(); - foreach (var file in Directory.GetFiles("TestClasses")) - { -#if !ROSLYN_4_0_OR_GREATER - if (file.EndsWith("Nested.cs") || file.EndsWith("RecordTypes.cs")) - { - continue; - } -#endif - -#if NETCOREAPP3_1_OR_GREATER - sources.Add("#define NETCOREAPP3_1_OR_GREATER\n" + File.ReadAllText(file)); -#else - sources.Add(File.ReadAllText(file)); -#endif - } - - var (d, r) = await RoslynTestUtils.RunGenerator( - new Generator(), - new[] - { - Assembly.GetAssembly(typeof(RequiredAttribute))!, - Assembly.GetAssembly(typeof(TimeSpanAttribute))!, - Assembly.GetAssembly(typeof(OptionsValidatorAttribute))!, - Assembly.GetAssembly(typeof(IValidateOptions))!, - }, - sources) - .ConfigureAwait(false); - - Assert.Empty(d); - _ = Assert.Single(r); - - var golden = File.ReadAllText($"GoldenFiles/Microsoft.Gen.OptionsValidation/Microsoft.Gen.OptionsValidation.Generator/Validators.g.cs"); - var result = r[0].SourceText.ToString(); - Assert.Equal(golden, result); - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/ParserTests.Enumeration.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/ParserTests.Enumeration.cs deleted file mode 100644 index 4e99becec9a..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/ParserTests.Enumeration.cs +++ /dev/null @@ -1,212 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Threading.Tasks; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public partial class ParserTests -{ - [Fact] - public async Task CircularTypeReferencesInEnumeration() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [Required] - [ValidateEnumeratedItems] - public FirstModel[]? P1 { get; set; } - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - } - "); - - _ = Assert.Single(d); - Assert.Equal(DiagDescriptors.CircularTypeReferences.Id, d[0].Id); - } - - [Fact] - public async Task NotValidatorInEnumeration() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [ValidateEnumeratedItems(typeof(SecondValidator)] - public SecondModel[]? P1; - } - - public class SecondModel - { - [Required] - public string? P2; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - } - - public partial class SecondValidator - { - } - "); - - _ = Assert.Single(d); - Assert.Equal(DiagDescriptors.DoesntImplementIValidateOptions.Id, d[0].Id); - } - - [Fact] - public async Task NullValidatorInEnumeration() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [ValidateEnumeratedItems(null!)] - public SecondModel[]? P1; - } - - public class SecondModel - { - [Required] - public string? P2; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class SecondValidator : IValidateOptions - { - } - "); - - _ = Assert.Single(d); - Assert.Equal(DiagDescriptors.NullValidatorType.Id, d[0].Id); - } - - [Fact] - public async Task NoSimpleValidatorConstructorInEnumeration() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [Required] - public string? P1; - - [ValidateEnumeratedItems(typeof(SecondValidator)] - public SecondModel[]? P2; - } - - public class SecondModel - { - [Required] - public string? P3; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class SecondValidator : IValidateOptions - { - public SecondValidator(int _) - { - } - } - "); - - _ = Assert.Single(d); - Assert.Equal(DiagDescriptors.ValidatorsNeedSimpleConstructor.Id, d[0].Id); - } - - [Fact] - public async Task CantValidateOpenGenericMembersInEnumeration() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [Required] - [ValidateEnumeratedItems] - public T[]? P1; - - [ValidateEnumeratedItems] - [Required] - public T[]? P2; - - [ValidateEnumeratedItems] - [Required] - public System.Collections.Generic.IList P3 = null!; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions> - { - } - "); - - Assert.Equal(3, d.Count); - Assert.Equal(DiagDescriptors.CantUseWithGenericTypes.Id, d[0].Id); - Assert.Equal(DiagDescriptors.CantUseWithGenericTypes.Id, d[1].Id); - Assert.Equal(DiagDescriptors.CantUseWithGenericTypes.Id, d[2].Id); - } - - [Fact] - public async Task ClosedGenericsInEnumeration() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [ValidateEnumeratedItems] - [Required] - public T[]? P1; - - [ValidateEnumeratedItems] - [Required] - public int[]? P2; - - [ValidateEnumeratedItems] - [Required] - public System.Collections.Generic.IList? P3; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions> - { - } - "); - - Assert.Equal(3, d.Count); - Assert.Equal(DiagDescriptors.NoEligibleMember.Id, d[0].Id); - Assert.Equal(DiagDescriptors.NoEligibleMember.Id, d[1].Id); - Assert.Equal(DiagDescriptors.NoEligibleMember.Id, d[2].Id); - } - - [Fact] - public async Task NotEnumerable() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [Required] - [ValidateEnumeratedItems] - public int P1; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - } - "); - - Assert.Equal(1, d.Count); - Assert.Equal(DiagDescriptors.NotEnumerableType.Id, d[0].Id); - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/ParserTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/ParserTests.cs deleted file mode 100644 index 8dbdfa237e3..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/ParserTests.cs +++ /dev/null @@ -1,930 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Collections.Generic; -using System.Collections.Immutable; -using System.ComponentModel.DataAnnotations; -using System.Globalization; -using System.Linq; -using System.Reflection; -using System.Threading.Tasks; -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Options.Validation; -using Microsoft.Gen.Shared; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public partial class ParserTests -{ - [Fact] - public async Task PotentiallyMissingAttributes() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [Required] - public SecondModel? P1 { get; set; } - - [Required] - public System.Collections.Generic.IList? P2 { get; set; } - } - - public class SecondModel - { - [Required] - public string? P3; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - } - "); - - Assert.Equal(2, d.Count); - Assert.Equal(DiagDescriptors.PotentiallyMissingTransitiveValidation.Id, d[0].Id); - Assert.Equal(DiagDescriptors.PotentiallyMissingEnumerableValidation.Id, d[1].Id); - } - - [Fact] - public async Task CircularTypeReferences() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [Required] - [ValidateObjectMembers] - public FirstModel? P1 { get; set; } - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - } - "); - - _ = Assert.Single(d); - Assert.Equal(DiagDescriptors.CircularTypeReferences.Id, d[0].Id); - } - - [Fact] - public async Task InvalidValidatorInterface() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [Required] - public string? P1; - } - - public class SecondModel - { - [Required] - public string? P2; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class SecondValidator - { - } - "); - - _ = Assert.Single(d); - Assert.Equal(DiagDescriptors.DoesntImplementIValidateOptions.Id, d[0].Id); - } - - [Fact] - public async Task NotValidator() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [ValidateObjectMembers(typeof(SecondValidator)] - public SecondModel? P1; - } - - public class SecondModel - { - [Required] - public string? P2; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - } - - public partial class SecondValidator - { - } - "); - - _ = Assert.Single(d); - Assert.Equal(DiagDescriptors.DoesntImplementIValidateOptions.Id, d[0].Id); - } - - [Fact] - public async Task ValidatorAlreadyImplementValidateFunction() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [Required] - public string? P1; - - [ValidateObjectMembers(typeof(SecondValidator)] - public SecondModel? P2; - } - - public class SecondModel - { - [Required] - public string? P3; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class SecondValidator : IValidateOptions - { - public ValidateOptionsResult Validate(string name, SecondModel options) - { - throw new System.NotSupportedException(); - } - } - "); - - _ = Assert.Single(d); - Assert.Equal(DiagDescriptors.AlreadyImplementsValidateMethod.Id, d[0].Id); - } - - [Fact] - public async Task NullValidator() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [ValidateObjectMembers(null!)] - public SecondModel? P1; - } - - public class SecondModel - { - [Required] - public string? P2; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class SecondValidator : IValidateOptions - { - } - "); - - _ = Assert.Single(d); - Assert.Equal(DiagDescriptors.NullValidatorType.Id, d[0].Id); - } - - [Fact] - public async Task NoSimpleValidatorConstructor() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [Required] - public string? P1; - - [ValidateObjectMembers(typeof(SecondValidator)] - public SecondModel? P2; - } - - public class SecondModel - { - [Required] - public string? P3; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class SecondValidator : IValidateOptions - { - public SecondValidator(int _) - { - } - } - "); - - _ = Assert.Single(d); - Assert.Equal(DiagDescriptors.ValidatorsNeedSimpleConstructor.Id, d[0].Id); - } - - [Fact] - public async Task NoStaticValidator() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [Required] - public string P1; - } - - [OptionsValidator] - public static partial class FirstValidator : IValidateOptions - { - } - "); - - _ = Assert.Single(d); - Assert.Equal(DiagDescriptors.CantBeStaticClass.Id, d[0].Id); - } - - [Fact] - public async Task BogusModelType() - { - var (d, _) = await RunGenerator(@" - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - } - "); - - // the generator doesn't produce any errors here, since the C# compiler will take care of it - Assert.Empty(d); - } - - [Fact] - public async Task CantValidateOpenGenericMembers() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [Required] - [ValidateObjectMembers] - public T? P1; - - [ValidateObjectMembers] - [Required] - public T[]? P2; - - [ValidateObjectMembers] - [Required] - public System.Collections.Generics.IList P3 = null!; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions> - { - } - "); - - Assert.Equal(3, d.Count); - Assert.Equal(DiagDescriptors.CantUseWithGenericTypes.Id, d[0].Id); - Assert.Equal(DiagDescriptors.CantUseWithGenericTypes.Id, d[1].Id); - Assert.Equal(DiagDescriptors.CantUseWithGenericTypes.Id, d[2].Id); - } - - [Fact] - public async Task ClosedGenerics() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [Required] - [ValidateObjectMembers] - public T? P1; - - [ValidateObjectMembers] - [Required] - public T[]? P2; - - [ValidateObjectMembers] - [Required] - public int[]? P3; - - [ValidateObjectMembers] - [Required] - public System.Collections.Generics.IList? P4; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions> - { - } - "); - - Assert.Equal(4, d.Count); - Assert.Equal(DiagDescriptors.NoEligibleMember.Id, d[0].Id); - Assert.Equal(DiagDescriptors.NoEligibleMember.Id, d[1].Id); - Assert.Equal(DiagDescriptors.NoEligibleMember.Id, d[2].Id); - Assert.Equal(DiagDescriptors.NoEligibleMember.Id, d[3].Id); - } - - [Fact] - public async Task NoEligibleMembers() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [Required] - [ValidateObjectMembers] - public SecondModel? P1; - } - - public class SecondModel - { - public string P2; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - } - - [OptionsValidator] - public partial class SecondValidator : IValidateOptions - { - } - "); - - Assert.Equal(2, d.Count); - Assert.Equal(DiagDescriptors.NoEligibleMember.Id, d[0].Id); - Assert.Equal(DiagDescriptors.NoEligibleMembersFromValidator.Id, d[1].Id); - } - - [Fact] - public async Task AlreadyImplemented() - { - var (d, _) = await RunGenerator(@" - public class FirstModel - { - [Required] - public string One { get; set; } = string.Empty; - } - - [OptionsValidator] - public partial class FirstValidator : IValidateOptions - { - public void Validate(string name, FirstModel fm) - { - } - } - "); - - _ = Assert.Single(d); - Assert.Equal(DiagDescriptors.AlreadyImplementsValidateMethod.Id, d[0].Id); - } - - [Fact] - public async Task ShouldNotProduceInfoWhenTheClassHasABaseClass() - { - var (d, _) = await RunGenerator(@" - public class Parent - { - [Required] - public string parentString { get; set; } - } - - public class Child : Parent - { - [Required] - public string childString { get; set; } - } - - [OptionsValidator] - public partial class Validator : IValidateOptions - { - } - "); - - Assert.Empty(d); - } - - [Fact] - public async Task ShouldNotProduceInfoWhenTransitiveClassHasABaseClass() - { - var (d, _) = await RunGenerator(@" - public class Parent - { - [Required] - public string parentString { get; set; } - } - - public class Child : Parent - { - [Required] - public string childString { get; set; } - } - - public class MyOptions - { - [ValidateObjectMembers] - public Child childVal { get; set; } - } - - [OptionsValidator] - public partial class Validator : IValidateOptions - { - } - "); - - Assert.Empty(d); - } - - [Theory] - [InlineData("bool")] - [InlineData("int")] - [InlineData("double")] - [InlineData("string")] - [InlineData("System.String")] - [InlineData("System.DateTime")] - public async Task ShouldProduceWarn_WhenTransitiveAttrMisused(string memberClass) - { - var (d, _) = await RunGenerator(@$" - public class InnerModel - {{ - [Required] - public string childString {{ get; set; }} - }} - - public class MyOptions - {{ - [Required] - public string simpleVal {{ get; set; }} - - [ValidateObjectMembers] - public {memberClass} complexVal {{ get; set; }} - }} - - [OptionsValidator] - public partial class Validator : IValidateOptions - {{ - }} - "); - - Assert.Single(d); - Assert.Equal(DiagDescriptors.NoEligibleMember.Id, d[0].Id); - } - - [Fact] - public async Task ShouldProduceWarningWhenTheClassHasNoEligibleMembers() - { - var (d, _) = await RunGenerator(@" - public class Child - { - private string AccountName { get; set; } - public object Weight; - } - - [OptionsValidator] - public partial class Validator : IValidateOptions - { - } - "); - - Assert.Single(d); - Assert.Equal(DiagDescriptors.NoEligibleMembersFromValidator.Id, d[0].Id); - } - - [Theory] - [InlineData("private")] - [InlineData("protected")] - public async Task ShouldProduceWarningWhenTheClassMembersAreInaccessible(string accessModifier) - { - var (d, _) = await RunGenerator($@" - public class Model - {{ - [Required] - public string? PublicVal {{ get; set; }} - - [Required] - {accessModifier} string? Val {{ get; set; }} - }} - - [OptionsValidator] - public partial class Validator : IValidateOptions - {{ - }} - "); - - Assert.Single(d); - Assert.Equal("R9G106", d[0].Id); - } - - [Fact] - public async Task ShouldNotProduceErrorWhenMultipleValidationAnnotationsExist() - { - var (d, _) = await RunGenerator(@" - public class IValidateOptionsTestFile - { - [MinLength(5)] - [MaxLength(15)] - public string Val9 { get; set; } - } - - [OptionsValidator] - public partial class Validator : IValidateOptions - { - } - "); - - Assert.Empty(d); - } - - [Fact] - public async Task ShouldNotProduceErrorWhenDataTypeAttributesAreUsed() - { - var (d, _) = await RunGenerator(@" - public class IValidateOptionsTestFile - { - [CreditCard] - public string Val3 = """"; - - [EmailAddress] - public string Val6 { get; set; } - - [EnumDataType(typeof(string))] - public string Val7 { get; set; } - - [FileExtensions] - public string Val8 { get; set; } - - [Phone] - public string Val10 { get; set; } - - [Url] - public string Val11 { get; set; } - } - - [OptionsValidator] - public partial class Validator : IValidateOptions - { - } - "); - - Assert.Empty(d); - } - - [Fact] - public async Task ShouldNotProduceErrorWhenConstVariableIsUsedAsAttributeArgument() - { - var (d, _) = await RunGenerator(@" - public class IValidateOptionsTestFile - { - private const int q = 5; - [Range(q, 10)] - public string Val11 { get; set; } - } - - [OptionsValidator] - public partial class Validator : IValidateOptions - { - } - "); - - Assert.Empty(d); - } - - // Testing on all existing & eligible annotations extending ValidationAttribute that aren't used above - [Fact] - public async Task ShouldNotProduceAnyMessagesWhenExistingValidationsArePlaced() - { - var (d, _) = await RunGenerator(@" - public class IValidateOptionsTestFile - { - [Required] - public string Val { get; set; } - - [Compare(""val"")] - public string Val2 { get; set; } - - [DataType(DataType.Password)] - public string _val5 = """"; - - [Range(5.1, 10.11)] - public string Val12 { get; set; } - - [Range(typeof(MemberDeclarationSyntax), ""1/2/2004"", ""3/4/2004"")] - public string Val14 { get; set; } - - [RegularExpression("""")] - public string Val15 { get; set; } - - [StringLength(5)] - public string Val16 { get; set; } - - [CustomValidation(typeof(MemberDeclarationSyntax), ""CustomMethod"")] - public string Val17 { get; set; } - } - - [OptionsValidator] - public partial class Validator : IValidateOptions - { - } - "); - - Assert.Empty(d); - } - - [Fact] - public async Task ShouldNotProduceErrorWhenPropertiesAreUsedAsAttributeArgument() - { - var (d, _) = await RunGenerator(@" - public class IValidateOptionsTestFile - { - private const int q = 5; - [Range(q, 10, ErrorMessage = ""ErrorMessage"")] - public string Val11 { get; set; } - } - - [OptionsValidator] - public partial class Validator : IValidateOptions - { - } - "); - - Assert.Empty(d); - } - - [Fact] - public async Task ShouldSkipWhenOptionsValidatorAttributeDoesNotExist() - { - var (d, _) = await RunGenerator(@" - public class IValidateOptionsTestFile - { - private const int q = 5; - [Range(q, 10, ErrorMessage = ""ErrorMessage"")] - public string Val11 { get; set; } - } - - [OptionsValidator] - public partial class Validator : IValidateOptions - { - } - ", includeR9References: false); - - Assert.Empty(d); - } - - [Fact] - public async Task ShouldSkipAtrributeWhenAttributeSymbolCannotBeFound() - { - var (d, _) = await RunGenerator(@" - public class IValidateOptionsTestFile - { - [RandomTest] - public string Val11 { get; set; } - - [Range(1, 10, ErrorMessage = ""ErrorMessage"")] - public string Val12 { get; set; } - } - - [OptionsValidator] - public partial class Validator : IValidateOptions - { - } - "); - - Assert.Empty(d); - } - - [Fact] - public async Task ShouldSkipAtrributeWhenAttributeSymbolIsNotBasedOnValidationAttribute() - { - var (d, _) = await RunGenerator(@" - public class IValidateOptionsTestFile - { - [FilterUIHint(""MultiForeignKey"")] - public string Val11 { get; set; } - - [Range(1, 10, ErrorMessage = ""ErrorMessage"")] - public string Val12 { get; set; } - } - - [OptionsValidator] - public partial class Validator : IValidateOptions - { - } - "); - - Assert.Empty(d); - } - - [Fact] - public async Task ShouldAcceptAtrributeWhenAttributeIsInDifferentNamespace() - { - var (d, _) = await RunGenerator(@" - namespace Test { - public class IValidateOptionsTestFile - { - [Test] - public string Val11 { get; set; } - } - - [AttributeUsage(AttributeTargets.Class)] - public sealed class TestAttribute : ValidationAttribute - { - } - - [OptionsValidator] - public partial class Validator : IValidateOptions - { - } - } - ", inNamespace: false); - - Assert.Empty(d); - } - - [Fact] - public async Task ShouldHandleAtrributePropertiesOtherThanString() - { - var (d, _) = await RunGenerator(@" - namespace Test { - public class IValidateOptionsTestFile - { - [Test(num = 5)] - public string Val11 { get; set; } - - [Required] - public string Val12 { get; set; } - } - - [OptionsValidator] - public partial class Validator : IValidateOptions - { - } - } - - namespace System.ComponentModel.DataAnnotations { - [AttributeUsage(AttributeTargets.Class)] - public sealed class TestAttribute : ValidationAttribute - { - public int num { get; set; } - public TestAttribute() { - } - } - } - ", inNamespace: false); - - Assert.Empty(d); - } - - [Fact] - public async Task ShouldStoreFloatValuesCorrectly() - { - var backupCulture = CultureInfo.CurrentCulture; - CultureInfo.CurrentCulture = new CultureInfo("ru-RU", false); - try - { - var (diagMessages, generatedResults) = await RunGenerator(@" - public class Model - { - [Range(-0.1, 1.3)] - public string Val { get; set; } - } - - [OptionsValidator] - public partial class Validator : IValidateOptions - { - } - "); - - Assert.Empty(diagMessages); - Assert.Single(generatedResults); - Assert.DoesNotContain("0,1", generatedResults[0].SourceText.ToString()); - Assert.DoesNotContain("1,3", generatedResults[0].SourceText.ToString()); - } - finally - { - CultureInfo.CurrentCulture = backupCulture; - } - } - - [Fact] - public async Task MultiModelValidatorGeneratesOnlyOnePartialTypeBlock() - { - var (d, sources) = await RunGenerator(@" - public class FirstModel - { - [Required] - public string P1 { get; set; } - } - - public class SecondModel - { - [Required] - public string P2 { get; set; } - } - - public class ThirdModel - { - [Required] - public string P3 { get; set; } - } - - [OptionsValidator] - public partial class MultiValidator : IValidateOptions, IValidateOptions, IValidateOptions - { - } - "); - - var typeDeclarations = sources[0].SyntaxTree - .GetRoot() - .DescendantNodes() - .OfType() - .ToArray(); - - var multiValidatorTypeDeclarations = typeDeclarations - .Where(x => x.Identifier.ValueText == "MultiValidator") - .ToArray(); - - Assert.Single(multiValidatorTypeDeclarations); - - var validateMethodDeclarations = multiValidatorTypeDeclarations[0] - .DescendantNodes() - .OfType() - .Where(x => x.Identifier.ValueText == "Validate") - .ToArray(); - - Assert.Equal(3, validateMethodDeclarations.Length); - } - - private static async Task<(IReadOnlyList diagnostics, ImmutableArray generatedSources)> RunGenerator( - string code, - bool wrap = true, - bool inNamespace = true, - bool includeR9References = true, - bool includeSystemReferences = true, - bool includeOptionsReferences = true, - bool includeTransitiveReferences = true) - { - var text = code; - if (wrap) - { - var nspaceStart = "namespace Test {"; - var nspaceEnd = "}"; - if (!inNamespace) - { - nspaceStart = ""; - nspaceEnd = ""; - } - - text = $@" - {nspaceStart} - using System.ComponentModel.DataAnnotations; - using Microsoft.Extensions.Options.Validation; - using Microsoft.Shared.Data.Validation; - using Microsoft.Extensions.Options; - using Microsoft.CodeAnalysis.CSharp.Syntax; - {code} - {nspaceEnd} - "; - } - - var assemblies = new List { Assembly.GetAssembly(typeof(MemberDeclarationSyntax))! }; - - if (includeR9References) - { - assemblies.Add(Assembly.GetAssembly(typeof(OptionsValidatorAttribute))!); - } - - if (includeSystemReferences) - { - assemblies.Add(Assembly.GetAssembly(typeof(RequiredAttribute))!); - } - - if (includeOptionsReferences) - { - assemblies.Add(Assembly.GetAssembly(typeof(IValidateOptions))!); - } - - if (includeTransitiveReferences) - { - assemblies.Add(Assembly.GetAssembly(typeof(Microsoft.Extensions.Options.Validation.ValidateObjectMembersAttribute))!); - } - - var result = await RoslynTestUtils.RunGenerator(new Generator(), assemblies.ToArray(), new[] { text }) - .ConfigureAwait(false); - - return result; - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/SymbolLoaderTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/SymbolLoaderTests.cs deleted file mode 100644 index 287072ea951..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/SymbolLoaderTests.cs +++ /dev/null @@ -1,80 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using Microsoft.CodeAnalysis; -using Moq; -using Moq.Protected; -using Xunit; - -namespace Microsoft.Gen.OptionsValidation.Test; - -public class SymbolLoaderTests -{ - [Theory] - [InlineData(SymbolLoader.OptionsValidatorAttribute)] - [InlineData(SymbolLoader.ValidationAttribute)] - [InlineData(SymbolLoader.DataTypeAttribute)] - [InlineData(SymbolLoader.IValidatableObjectType)] - [InlineData(SymbolLoader.IValidateOptionsType)] - [InlineData(SymbolLoader.TypeOfType)] - public void Loader_ReturnsFalse_WhenRequiredTypeIsUnavailable(string type) - { - var compilationMock = new Mock( - string.Empty, - Array.Empty().ToImmutableArray(), - new Dictionary(), - false, - null!, - null!); - - compilationMock - .Protected() - .Setup("CommonGetTypeByMetadataName", ItExpr.Is(t => t != type)) - .Returns(Mock.Of()); - - compilationMock - .Protected() - .Setup("CommonGetTypeByMetadataName", ItExpr.Is(t => t == type)) - .Returns((INamedTypeSymbol?)null); - - var callbackMock = new Mock>(); - var result = SymbolLoader.TryLoad(compilationMock.Object, out var holder); - Assert.False(result); - Assert.Null(holder); - callbackMock.VerifyNoOtherCalls(); - } - - [Theory] - [InlineData(SymbolLoader.LegacyValidateTransitivelyAttribute)] - [InlineData(SymbolLoader.ValidateObjectMembersAttribute)] - [InlineData(SymbolLoader.ValidateEnumeratedItemsAttribute)] - public void Loader_ReturnsTrue_WhenOptionalTypeIsUnavailable(string type) - { - var compilationMock = new Mock( - string.Empty, - Array.Empty().ToImmutableArray(), - new Dictionary(), - false, - null!, - null!); - - compilationMock - .Protected() - .Setup("CommonGetTypeByMetadataName", ItExpr.Is(t => t != type)) - .Returns(Mock.Of()); - - compilationMock - .Protected() - .Setup("CommonGetTypeByMetadataName", ItExpr.Is(t => t == type)) - .Returns((INamedTypeSymbol?)null); - - var callbackMock = new Mock>(); - var result = SymbolLoader.TryLoad(compilationMock.Object, out var holder); - Assert.True(result); - Assert.NotNull(holder); - callbackMock.VerifyNoOtherCalls(); - } -} diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Directory.Build.props b/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Directory.Build.props deleted file mode 100644 index feb0e78d598..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Directory.Build.props +++ /dev/null @@ -1,31 +0,0 @@ - - - - - Microsoft.Gen.OptionsValidation.Test - Unit tests for Gen.OptionsValidation. - - - - true - true - true - - - - - - - - - - - - - - - - - - - diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.Unit.Tests.csproj b/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.Unit.Tests.csproj deleted file mode 100644 index eac2eac2172..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.Unit.Tests.csproj +++ /dev/null @@ -1,5 +0,0 @@ - - - 3.8 - - diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.Unit.Tests.csproj b/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.Unit.Tests.csproj deleted file mode 100644 index 18ce9dd9ba0..00000000000 --- a/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.Unit.Tests.csproj +++ /dev/null @@ -1,6 +0,0 @@ - - - 4.0 - $(DefineConstants);ROSLYN_4_0_OR_GREATER - - diff --git a/test/Libraries/Microsoft.Extensions.Options.Validation.Tests/Microsoft.Extensions.Options.Validation.Tests.csproj b/test/Libraries/Microsoft.Extensions.Options.Validation.Tests/Microsoft.Extensions.Options.Validation.Tests.csproj deleted file mode 100644 index 7adea74ea1d..00000000000 --- a/test/Libraries/Microsoft.Extensions.Options.Validation.Tests/Microsoft.Extensions.Options.Validation.Tests.csproj +++ /dev/null @@ -1,22 +0,0 @@ - - - Microsoft.Extensions.Options.Validation - Tests for Microsoft.Extensions.Options.Validation - - - - true - - - - - - - - - - - - - - diff --git a/test/Libraries/Microsoft.Extensions.Options.Validation.Tests/ValidateEnumeratedItemsAttributeTests.cs b/test/Libraries/Microsoft.Extensions.Options.Validation.Tests/ValidateEnumeratedItemsAttributeTests.cs deleted file mode 100644 index 26f5cf70e30..00000000000 --- a/test/Libraries/Microsoft.Extensions.Options.Validation.Tests/ValidateEnumeratedItemsAttributeTests.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Xunit; - -namespace Microsoft.Extensions.Options.Validation.Test; - -public class ValidateEnumeratedItemsAttributeTests -{ - [Fact] - public void Basic() - { - var a = new ValidateEnumeratedItemsAttribute(); - Assert.NotNull(a); - Assert.Null(a.Validator); - - a = new ValidateEnumeratedItemsAttribute(typeof(int)); - Assert.Equal(typeof(int), a.Validator); - } -} diff --git a/test/Libraries/Microsoft.Extensions.Options.Validation.Tests/ValidateObjectMembersAttributeTest.cs b/test/Libraries/Microsoft.Extensions.Options.Validation.Tests/ValidateObjectMembersAttributeTest.cs deleted file mode 100644 index 69208ed9b56..00000000000 --- a/test/Libraries/Microsoft.Extensions.Options.Validation.Tests/ValidateObjectMembersAttributeTest.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Xunit; - -namespace Microsoft.Extensions.Options.Validation.Test; - -public class ValidateObjectMembersAttributeTest -{ - [Fact] - public void Basic() - { - var a = new ValidateObjectMembersAttribute(); - Assert.NotNull(a); - Assert.Null(a.Validator); - - a = new ValidateObjectMembersAttribute(typeof(int)); - Assert.Equal(typeof(int), a.Validator); - } -} diff --git a/test/ToBeRemoved/Options.ValidateOnStart.Tests/Helpers/OptionsValidationModels.cs b/test/ToBeRemoved/Options.ValidateOnStart.Tests/Helpers/OptionsValidationModels.cs index 3d2e0ebbfd9..cd513ad9ec2 100644 --- a/test/ToBeRemoved/Options.ValidateOnStart.Tests/Helpers/OptionsValidationModels.cs +++ b/test/ToBeRemoved/Options.ValidateOnStart.Tests/Helpers/OptionsValidationModels.cs @@ -61,9 +61,9 @@ public class ComplexModel [ValidateObjectMembers] public ModelWithoutOptionsValidator? ValWithoutOptionsValidator { get; set; } -#pragma warning disable R9G113 +#pragma warning disable SYSLIB1212 // Member potentially missing transitive validation. public Model? ValWithoutRecursiveValidation { get; set; } -#pragma warning restore R9G113 +#pragma warning restore SYSLIB1212 // Member potentially missing transitive validation. } public class InceptionComplexModel diff --git a/test/ToBeRemoved/Options.ValidateOnStart.Tests/Options.ValidateOnStart.Tests.csproj b/test/ToBeRemoved/Options.ValidateOnStart.Tests/Options.ValidateOnStart.Tests.csproj index aadeb05c93f..3de3dc9c92d 100644 --- a/test/ToBeRemoved/Options.ValidateOnStart.Tests/Options.ValidateOnStart.Tests.csproj +++ b/test/ToBeRemoved/Options.ValidateOnStart.Tests/Options.ValidateOnStart.Tests.csproj @@ -3,7 +3,6 @@ Microsoft.Extensions.Options.ValidateOnStart.Tests Microsoft.Extensions.Options.ValidateOnStart.Test Tests for Microsoft.Extensions.Options.ValidateOnStart - true @@ -14,7 +13,6 @@ -