diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json new file mode 100644 index 000000000000..493dd5c6774a --- /dev/null +++ b/.config/dotnet-tools.json @@ -0,0 +1,12 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "dotnet-reportgenerator-globaltool": { + "version": "4.8.0", + "commands": [ + "reportgenerator" + ] + } + } +} \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6c87d512c524..7f39025049e4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -55,8 +55,11 @@ Nuget package will be created in root directory under \artifacts\packages\Debug ### Using the command line: Run e.g. `msbuild eng\mgmt.proj /t:"Runtests" /p:Scope=Compute` -In the above example _RunTests_ will build and run tests for Compute only or you can use command line CLI -`dotnet test Compute\Microsoft.Azure.Management.Compute\tests\Microsoft.Azure.Management.Tests.csproj` +In the above example _RunTests_ will build and run tests for Compute only or you can use command line CLI: + +```bash +dotnet test Compute\Microsoft.Azure.Management.Compute\tests\Microsoft.Azure.Management.Tests.csproj +``` ### Non-Windows command line build @@ -67,6 +70,22 @@ Now you can use the same command on non-windows as above for e.g. on Ubuntu you - `dotnet msbuild eng\mgmt.proj /t:CreateNugetPackage /p:scope=Compute` - `dotnet msbuild build.proj /t:Util /p:UtilityName=InstallPsModules` +### Code Coverage + +If you want to enable code coverage reporting, on the command line pass `/p:CollectCoverage=true` like so: + +```bash +dotnet tool restore +dotnet test /p:CollectCoverage=true +``` + +On developers' machines, you can open `index.html` from within the `TestResults` directory in each of your test projects. +Coverage reports can also be found in Azure Pipelines on the "Code Coverage" tab after a pull request validation build completes. +All covered projects should have 70% or better test coverage. + +By default, all _Azure.*_ libraries are covered, and any project that sets the `IsClientLibrary=true` MSBuild property. +To exclude a project, set `ExcludeFromCodeCoverage=true` in the project's MSBuild properties before other targets are imported. + ### Update build tools Build tools are now downloaded as part of a nuget package under `root\restoredPackages\microsoft.internal.netsdkbuild.mgmt.tools` diff --git a/eng/CodeCoverage.runsettings b/eng/CodeCoverage.runsettings new file mode 100644 index 000000000000..9cc066020173 --- /dev/null +++ b/eng/CodeCoverage.runsettings @@ -0,0 +1,18 @@ + + + + + + + cobertura + ExcludeFromCodeCoverageAttribute,GeneratedCodeAttribute,Obsolete + false + false + true + + + + + + + diff --git a/eng/CodeCoverage.targets b/eng/CodeCoverage.targets index 135eaa5eef26..297c676529b6 100644 --- a/eng/CodeCoverage.targets +++ b/eng/CodeCoverage.targets @@ -1,13 +1,70 @@ - - + + <_IsCodeCoverable Condition="'$(IsClientLibrary)' == 'true' and '$(IsMgmtClientLibrary)' != 'true'">true + + + + $([System.IO.Path]::GetFullPath("$(MSBuildProjectDirectory)\..")) + true + XPlat Code Coverage + $(MSBuildThisFileDirectory)CodeCoverage.runsettings + <_CollectCoverage>true + <_TestResultsDirectory>$(MSBuildProjectDirectory)\TestResults + + + + + all runtime; build; native; contentfiles; analyzers - + + + + + + + + + dotnet tool run reportgenerator -- + $(CoverageReportCommandLine) "-reports:$(_TestResultsDirectory)\**\coverage.cobertura.xml" + $(CoverageReportCommandLine) -reporttypes:Html + $(CoverageReportCommandLine) "-targetdir:$(_TestResultsDirectory)" + $(CoverageReportCommandLine) "-filefilters:+$(CodeCoverageDirectory)\**" + + + + + + + + <_ContainsCurlyBraces Include="@(Compile)" Condition="$([MSBuild]::ValueOrDefault('%(Directory)%(Filename)', '').Contains('{')) or $([MSBuild]::ValueOrDefault('%(Directory)%(Filename)', '').Contains('}'))" /> + + + + + @@ -17,7 +74,8 @@ Returns="@(_LocalTopLevelSourceRoot)" Condition="'$(DeterministicSourcePaths)' == 'true'"> - <_LocalTopLevelSourceRoot Include="@(SourceRoot)" Condition="'%(SourceRoot.NestedRoot)' == ''"/> + <_LocalTopLevelSourceRoot Include="@(SourceRoot)" + Condition="'%(SourceRoot.NestedRoot)' == ''"/> - \ No newline at end of file + diff --git a/eng/Directory.Build.Data.props b/eng/Directory.Build.Data.props index 6f8e8e2cff38..2598f04d10aa 100644 --- a/eng/Directory.Build.Data.props +++ b/eng/Directory.Build.Data.props @@ -55,7 +55,6 @@ true $(AZURE_DEV_UPDATESOURCESONBUILD) pwsh - cobertura false @@ -97,7 +96,8 @@ false netcoreapp2.1;net5.0 - netcoreapp2.1;net5.0;net461 + + net461;netcoreapp2.1;net5.0 diff --git a/eng/Directory.Build.Data.targets b/eng/Directory.Build.Data.targets index a9f939e79812..b3b5f77db8fe 100644 --- a/eng/Directory.Build.Data.targets +++ b/eng/Directory.Build.Data.targets @@ -71,9 +71,6 @@ - - - @@ -85,7 +82,7 @@ - + @@ -105,6 +102,8 @@ + + diff --git a/eng/Packages.Data.props b/eng/Packages.Data.props index 6379f41e3610..7cef773fe278 100644 --- a/eng/Packages.Data.props +++ b/eng/Packages.Data.props @@ -9,9 +9,9 @@ - + - + @@ -32,7 +32,7 @@ - + @@ -69,7 +69,7 @@ - + @@ -180,9 +180,9 @@ - + - + diff --git a/eng/pipelines/templates/jobs/archetype-sdk-client.yml b/eng/pipelines/templates/jobs/archetype-sdk-client.yml index 66f2e7680b6d..83b9816fc136 100644 --- a/eng/pipelines/templates/jobs/archetype-sdk-client.yml +++ b/eng/pipelines/templates/jobs/archetype-sdk-client.yml @@ -110,6 +110,8 @@ jobs: condition: and(succeededOrFailed(), ne(variables['Skip.Test'], true)) variables: - template: ../variables/globals.yml + - name: disable.coverage.autogenerate + value: true strategy: maxParallel: $[ variables['MaxParallelTestJobs'] ] matrix: @@ -119,6 +121,7 @@ jobs: Windows_NetCoreApp: OSVmImage: "windows-2019" TestTargetFramework: netcoreapp2.1 + CollectCoverage: true Windows_NetCoreApp_ProjectReferences: OSVmImage: "windows-2019" TestTargetFramework: netcoreapp2.1 @@ -149,7 +152,8 @@ jobs: --logger "trx;LogFileName=$(TestTargetFramework).trx" --logger:"console;verbosity=normal" /p:ServiceDirectory=${{parameters.ServiceToTest}} /p:IncludeSrc=false /p:IncludeSamples=false /p:IncludePerf=false /p:IncludeStress=false - /p:Configuration=$(BuildConfiguration) $(ConvertToProjectReferenceOption) /p:CollectCoverage=$(CollectCoverage) + /p:Configuration=$(BuildConfiguration) $(ConvertToProjectReferenceOption) + /p:CollectCoverage=$(CollectCoverage) /p:CodeCoverageDirectory=${{parameters.ServiceDirectory}} displayName: "Build & Test ($(TestTargetFramework))" env: DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 @@ -163,15 +167,18 @@ jobs: testResultsFormat: "VSTest" mergeTestResults: true - task: Palmmedia.reportgenerator.reportgenerator-build-release-task.reportgenerator@4 - condition: and(succeeded(), eq(variables['CollectCoverage'], 'true')) - displayName: ReportGenerator + condition: and(succeededOrFailed(), eq(variables['CollectCoverage'], 'true')) + displayName: Generate Code Coverage Reports inputs: - reports: '**/*coverage.netcoreapp2.1.cobertura.xml' - targetdir: '$(Build.SourcesDirectory)' - reporttypes: Cobertura + reports: $(Build.SourcesDirectory)\sdk\${{parameters.ServiceDirectory}}\**\coverage.cobertura.xml + targetdir: $(Build.ArtifactStagingDirectory)\coverage + reporttypes: Cobertura;HtmlInline_AzurePipelines + filefilters: +$(Build.SourcesDirectory)\sdk\${{parameters.ServiceDirectory}}\** + verbosity: Verbose - task: PublishCodeCoverageResults@1 - condition: and(succeeded(), eq(variables['CollectCoverage'], 'true')) - displayName: 'Publish code coverage report' + condition: and(succeededOrFailed(), eq(variables['CollectCoverage'], 'true')) + displayName: Publish Code Coverage Reports inputs: - codeCoverageTool: 'Cobertura' - summaryFileLocation: 'Cobertura.xml' + codeCoverageTool: Cobertura + summaryFileLocation: $(Build.ArtifactStagingDirectory)\coverage\Cobertura.xml + reportDirectory: $(Build.ArtifactStagingDirectory)\coverage diff --git a/eng/service.proj b/eng/service.proj index 9e6ecfe5897a..b8197a7fdc33 100644 --- a/eng/service.proj +++ b/eng/service.proj @@ -9,6 +9,9 @@ true true false + + CodeCoverageDirectory=$([System.IO.Path]::GetFullPath("$(CodeCoverageDirectory)", "$(MSBuildThisFileDirectory)..\sdk")); + diff --git a/sdk/appconfiguration/Azure.Data.AppConfiguration/src/Azure.Data.AppConfiguration.csproj b/sdk/appconfiguration/Azure.Data.AppConfiguration/src/Azure.Data.AppConfiguration.csproj index 0cb257676fc6..c2dd1ceb9fe6 100644 --- a/sdk/appconfiguration/Azure.Data.AppConfiguration/src/Azure.Data.AppConfiguration.csproj +++ b/sdk/appconfiguration/Azure.Data.AppConfiguration/src/Azure.Data.AppConfiguration.csproj @@ -30,7 +30,7 @@ - + diff --git a/sdk/core/Azure.Core.TestFramework/src/RecordedTestBase{TEnvironment}.cs b/sdk/core/Azure.Core.TestFramework/src/RecordedTestBaseOfTEnvironment.cs similarity index 87% rename from sdk/core/Azure.Core.TestFramework/src/RecordedTestBase{TEnvironment}.cs rename to sdk/core/Azure.Core.TestFramework/src/RecordedTestBaseOfTEnvironment.cs index c665dbf1af03..260ea937d8d6 100644 --- a/sdk/core/Azure.Core.TestFramework/src/RecordedTestBase{TEnvironment}.cs +++ b/sdk/core/Azure.Core.TestFramework/src/RecordedTestBaseOfTEnvironment.cs @@ -3,7 +3,9 @@ namespace Azure.Core.TestFramework { +#pragma warning disable SA1649 // File name should match first type name public abstract class RecordedTestBase : RecordedTestBase where TEnvironment : TestEnvironment, new() +#pragma warning restore SA1649 // File name should match first type name { protected RecordedTestBase(bool isAsync) : base(isAsync) { diff --git a/sdk/core/Azure.Core/src/Operation{T}.cs b/sdk/core/Azure.Core/src/OperationOfT.cs similarity index 97% rename from sdk/core/Azure.Core/src/Operation{T}.cs rename to sdk/core/Azure.Core/src/OperationOfT.cs index ad4827028506..08f554885f2a 100644 --- a/sdk/core/Azure.Core/src/Operation{T}.cs +++ b/sdk/core/Azure.Core/src/OperationOfT.cs @@ -14,7 +14,9 @@ namespace Azure /// Represents a long-running operation. /// /// The final result of the long-running operation. +#pragma warning disable SA1649 // File name should match first type name public abstract class Operation where T : notnull +#pragma warning restore SA1649 // File name should match first type name { /// /// Gets an ID representing the operation that can be used to poll for diff --git a/sdk/core/Azure.Core/src/Response{T}.cs b/sdk/core/Azure.Core/src/ResponseOfT.cs similarity index 91% rename from sdk/core/Azure.Core/src/Response{T}.cs rename to sdk/core/Azure.Core/src/ResponseOfT.cs index 4ebe53eb1841..f7c1228e4a4a 100644 --- a/sdk/core/Azure.Core/src/Response{T}.cs +++ b/sdk/core/Azure.Core/src/ResponseOfT.cs @@ -11,7 +11,9 @@ namespace Azure /// /// The type of returned value. [DebuggerTypeProxy(typeof(ResponseDebugView<>))] +#pragma warning disable SA1649 // File name should match first type name public abstract class Response +#pragma warning restore SA1649 // File name should match first type name { /// /// Returns the HTTP response returned by the service. diff --git a/sdk/core/Azure.Core/src/Shared/NoBodyResponse{T}.cs b/sdk/core/Azure.Core/src/Shared/NoBodyResponseOfT.cs similarity index 88% rename from sdk/core/Azure.Core/src/Shared/NoBodyResponse{T}.cs rename to sdk/core/Azure.Core/src/Shared/NoBodyResponseOfT.cs index 85ba5aa2f303..da295d970201 100644 --- a/sdk/core/Azure.Core/src/Shared/NoBodyResponse{T}.cs +++ b/sdk/core/Azure.Core/src/Shared/NoBodyResponseOfT.cs @@ -5,7 +5,9 @@ namespace Azure { +#pragma warning disable SA1649 // File name should match first type name internal class NoBodyResponse : Response +#pragma warning restore SA1649 // File name should match first type name { private readonly Response _response; diff --git a/sdk/core/Azure.Core/tests/Azure.Core.Tests.csproj b/sdk/core/Azure.Core/tests/Azure.Core.Tests.csproj index f825e76110d7..339cb2dc29ff 100644 --- a/sdk/core/Azure.Core/tests/Azure.Core.Tests.csproj +++ b/sdk/core/Azure.Core/tests/Azure.Core.Tests.csproj @@ -26,7 +26,7 @@ - + diff --git a/sdk/eventhub/Azure.Messaging.EventHubs/src/Primitives/EventProcessor{TPartition}.cs b/sdk/eventhub/Azure.Messaging.EventHubs/src/Primitives/EventProcessor.cs similarity index 100% rename from sdk/eventhub/Azure.Messaging.EventHubs/src/Primitives/EventProcessor{TPartition}.cs rename to sdk/eventhub/Azure.Messaging.EventHubs/src/Primitives/EventProcessor.cs diff --git a/sdk/eventhub/Microsoft.Azure.EventHubs/Directory.Build.props b/sdk/eventhub/Microsoft.Azure.EventHubs/Directory.Build.props index 9fbcdd998103..d18453d3ded2 100755 --- a/sdk/eventhub/Microsoft.Azure.EventHubs/Directory.Build.props +++ b/sdk/eventhub/Microsoft.Azure.EventHubs/Directory.Build.props @@ -1,5 +1,6 @@  + true true diff --git a/sdk/extensions/Microsoft.Azure.WebJobs.Extensions.Clients/tests/shared/FakeTypeLocator{T}.cs b/sdk/extensions/Microsoft.Azure.WebJobs.Extensions.Clients/tests/shared/FakeTypeLocatorOfT.cs similarity index 72% rename from sdk/extensions/Microsoft.Azure.WebJobs.Extensions.Clients/tests/shared/FakeTypeLocator{T}.cs rename to sdk/extensions/Microsoft.Azure.WebJobs.Extensions.Clients/tests/shared/FakeTypeLocatorOfT.cs index 9ada78519cab..5b8cfbc7aabb 100644 --- a/sdk/extensions/Microsoft.Azure.WebJobs.Extensions.Clients/tests/shared/FakeTypeLocator{T}.cs +++ b/sdk/extensions/Microsoft.Azure.WebJobs.Extensions.Clients/tests/shared/FakeTypeLocatorOfT.cs @@ -6,7 +6,9 @@ namespace Microsoft.Azure.WebJobs.Host.TestCommon { +#pragma warning disable SA1649 // File name should match first type name public class FakeTypeLocator : ITypeLocator +#pragma warning restore SA1649 // File name should match first type name { public IReadOnlyList GetTypes() { diff --git a/sdk/extensions/Microsoft.Extensions.Azure/src/Internal/AzureClientCredentialOptions{TClient}.cs b/sdk/extensions/Microsoft.Extensions.Azure/src/Internal/AzureClientCredentialOptions.cs similarity index 100% rename from sdk/extensions/Microsoft.Extensions.Azure/src/Internal/AzureClientCredentialOptions{TClient}.cs rename to sdk/extensions/Microsoft.Extensions.Azure/src/Internal/AzureClientCredentialOptions.cs diff --git a/sdk/extensions/Microsoft.Extensions.Azure/src/Internal/ClientRegistration{TClient}.cs b/sdk/extensions/Microsoft.Extensions.Azure/src/Internal/ClientRegistration.cs similarity index 100% rename from sdk/extensions/Microsoft.Extensions.Azure/src/Internal/ClientRegistration{TClient}.cs rename to sdk/extensions/Microsoft.Extensions.Azure/src/Internal/ClientRegistration.cs diff --git a/sdk/formrecognizer/Azure.AI.FormRecognizer/src/FormField{T}.cs b/sdk/formrecognizer/Azure.AI.FormRecognizer/src/FormFieldOfT.cs similarity index 94% rename from sdk/formrecognizer/Azure.AI.FormRecognizer/src/FormField{T}.cs rename to sdk/formrecognizer/Azure.AI.FormRecognizer/src/FormFieldOfT.cs index 79b82c8bdb61..135acf87b55e 100644 --- a/sdk/formrecognizer/Azure.AI.FormRecognizer/src/FormField{T}.cs +++ b/sdk/formrecognizer/Azure.AI.FormRecognizer/src/FormFieldOfT.cs @@ -7,7 +7,9 @@ namespace Azure.AI.FormRecognizer.Models /// Represents a field recognized in the input form, where the field's value is of a known type. /// /// The type of the value in the field this instance represents. +#pragma warning disable SA1649 // File name should match first type name public class FormField +#pragma warning restore SA1649 // File name should match first type name { /// /// Initializes a new instance of the class. diff --git a/sdk/keyvault/Azure.Security.KeyVault.Certificates/tests/CertificatesTestBase.cs b/sdk/keyvault/Azure.Security.KeyVault.Certificates/tests/CertificatesTestBase.cs index 587a672be15c..bc1602162ded 100644 --- a/sdk/keyvault/Azure.Security.KeyVault.Certificates/tests/CertificatesTestBase.cs +++ b/sdk/keyvault/Azure.Security.KeyVault.Certificates/tests/CertificatesTestBase.cs @@ -17,7 +17,7 @@ namespace Azure.Security.KeyVault.Certificates.Tests CertificateClientOptions.ServiceVersion.V7_0, CertificateClientOptions.ServiceVersion.V7_1)] [NonParallelizable] - public class CertificatesTestBase : RecordedTestBase + public abstract class CertificatesTestBase : RecordedTestBase { protected readonly TimeSpan PollingInterval = TimeSpan.FromSeconds(5); private readonly CertificateClientOptions.ServiceVersion _serviceVersion; diff --git a/sdk/keyvault/samples/Directory.Build.props b/sdk/keyvault/samples/Directory.Build.props index aac01a03d888..fe5aa561b019 100644 --- a/sdk/keyvault/samples/Directory.Build.props +++ b/sdk/keyvault/samples/Directory.Build.props @@ -3,6 +3,7 @@ true false + true false diff --git a/sdk/search/Azure.Search.Documents/src/Batching/Publisher{T}.Message.cs b/sdk/search/Azure.Search.Documents/src/Batching/Publisher.Message.cs similarity index 100% rename from sdk/search/Azure.Search.Documents/src/Batching/Publisher{T}.Message.cs rename to sdk/search/Azure.Search.Documents/src/Batching/Publisher.Message.cs diff --git a/sdk/search/Azure.Search.Documents/src/Batching/Publisher{T}.MessageOperation.cs b/sdk/search/Azure.Search.Documents/src/Batching/Publisher.MessageOperation.cs similarity index 100% rename from sdk/search/Azure.Search.Documents/src/Batching/Publisher{T}.MessageOperation.cs rename to sdk/search/Azure.Search.Documents/src/Batching/Publisher.MessageOperation.cs diff --git a/sdk/search/Azure.Search.Documents/src/Batching/Publisher{T}.cs b/sdk/search/Azure.Search.Documents/src/Batching/Publisher.cs similarity index 100% rename from sdk/search/Azure.Search.Documents/src/Batching/Publisher{T}.cs rename to sdk/search/Azure.Search.Documents/src/Batching/Publisher.cs diff --git a/sdk/search/Azure.Search.Documents/src/Batching/PublisherAction{T}.cs b/sdk/search/Azure.Search.Documents/src/Batching/PublisherAction.cs similarity index 100% rename from sdk/search/Azure.Search.Documents/src/Batching/PublisherAction{T}.cs rename to sdk/search/Azure.Search.Documents/src/Batching/PublisherAction.cs diff --git a/sdk/search/Azure.Search.Documents/src/Batching/SearchIndexingBufferedSender{T}.cs b/sdk/search/Azure.Search.Documents/src/Batching/SearchIndexingBufferedSender.cs similarity index 100% rename from sdk/search/Azure.Search.Documents/src/Batching/SearchIndexingBufferedSender{T}.cs rename to sdk/search/Azure.Search.Documents/src/Batching/SearchIndexingBufferedSender.cs diff --git a/sdk/search/Azure.Search.Documents/src/Batching/SearchIndexingBufferedSenderOptions{T}.cs b/sdk/search/Azure.Search.Documents/src/Batching/SearchIndexingBufferedSenderOptions.cs similarity index 100% rename from sdk/search/Azure.Search.Documents/src/Batching/SearchIndexingBufferedSenderOptions{T}.cs rename to sdk/search/Azure.Search.Documents/src/Batching/SearchIndexingBufferedSenderOptions.cs diff --git a/sdk/search/Azure.Search.Documents/src/Batching/SearchIndexingPublisher{T}.cs b/sdk/search/Azure.Search.Documents/src/Batching/SearchIndexingPublisher.cs similarity index 100% rename from sdk/search/Azure.Search.Documents/src/Batching/SearchIndexingPublisher{T}.cs rename to sdk/search/Azure.Search.Documents/src/Batching/SearchIndexingPublisher.cs diff --git a/sdk/search/Azure.Search.Documents/src/Models/IndexDocumentsAction{T}.cs b/sdk/search/Azure.Search.Documents/src/Models/IndexDocumentsAction.cs similarity index 100% rename from sdk/search/Azure.Search.Documents/src/Models/IndexDocumentsAction{T}.cs rename to sdk/search/Azure.Search.Documents/src/Models/IndexDocumentsAction.cs diff --git a/sdk/search/Azure.Search.Documents/src/Models/IndexDocumentsBatch{T}.cs b/sdk/search/Azure.Search.Documents/src/Models/IndexDocumentsBatch.cs similarity index 100% rename from sdk/search/Azure.Search.Documents/src/Models/IndexDocumentsBatch{T}.cs rename to sdk/search/Azure.Search.Documents/src/Models/IndexDocumentsBatch.cs diff --git a/sdk/search/Azure.Search.Documents/src/Models/SearchResult{T}.cs b/sdk/search/Azure.Search.Documents/src/Models/SearchResult.cs similarity index 100% rename from sdk/search/Azure.Search.Documents/src/Models/SearchResult{T}.cs rename to sdk/search/Azure.Search.Documents/src/Models/SearchResult.cs diff --git a/sdk/search/Azure.Search.Documents/src/Models/SearchResults{T}.cs b/sdk/search/Azure.Search.Documents/src/Models/SearchResults.cs similarity index 100% rename from sdk/search/Azure.Search.Documents/src/Models/SearchResults{T}.cs rename to sdk/search/Azure.Search.Documents/src/Models/SearchResults.cs diff --git a/sdk/search/Azure.Search.Documents/src/Models/SearchSuggestion{T}.cs b/sdk/search/Azure.Search.Documents/src/Models/SearchSuggestion.cs similarity index 100% rename from sdk/search/Azure.Search.Documents/src/Models/SearchSuggestion{T}.cs rename to sdk/search/Azure.Search.Documents/src/Models/SearchSuggestion.cs diff --git a/sdk/search/Azure.Search.Documents/src/Models/SuggestResults{T}.cs b/sdk/search/Azure.Search.Documents/src/Models/SuggestResults.cs similarity index 100% rename from sdk/search/Azure.Search.Documents/src/Models/SuggestResults{T}.cs rename to sdk/search/Azure.Search.Documents/src/Models/SuggestResults.cs diff --git a/sdk/storage/Azure.Storage.Blobs.Batch/samples/Azure.Storage.Blobs.Batch.Samples.Tests.csproj b/sdk/storage/Azure.Storage.Blobs.Batch/samples/Azure.Storage.Blobs.Batch.Samples.Tests.csproj index c6fce5bba393..748b67441b36 100644 --- a/sdk/storage/Azure.Storage.Blobs.Batch/samples/Azure.Storage.Blobs.Batch.Samples.Tests.csproj +++ b/sdk/storage/Azure.Storage.Blobs.Batch/samples/Azure.Storage.Blobs.Batch.Samples.Tests.csproj @@ -18,7 +18,7 @@ - + @@ -28,4 +28,4 @@ - \ No newline at end of file + diff --git a/sdk/storage/Azure.Storage.Blobs.Batch/src/Azure.Storage.Blobs.Batch.csproj b/sdk/storage/Azure.Storage.Blobs.Batch/src/Azure.Storage.Blobs.Batch.csproj index 94be97e4e3d1..0a253bed2dcd 100644 --- a/sdk/storage/Azure.Storage.Blobs.Batch/src/Azure.Storage.Blobs.Batch.csproj +++ b/sdk/storage/Azure.Storage.Blobs.Batch/src/Azure.Storage.Blobs.Batch.csproj @@ -27,7 +27,7 @@ - + @@ -40,4 +40,4 @@ - \ No newline at end of file + diff --git a/sdk/storage/Azure.Storage.Blobs.ChangeFeed/samples/Azure.Storage.Blobs.ChangeFeed.Samples.Tests.csproj b/sdk/storage/Azure.Storage.Blobs.ChangeFeed/samples/Azure.Storage.Blobs.ChangeFeed.Samples.Tests.csproj index f9990a28230b..404a6aa0b19f 100644 --- a/sdk/storage/Azure.Storage.Blobs.ChangeFeed/samples/Azure.Storage.Blobs.ChangeFeed.Samples.Tests.csproj +++ b/sdk/storage/Azure.Storage.Blobs.ChangeFeed/samples/Azure.Storage.Blobs.ChangeFeed.Samples.Tests.csproj @@ -17,7 +17,7 @@ - + @@ -27,4 +27,4 @@ - \ No newline at end of file + diff --git a/sdk/storage/Azure.Storage.Blobs/samples/Azure.Storage.Blobs.Samples.Tests.csproj b/sdk/storage/Azure.Storage.Blobs/samples/Azure.Storage.Blobs.Samples.Tests.csproj index a3f5a9b16a70..cef761108ee3 100644 --- a/sdk/storage/Azure.Storage.Blobs/samples/Azure.Storage.Blobs.Samples.Tests.csproj +++ b/sdk/storage/Azure.Storage.Blobs/samples/Azure.Storage.Blobs.Samples.Tests.csproj @@ -18,7 +18,7 @@ - + @@ -28,4 +28,4 @@ - \ No newline at end of file + diff --git a/sdk/storage/Azure.Storage.Blobs/src/Azure.Storage.Blobs.csproj b/sdk/storage/Azure.Storage.Blobs/src/Azure.Storage.Blobs.csproj index 5c7b2610b6d9..b7dff2a1809a 100644 --- a/sdk/storage/Azure.Storage.Blobs/src/Azure.Storage.Blobs.csproj +++ b/sdk/storage/Azure.Storage.Blobs/src/Azure.Storage.Blobs.csproj @@ -32,7 +32,7 @@ - + diff --git a/sdk/storage/Azure.Storage.Common/samples/Azure.Storage.Common.Samples.Tests.csproj b/sdk/storage/Azure.Storage.Common/samples/Azure.Storage.Common.Samples.Tests.csproj index 29cfb206a9fa..be0ed02d2abb 100644 --- a/sdk/storage/Azure.Storage.Common/samples/Azure.Storage.Common.Samples.Tests.csproj +++ b/sdk/storage/Azure.Storage.Common/samples/Azure.Storage.Common.Samples.Tests.csproj @@ -20,7 +20,7 @@ - + @@ -30,4 +30,4 @@ - \ No newline at end of file + diff --git a/sdk/storage/Azure.Storage.Common/src/Azure.Storage.Common.csproj b/sdk/storage/Azure.Storage.Common/src/Azure.Storage.Common.csproj index 26cb1619e19b..cc3d345be83b 100644 --- a/sdk/storage/Azure.Storage.Common/src/Azure.Storage.Common.csproj +++ b/sdk/storage/Azure.Storage.Common/src/Azure.Storage.Common.csproj @@ -21,7 +21,7 @@ - + @@ -42,4 +42,4 @@ - \ No newline at end of file + diff --git a/sdk/storage/Azure.Storage.Files.DataLake/samples/Azure.Storage.Files.DataLake.Samples.Tests.csproj b/sdk/storage/Azure.Storage.Files.DataLake/samples/Azure.Storage.Files.DataLake.Samples.Tests.csproj index a24ed0607292..b9f7eb5a138e 100644 --- a/sdk/storage/Azure.Storage.Files.DataLake/samples/Azure.Storage.Files.DataLake.Samples.Tests.csproj +++ b/sdk/storage/Azure.Storage.Files.DataLake/samples/Azure.Storage.Files.DataLake.Samples.Tests.csproj @@ -17,7 +17,7 @@ - + @@ -27,4 +27,4 @@ - \ No newline at end of file + diff --git a/sdk/storage/Azure.Storage.Files.DataLake/src/Azure.Storage.Files.DataLake.csproj b/sdk/storage/Azure.Storage.Files.DataLake/src/Azure.Storage.Files.DataLake.csproj index 1abb61315f79..7c893e8e2b8a 100644 --- a/sdk/storage/Azure.Storage.Files.DataLake/src/Azure.Storage.Files.DataLake.csproj +++ b/sdk/storage/Azure.Storage.Files.DataLake/src/Azure.Storage.Files.DataLake.csproj @@ -30,7 +30,7 @@ - + @@ -70,4 +70,4 @@ - \ No newline at end of file + diff --git a/sdk/storage/Azure.Storage.Files.Shares/samples/Azure.Storage.Files.Shares.Samples.Tests.csproj b/sdk/storage/Azure.Storage.Files.Shares/samples/Azure.Storage.Files.Shares.Samples.Tests.csproj index deae88375ee2..6bcef8bee566 100644 --- a/sdk/storage/Azure.Storage.Files.Shares/samples/Azure.Storage.Files.Shares.Samples.Tests.csproj +++ b/sdk/storage/Azure.Storage.Files.Shares/samples/Azure.Storage.Files.Shares.Samples.Tests.csproj @@ -17,7 +17,7 @@ - + @@ -27,4 +27,4 @@ - \ No newline at end of file + diff --git a/sdk/storage/Azure.Storage.Files.Shares/src/Azure.Storage.Files.Shares.csproj b/sdk/storage/Azure.Storage.Files.Shares/src/Azure.Storage.Files.Shares.csproj index e998ed2ffc52..c39ace343a05 100644 --- a/sdk/storage/Azure.Storage.Files.Shares/src/Azure.Storage.Files.Shares.csproj +++ b/sdk/storage/Azure.Storage.Files.Shares/src/Azure.Storage.Files.Shares.csproj @@ -29,7 +29,7 @@ - + @@ -69,4 +69,4 @@ - \ No newline at end of file + diff --git a/sdk/storage/Azure.Storage.Queues/samples/Azure.Storage.Queues.Samples.Tests.csproj b/sdk/storage/Azure.Storage.Queues/samples/Azure.Storage.Queues.Samples.Tests.csproj index 27bfcca87139..cfe401234c03 100644 --- a/sdk/storage/Azure.Storage.Queues/samples/Azure.Storage.Queues.Samples.Tests.csproj +++ b/sdk/storage/Azure.Storage.Queues/samples/Azure.Storage.Queues.Samples.Tests.csproj @@ -17,7 +17,7 @@ - + @@ -27,4 +27,4 @@ - \ No newline at end of file + diff --git a/sdk/storage/Azure.Storage.Queues/src/Azure.Storage.Queues.csproj b/sdk/storage/Azure.Storage.Queues/src/Azure.Storage.Queues.csproj index 0934c04db157..3e27e4531cb2 100644 --- a/sdk/storage/Azure.Storage.Queues/src/Azure.Storage.Queues.csproj +++ b/sdk/storage/Azure.Storage.Queues/src/Azure.Storage.Queues.csproj @@ -29,7 +29,7 @@ - + @@ -58,4 +58,4 @@ - \ No newline at end of file + diff --git a/sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs/src/StorageBlobConverter{T}.cs b/sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs/src/StorageBlobConverter.cs similarity index 100% rename from sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs/src/StorageBlobConverter{T}.cs rename to sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs/src/StorageBlobConverter.cs diff --git a/sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Common/tests/ExpectManualCompletionLogger{TResult}.cs b/sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Common/tests/ExpectManualCompletionLogger.cs similarity index 100% rename from sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Common/tests/ExpectManualCompletionLogger{TResult}.cs rename to sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Common/tests/ExpectManualCompletionLogger.cs diff --git a/sdk/tables/Azure.Data.Tables/src/Azure.Data.Tables.csproj b/sdk/tables/Azure.Data.Tables/src/Azure.Data.Tables.csproj index ac3f50440658..80a68edfb1cf 100644 --- a/sdk/tables/Azure.Data.Tables/src/Azure.Data.Tables.csproj +++ b/sdk/tables/Azure.Data.Tables/src/Azure.Data.Tables.csproj @@ -16,7 +16,7 @@ - + diff --git a/sdk/tables/Azure.Data.Tables/src/Queryable/ReferenceEqualityComparer{T}.cs b/sdk/tables/Azure.Data.Tables/src/Queryable/ReferenceEqualityComparerOfT.cs similarity index 90% rename from sdk/tables/Azure.Data.Tables/src/Queryable/ReferenceEqualityComparer{T}.cs rename to sdk/tables/Azure.Data.Tables/src/Queryable/ReferenceEqualityComparerOfT.cs index 0ab50f7d587b..508a5c8bf73f 100644 --- a/sdk/tables/Azure.Data.Tables/src/Queryable/ReferenceEqualityComparer{T}.cs +++ b/sdk/tables/Azure.Data.Tables/src/Queryable/ReferenceEqualityComparerOfT.cs @@ -7,7 +7,9 @@ namespace Azure.Data.Tables.Queryable { +#pragma warning disable SA1649 // File name should match first type name internal sealed class ReferenceEqualityComparer : ReferenceEqualityComparer, IEqualityComparer +#pragma warning restore SA1649 // File name should match first type name { private static ReferenceEqualityComparer s_instance;