summaryrefslogtreecommitdiff
path: root/packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/CodeCoverage.targets
diff options
context:
space:
mode:
Diffstat (limited to 'packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/CodeCoverage.targets')
-rwxr-xr-xpackages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/CodeCoverage.targets171
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>