diff options
Diffstat (limited to '.packages/microsoft.dotnet.buildtools/3.0.0-preview4-04022-01/lib/CodeCoverage.targets')
-rwxr-xr-x | .packages/microsoft.dotnet.buildtools/3.0.0-preview4-04022-01/lib/CodeCoverage.targets | 259 |
1 files changed, 259 insertions, 0 deletions
diff --git a/.packages/microsoft.dotnet.buildtools/3.0.0-preview4-04022-01/lib/CodeCoverage.targets b/.packages/microsoft.dotnet.buildtools/3.0.0-preview4-04022-01/lib/CodeCoverage.targets new file mode 100755 index 0000000000..8d0f3576ed --- /dev/null +++ b/.packages/microsoft.dotnet.buildtools/3.0.0-preview4-04022-01/lib/CodeCoverage.targets @@ -0,0 +1,259 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + + <!-- + Code coverage package versions go here and in the test-runtime-packages.config + --> + <PropertyGroup> + <OpenCoverVersion>4.6.519</OpenCoverVersion> + <CoverletMsbuildVersion>2.3.0</CoverletMsbuildVersion> + <ReportGeneratorVersion>3.0.1</ReportGeneratorVersion> + <CoverallsUploaderVersion>1.4</CoverallsUploaderVersion> + </PropertyGroup> + + <!-- Coverage options --> + <PropertyGroup> + <CodeCoverageEnabled Condition="'$(CodeCoverageEnabled)' == '' and '$(SkipTests)' != 'true' and '$(Coverage)' == 'true' and '$(IsPerformanceTestProject)' != 'true'">true</CodeCoverageEnabled> + <CodeCoverageEnabled Condition="'$(CodeCoverageEnabled)' == ''">false</CodeCoverageEnabled> + <UseCoverlet Condition="'$(Coverage)' == 'true' and ('$(RunningOnUnix)' == 'true' or '$(UseCoverlet)' == 'true')">true</UseCoverlet> + <CoverageReportDir Condition="'$(CoverageReportDir)' == ''">$(TestWorkingDir)coverage\</CoverageReportDir> + + <UseCoverageDedicatedRuntime Condition="'$(UseCoverageDedicatedRuntime)' == ''">true</UseCoverageDedicatedRuntime> + <CoverageDedicatedRuntimeDir>$(TestHostRootPath)shared/Microsoft.NETCore.App/10.10.10</CoverageDedicatedRuntimeDir> + + <!-- This targets file has two modes one for individual projects and one for all --> + <GenerateCodeCoverageReportForAll Condition="'$(GenerateCodeCoverageReportForAll)'==''">false</GenerateCodeCoverageReportForAll> + <CoverageEnabledForProject Condition="'$(GenerateCodeCoverageReportForAll)'=='true'">false</CoverageEnabledForProject> + <CoverageEnabledForProject Condition="'$(CoverageEnabledForProject)'=='' and '$(IsTestProject)'=='true'">$(CodeCoverageEnabled)</CoverageEnabledForProject> + + <GenerateIndividualCoverageReport Condition="'$(BuildAllProjects)'!='true' and '$(CoverageEnabledForProject)'=='true'">true</GenerateIndividualCoverageReport> + <GenerateFullCoverageReport Condition="'$(GenerateCodeCoverageReportForAll)'=='true' and '$(CodeCoverageEnabled)'=='true' and '$(SkipFullCoverageReport)' != 'true'">true</GenerateFullCoverageReport> + <GenerateVisitedMethodsReport Condition="'$(GenerateCodeCoverageReportForAll)'=='true' and '$(CodeCoverageEnabled)'=='true' and '$(GenerateVisitedReport)' == 'true'">true</GenerateVisitedMethodsReport> + + <!-- + When coverage is enabled, we disallow building projects in parallel. + There appear to be issues with the OpenCover tool in these scenarios. + --> + <SerializeProjects Condition="'$(CodeCoverageEnabled)'=='true'">true</SerializeProjects> + </PropertyGroup> + + <!-- + We need to filter the data to only the assembly being tested. Otherwise we will gather tons of data about other assemblies. + If the code being tested is part of the runtime itself, it requires special treatment. + --> + <PropertyGroup Condition="'$(AssemblyBeingTestedName)'==''"> + <_ProjectDirectoryUnderSourceDir Condition="'$(IsTestProject)' == 'true'">$(MSBuildProjectDirectory.SubString($(SourceDir.Length)))</_ProjectDirectoryUnderSourceDir> + <AssemblyBeingTestedName Condition="'$(IsTestProject)' == 'true'">$(_ProjectDirectoryUnderSourceDir.SubString(0, $(_ProjectDirectoryUnderSourceDir.IndexOfAny("\\/"))))</AssemblyBeingTestedName> + </PropertyGroup> + + <PropertyGroup Condition="'$(GenerateFullCoverageReport)'=='true'"> + <GenerateFullCoverageReportAfterTargets Condition="'$(GenerateFullCoverageReportAfterTargets)'==''">TestAllProjects</GenerateFullCoverageReportAfterTargets> + </PropertyGroup> + + <PropertyGroup Condition="'$(UseCoverlet)'=='true'"> + <CoverletOutputFormat Condition="$(CoverletOutputFormat) == ''">opencover</CoverletOutputFormat> + <CoverletOutputDirectory Condition="$(CoverletOutputDirectory) == ''">$(CoverageReportDir)</CoverletOutputDirectory> + <CoverletOutputName Condition=" '$(CoverletOutputName)' == '' ">$(MSBuildProjectName).coverlet</CoverletOutputName> + <CoverletOutput>$([MSBuild]::EnsureTrailingSlash('$(CoverletOutputDirectory)'))$(CoverletOutputName).xml</CoverletOutput> + <CoverageOutputFilePath>$(CoverletOutput)</CoverageOutputFilePath> + <ExcludeByFile Condition="$(ExcludeByFile) == ''">$(SourceDir)Common/src/System/SR.*</ExcludeByFile> + <Threshold Condition="$(Threshold) == ''">0</Threshold> + <ThresholdType Condition="$(ThresholdType) == ''">line,branch,method</ThresholdType> + <CollectCoverage Condition="$(CollectCoverage) == ''">$(CodeCoverageEnabled)</CollectCoverage> + </PropertyGroup> + + <UsingTask Condition="'$(UseCoverlet)'=='true'" TaskName="Coverlet.MSbuild.Tasks.InstrumentationTask" AssemblyFile="$(PackagesDir)coverlet.msbuild/$(CoverletMsbuildVersion)/build/netstandard2.0/coverlet.msbuild.tasks.dll" /> + <UsingTask Condition="'$(UseCoverlet)'=='true'" TaskName="Coverlet.MSbuild.Tasks.CoverageResultTask" AssemblyFile="$(PackagesDir)coverlet.msbuild/$(CoverletMsbuildVersion)/build/netstandard2.0/coverlet.msbuild.tasks.dll" /> + + <Target Condition="'$(UseCoverlet)'=='true'" Name="GenerateCoverageResult" AfterTargets="$(GenerateIndividualCoverageReportAfterTargets)"> + <Coverlet.MSbuild.Tasks.CoverageResultTask + Condition="'$(CollectCoverage)' == 'true'" + Output="$(CoverletOutput)" + OutputFormat="$(CoverletOutputFormat)" + Threshold="$(Threshold)" + ThresholdType="$(ThresholdType)" /> + </Target> + + <Target Name="CreateCoverageFilter" BeforeTargets="GenerateTestExecutionScripts"> + <!-- By default, code coverage data is only gathered for the assembly being tested. + CodeCoverageAssemblies can be passed in to the build to gather coverage on additional assemblies. --> + <ItemGroup> + <_CodeCoverageAssemblies Include="$(AssemblyBeingTestedName)" /> + <_CodeCoverageAssemblies Include="System.Private.CoreLib" Condition="'$(TestRuntime)' == 'true' and ('$(TargetGroup)' == 'netcoreapp' or '$(TargetGroup)' == 'netstandard')" /> + <_CodeCoverageAssemblies Include="@(AdditionalCodeCoverageAssemblies)" /> + <_CodeCoverageAssemblies Include="$(CodeCoverageAssemblies)" Condition="'$(CodeCoverageAssemblies)' != ''" /> + </ItemGroup> + <PropertyGroup> + <CoverageFilter Condition="'$(UseCoverlet)'!='true'">@(_CodeCoverageAssemblies->'+[%(Identity)]*', ' ')</CoverageFilter> + <CoverageFilter Condition="'$(UseCoverlet)'=='true'">@(_CodeCoverageAssemblies->'[%(Identity)]*', ',')</CoverageFilter> + <CoverageFilter Condition="'$(CodeCoverageAssemblies)' == 'all'">[*]*</CoverageFilter> + </PropertyGroup> + </Target> + + <Target Name="CreateCoverageDedicatedRuntime" + BeforeTargets="GenerateTestExecutionScripts" + Condition="'$(CodeCoverageEnabled)'=='true' and '$(UseCoverageDedicatedRuntime)'=='true'"> + <PropertyGroup> + </PropertyGroup> + <ItemGroup> + <_RuntimeFiles Include="$(NETCoreAppTestSharedFrameworkPath)/*.*" /> + <RuntimeFiles Include="%(_RuntimeFiles.Identity)" Condition="!Exists('$(NETCoreAppTestSharedFrameworkPath)il/%(Filename)%(Extension)')" /> + <RuntimeFiles Include="$(NETCoreAppTestSharedFrameworkPath)il/*.*" /> + <RuntimeFilesAmd64 Include="$(NETCoreAppTestSharedFrameworkPath)amd64/*.*" /> + <RuntimeFilesx86 Include="$(NETCoreAppTestSharedFrameworkPath)x86/*.*" /> + </ItemGroup> + <Copy SourceFiles="@(RuntimeFiles)" + DestinationFolder="$(CoverageDedicatedRuntimeDir)" + SkipUnchangedFiles="true" + UseHardlinksIfPossible="false" /> + <Copy SourceFiles="@(RuntimeFilesAmd64)" + DestinationFolder="$(CoverageDedicatedRuntimeDir)/amd64/" + SkipUnchangedFiles="true" + UseHardlinksIfPossible="false" /> + <Copy SourceFiles="@(RuntimeFilesx86)" + DestinationFolder="$(CoverageDedicatedRuntimeDir)/x86/" + SkipUnchangedFiles="true" + UseHardlinksIfPossible="false" /> + </Target> + + <!-- *********************************************************************************************** --> + <!-- As of 10/2017 OpenCover does not support portable PDBs, but we want the builds to generate + portable PDBs. Thus we generate windows PDBs from portable PDBs here. Can be removed + when OpenCover directly supports Portable PDBs (probably by early 2018) --> + + <Choose> + <When Condition="'$(UseCoverageDedicatedRuntime)'=='true'"> + <PropertyGroup> + <CoverageRuntimeDir>$(CoverageDedicatedRuntimeDir)</CoverageRuntimeDir> + </PropertyGroup> + </When> + <Otherwise> + <PropertyGroup> + <CoverageRuntimeDir>$(NETCoreAppTestSharedFrameworkPath)</CoverageRuntimeDir> + </PropertyGroup> + </Otherwise> + </Choose> + + <Target Name="GenerateWindowsPdbsForAssemblyBeingTested" + BeforeTargets="GenerateTestExecutionScripts" + Condition="'$(CodeCoverageEnabled)' == 'true' and '$(TargetOS)'=='Windows_NT' and '$(UseCoverlet)'!='true'"> + + <!-- We look for the DLL being tested for coverage and its PDB create a WindowsPDB\*.pdb which has + the windows PDB. --> + <ItemGroup> + <CandidateAssemblies Include="@(_CodeCoverageAssemblies -> '$(CoverageRuntimeDir)/%(Identity)')" /> + + <ExistingPortableDllsToConvert + Include="@(CandidateAssemblies -> '%(Identity).dll' )" + Condition="Exists('%(CandidateAssemblies.Identity).dll') AND Exists('%(CandidateAssemblies.Identity).pdb')"> + <PdbPath>%(Identity).pdb</PdbPath> + <TargetPath>%(RootDir)/%(Directory)WindowsPDB/%(Filename)%(Extension).pdb</TargetPath> + </ExistingPortableDllsToConvert> + </ItemGroup> + + <!-- There are two file in CoreFX, (System.Security.Permissions and Microsoft.Win32.Registry.AccessControl.pdb) + are generated by the GenFacades task and lack a Debug diretory (see https://github.com/dotnet/buildtools/issues/1739) + This causes ConvertPortablePdbsToWindowsPdbs to fail. Work around it right now by using WarnAndContinue + Soon we won't need this code, (since OpenCover will support portable PDBs) so it is OK to just give up for now. --> + <ConvertPortablePdbsToWindowsPdbs Files="@(ExistingPortableDllsToConvert)" ContinueOnError="WarnAndContinue"/> + + <!-- This is a work around because it seems that OpenCover does not seem to accept the PDB unless + it is right next to the DLL it is for. (-searchDir:XXX does not seem to work). + This code puts next to the DLL as a work-around. However doing thi also clobbers + the original portable PDB in the runtime directory in the process. I don't like this but + it does unblock things and this is all intended to be temporary until OpenCover supports + portable PDBs directly --> + <Message Importance="high" Text="Replacing Portable PDB with Windows Pdb in place!" /> + <Copy SourceFiles="%(ExistingPortableDllsToConvert.TargetPath)" DestinationFolder="$(CoverageRuntimeDir)" Condition="Exists('%(ExistingPortableDllsToConvert.TargetPath)')"/> + </Target> + <!-- *********************************************************************************************** --> + + <Target Name="InstrumentModulesAfterBuild" BeforeTargets="GenerateTestExecutionScripts" Condition="'$(UseCoverlet)'=='true'"> + <Coverlet.MSbuild.Tasks.InstrumentationTask + Condition="'$(CollectCoverage)' == 'true'" + Include="$(CoverageFilter)" + ExcludeByFile="$(ExcludeByFile)" + Path="$(CoverageRuntimeDir)/" /> + </Target> + + <!-- xUnit command line with coverage enabled using OpenCover --> + <PropertyGroup Condition="'$(CoverageEnabledForProject)'=='true' and '$(UseCoverlet)'!='true'"> + <CoverageHost>$(PackagesDir)OpenCover\$(OpenCoverVersion)\tools\OpenCover.Console.exe</CoverageHost> + <CoverageOutputFilePath>$(CoverageReportDir)$(MSBuildProjectName).coverage.xml</CoverageOutputFilePath> + <CoverageOptions>-oldStyle -filter:"{CoverageFilter}" -excludebyfile:"*\Common\src\System\SR.*" -nodefaultfilters -excludebyattribute:*.ExcludeFromCodeCoverage* -skipautoprops -hideskipped:All -threshold:1</CoverageOptions> + <CoverageCommandLine>$(CoverageOptions) -returntargetcode -register:user -target:$(TestProgram) -output:$(CoverageOutputFilePath)</CoverageCommandLine> + <TestCommandLine>$(CoverageHost) $(CoverageCommandLine) -targetargs:"$(TestArguments) {XunitTraitOptions} -notrait Benchmark=true"</TestCommandLine> + </PropertyGroup> + + <!-- Report Generator Properties --> + <PropertyGroup> + <CoverageReportAssemblyFilters Condition="'$(CodeCoverageAssemblies)' != 'all'">"-assemblyfilters:@(_CodeCoverageAssemblies->'+%(Identity)', ';')"</CoverageReportAssemblyFilters> + <CoverageReportGeneratorOptions>-targetdir:$(CoverageReportDir) "-reporttypes:Html;Badges" $(CoverageReportAssemblyFilters)</CoverageReportGeneratorOptions> + <CoverageReportTool>$(PackagesDir)ReportGenerator\$(ReportGeneratorVersion)\tools\ReportGenerator.exe</CoverageReportTool> + <CoverageReportTool Condition="'$(RunningOnUnix)' == 'true'">reportgenerator</CoverageReportTool> + <CoverageReportGeneratorCommandLine>$(CoverageReportTool) $(CoverageReportGeneratorOptions)</CoverageReportGeneratorCommandLine> + <CoverageInputFilter>*.coverage.xml</CoverageInputFilter> + <CoverageInputFilter Condition="'$(UseCoverlet)'=='true'">*.coverlet.xml</CoverageInputFilter> + </PropertyGroup> + + <PropertyGroup Condition="'$(GenerateIndividualCoverageReport)'=='true'"> + <GenerateIndividualCoverageReportAfterTargets Condition="'$(GenerateIndividualCoverageReportAfterTargets)'==''">RunTestsForProject</GenerateIndividualCoverageReportAfterTargets> + </PropertyGroup> + + <!-- Generate coverage reports for individual projects. --> + <Target Name="GenerateIndividualCoverageReport" + AfterTargets="$(GenerateIndividualCoverageReportAfterTargets)" + Inputs="$(CoverageOutputFilePath)" + Outputs="$(CoverageReportDir)index.htm" + Condition="'$(GenerateIndividualCoverageReport)'=='true'"> + + <Exec Command="$(CoverageReportGeneratorCommandLine) -reports:$(CoverageOutputFilePath)" + ContinueOnError="ErrorAndContinue" /> + + <Exec Command="start $(CoverageReportDir)index.htm" + Condition="'$(PopCoverageReport)' == 'true'" /> + + </Target> + + <!-- Generate coverage report for all the projects. --> + <Target Name="GenerateFullCoverageReport" + AfterTargets="$(GenerateFullCoverageReportAfterTargets)" + Inputs="$(CoverageReportDir)\$(CoverageInputFilter)" + Outputs="$(CoverageReportDir)index.htm" + Condition="'$(GenerateFullCoverageReport)'=='true'"> + + <Exec Command="$(CoverageReportGeneratorCommandLine) -reports:$(CoverageReportDir)\$(CoverageInputFilter)" + ContinueOnError="ErrorAndContinue" + WorkingDirectory="$(ProjectDir)" /> + + <Exec Command="start $(CoverageReportDir)index.htm" + Condition="'$(PopCoverageReport)' == 'true'" /> + + <PropertyGroup> + <CoverallsUploaderCommandLine>$(PackagesDir)coveralls.io.$(CoverallsUploaderVersion)\tools\coveralls.net.exe</CoverallsUploaderCommandLine> + <CoverallsUploaderOptions>--opencover $(CoverageReportDir)\$(CoverageInputFilter) --repo-token $(CoverallsToken)</CoverallsUploaderOptions> + </PropertyGroup> + + <Exec Command="$(CoverallsUploaderCommandLine) $(CoverallsUploaderOptions)" + ContinueOnError="ErrorAndContinue" + WorkingDirectory="$(ProjectDir)" + Condition="'$(UploadCoverallsData)'=='true'" /> + + </Target> + + <UsingTask TaskName="ParseTestCoverageInfo" AssemblyFile="$(BuildToolsTaskDir)Microsoft.DotNet.Build.Tasks.dll"/> + + <!-- Generates VisitedMethodsReport.xml --> + <Target Name="GenerateVisitedReport" + AfterTargets="Test" + Condition="'$(GenerateVisitedMethodsReport)' == 'true'" + Inputs="$(CoverageReportDir)$(CoverageInputFilter)" + Outputs="$(CoverageReportDir)\VisitedMethodsReport.xml"> + <ItemGroup> + <Reports Include="$(CoverageReportDir)$(CoverageInputFilter)"/> + </ItemGroup> + <ParseTestCoverageInfo CoverageReports="@(Reports)" + OutputReport="$(CoverageReportDir)\VisitedMethodsReport.xml"/> + </Target> + +</Project> |