diff options
Diffstat (limited to 'packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/CodeCoverage.targets')
-rwxr-xr-x | packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/CodeCoverage.targets | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/CodeCoverage.targets b/packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/CodeCoverage.targets new file mode 100755 index 0000000000..b680c638a0 --- /dev/null +++ b/packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/CodeCoverage.targets @@ -0,0 +1,171 @@ +<?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> + <ReportGeneratorVersion>3.0.1</ReportGeneratorVersion> + <CoverallsUploaderVersion>1.4</CoverallsUploaderVersion> + </PropertyGroup> + + <!-- Coverage options --> + <PropertyGroup> + <CodeCoverageEnabled>false</CodeCoverageEnabled> + <CodeCoverageEnabled Condition="'$(SkipTests)' != 'true' and '$(RunningOnUnix)' != 'true' and '$(Coverage)' == 'true' and '$(Performance)' != 'true'">true</CodeCoverageEnabled> + <CoverageReportDir Condition="'$(CoverageReportDir)' == ''">$(TestWorkingDir)coverage\</CoverageReportDir> + + <!-- 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> + + <!-- We need to filter the data to only the assembly being tested. Otherwise we will gather tons of data about other assemblies. --> + <_ProjectDirectoryUnderSourceDir Condition="'$(IsTestProject)' == 'true'">$(MSBuildProjectDirectory.SubString($(SourceDir.Length)))</_ProjectDirectoryUnderSourceDir> + <AssemblyBeingTestedName Condition="'$(IsTestProject)' == 'true'">$(_ProjectDirectoryUnderSourceDir.SubString(0, $(_ProjectDirectoryUnderSourceDir.IndexOfAny("\\/"))))</AssemblyBeingTestedName> + + <!-- + 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> + + <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="@(AdditionalCodeCoverageAssemblies)" /> + <_CodeCoverageAssemblies Include="$(CodeCoverageAssemblies)" Condition="'$(CodeCoverageAssemblies)' != ''" /> + </ItemGroup> + <PropertyGroup> + <CoverageFilter>@(_CodeCoverageAssemblies->'+[%(Identity)]*', ' ')</CoverageFilter> + <CoverageFilter Condition="'$(CodeCoverageAssemblies)' == 'all'">[*]*</CoverageFilter> + </PropertyGroup> + </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) --> + + <Target Name="GenerateWindowsPdbsForAssemblyBeingTested" + BeforeTargets="GenerateTestExecutionScripts" + Condition="'$(CodeCoverageEnabled)' == 'true' and '$(TargetOS)'=='Windows_NT'"> + + <!-- We look for the DLL being tested for coverage and its PDB create a WindowsPDB\*.pdb which has + the windows PDB. --> + <ItemGroup> + <PortableDllsToConvert Include="$(NETCoreAppTestSharedFrameworkPath)$(AssemblyBeingTestedName).dll"> + <PdbPath>$(NETCoreAppTestSharedFrameworkPath)$(AssemblyBeingTestedName).pdb</PdbPath> + <TargetPath>$(NETCoreAppTestSharedFrameworkPath)WindowsPDB/$(AssemblyBeingTestedName).pdb</TargetPath> + </PortableDllsToConvert> + + <ExistingPortableDllsToConvert Include="@(PortableDllsToConvert)" Condition="Exists('%(PortableDllsToConvert.Identity)') AND Exists('%(PortableDllsToConvert.PdbPath)')"/> + </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="$(NETCoreAppTestSharedFrameworkPath)" Condition="Exists('%(ExistingPortableDllsToConvert.TargetPath)')"/> + </Target> + <!-- *********************************************************************************************** --> + + <!-- xUnit command line with coverage enabled --> + <PropertyGroup Condition="'$(CoverageEnabledForProject)'=='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> + <TestHost>$(CoverageHost)</TestHost> + <TestCommandLine>$(TestHost) $(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> + <CoverageReportGeneratorCommandLine>$(PackagesDir)ReportGenerator\$(ReportGeneratorVersion)\tools\ReportGenerator.exe $(CoverageReportGeneratorOptions)</CoverageReportGeneratorCommandLine> + </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> + + <PropertyGroup Condition="'$(GenerateFullCoverageReport)'=='true'"> + <GenerateFullCoverageReportAfterTargets Condition="'$(GenerateFullCoverageReportAfterTargets)'==''">TestAllProjects</GenerateFullCoverageReportAfterTargets> + </PropertyGroup> + + <!-- Generate coverage report for all the projects. --> + <Target Name="GenerateFullCoverageReport" + AfterTargets="$(GenerateFullCoverageReportAfterTargets)" + Inputs="$(CoverageReportDir)\*.coverage.xml" + Outputs="$(CoverageReportDir)index.htm" + Condition="'$(GenerateFullCoverageReport)'=='true'"> + + <Exec Command="$(CoverageReportGeneratorCommandLine) -reports:$(CoverageReportDir)\*.coverage.xml" + 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)\*.coverage.xml --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)*.coverage.xml" + Outputs="$(CoverageReportDir)\VisitedMethodsReport.xml"> + <ItemGroup> + <Reports Include="$(CoverageReportDir)*.coverage.xml"/> + </ItemGroup> + <ParseTestCoverageInfo CoverageReports="@(Reports)" + OutputReport="$(CoverageReportDir)\VisitedMethodsReport.xml"/> + </Target> + +</Project> |