From 5814c2d74ff1564f71e6ab4e6eb33fc68d1ad982 Mon Sep 17 00:00:00 2001 From: Thang Nguyen Cong Date: Fri, 3 Aug 2018 19:02:45 +0200 Subject: [PATCH 1/5] porting DotCover module --- .../Fake.DotNet.Testing.DotCover.fsproj | 11 + Fake.sln | 17 +- .../AssemblyInfo.fs | 17 + .../Fake.DotNet.Testing.DotCover/DotCover.fs | 334 ++++++++++++++++++ .../Fake.DotNet.Testing.DotCover.fsproj | 26 ++ .../paket.references | 4 + src/app/Fake.DotNet.Testing.MSpec/MSpec.fs | 3 +- src/app/Fake.DotNet.Testing.NUnit/Common.fs | 3 +- src/app/Fake.DotNet.Testing.NUnit/NUnit3.fs | 3 +- src/app/Fake.DotNet.Testing.XUnit2/XUnit2.fs | 3 +- src/legacy/FakeLib/FakeLib.fsproj | 3 + 11 files changed, 419 insertions(+), 5 deletions(-) create mode 100644 Fake.DotNet.Testing.DotCover/Fake.DotNet.Testing.DotCover.fsproj create mode 100644 src/app/Fake.DotNet.Testing.DotCover/AssemblyInfo.fs create mode 100644 src/app/Fake.DotNet.Testing.DotCover/DotCover.fs create mode 100644 src/app/Fake.DotNet.Testing.DotCover/Fake.DotNet.Testing.DotCover.fsproj create mode 100644 src/app/Fake.DotNet.Testing.DotCover/paket.references diff --git a/Fake.DotNet.Testing.DotCover/Fake.DotNet.Testing.DotCover.fsproj b/Fake.DotNet.Testing.DotCover/Fake.DotNet.Testing.DotCover.fsproj new file mode 100644 index 00000000000..55736612a5d --- /dev/null +++ b/Fake.DotNet.Testing.DotCover/Fake.DotNet.Testing.DotCover.fsproj @@ -0,0 +1,11 @@ + + + + netstandard2.0 + + + + + + + diff --git a/Fake.sln b/Fake.sln index 5341f9cdc88..7ad272b3ff6 100644 --- a/Fake.sln +++ b/Fake.sln @@ -162,7 +162,9 @@ Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Fake.Core.UserInput", "src\ EndProject Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Fake.DotNet.Testing.VSTest", "src\app\Fake.DotNet.Testing.VSTest\Fake.DotNet.Testing.VSTest.fsproj", "{C4C9D7EE-6A52-42F1-9E04-7C44F0EA8922}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fake.Tools.Rsync", "src\app\Fake.Tools.Rsync\Fake.Tools.Rsync.fsproj", "{26367457-80C0-44C9-9020-56F4013C13E1}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Fake.Tools.Rsync", "src\app\Fake.Tools.Rsync\Fake.Tools.Rsync.fsproj", "{26367457-80C0-44C9-9020-56F4013C13E1}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Fake.DotNet.Testing.DotCover", "src\app\Fake.DotNet.Testing.DotCover\Fake.DotNet.Testing.DotCover.fsproj", "{E656E3E2-18D2-4D8E-935C-200DB00E1F19}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -1014,6 +1016,18 @@ Global {26367457-80C0-44C9-9020-56F4013C13E1}.Release|x64.Build.0 = Release|Any CPU {26367457-80C0-44C9-9020-56F4013C13E1}.Release|x86.ActiveCfg = Release|Any CPU {26367457-80C0-44C9-9020-56F4013C13E1}.Release|x86.Build.0 = Release|Any CPU + {E656E3E2-18D2-4D8E-935C-200DB00E1F19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E656E3E2-18D2-4D8E-935C-200DB00E1F19}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E656E3E2-18D2-4D8E-935C-200DB00E1F19}.Debug|x64.ActiveCfg = Debug|Any CPU + {E656E3E2-18D2-4D8E-935C-200DB00E1F19}.Debug|x64.Build.0 = Debug|Any CPU + {E656E3E2-18D2-4D8E-935C-200DB00E1F19}.Debug|x86.ActiveCfg = Debug|Any CPU + {E656E3E2-18D2-4D8E-935C-200DB00E1F19}.Debug|x86.Build.0 = Debug|Any CPU + {E656E3E2-18D2-4D8E-935C-200DB00E1F19}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E656E3E2-18D2-4D8E-935C-200DB00E1F19}.Release|Any CPU.Build.0 = Release|Any CPU + {E656E3E2-18D2-4D8E-935C-200DB00E1F19}.Release|x64.ActiveCfg = Release|Any CPU + {E656E3E2-18D2-4D8E-935C-200DB00E1F19}.Release|x64.Build.0 = Release|Any CPU + {E656E3E2-18D2-4D8E-935C-200DB00E1F19}.Release|x86.ActiveCfg = Release|Any CPU + {E656E3E2-18D2-4D8E-935C-200DB00E1F19}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1091,6 +1105,7 @@ Global {3B0A5EE3-6696-4EBA-BCF9-8136C7F17040} = {7BFFAE76-DEE9-417A-A79B-6A6644C4553A} {C4C9D7EE-6A52-42F1-9E04-7C44F0EA8922} = {7BFFAE76-DEE9-417A-A79B-6A6644C4553A} {26367457-80C0-44C9-9020-56F4013C13E1} = {901F162F-8925-4390-89C5-9EE2C343F744} + {E656E3E2-18D2-4D8E-935C-200DB00E1F19} = {7BFFAE76-DEE9-417A-A79B-6A6644C4553A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {058A0C5E-2216-4306-8AFB-0AE28320C26A} diff --git a/src/app/Fake.DotNet.Testing.DotCover/AssemblyInfo.fs b/src/app/Fake.DotNet.Testing.DotCover/AssemblyInfo.fs new file mode 100644 index 00000000000..3f852cd9fd5 --- /dev/null +++ b/src/app/Fake.DotNet.Testing.DotCover/AssemblyInfo.fs @@ -0,0 +1,17 @@ +// Auto-Generated by FAKE; do not edit +namespace System +open System.Reflection + +[] +[] +[] +[] +[] +do () + +module internal AssemblyVersionInformation = + let [] AssemblyTitle = "FAKE - F# Make Code coverage with DotCover" + let [] AssemblyProduct = "FAKE - F# Make" + let [] AssemblyVersion = "5.0.0" + let [] AssemblyInformationalVersion = "5.0.0-beta025" + let [] AssemblyFileVersion = "5.0.0" diff --git a/src/app/Fake.DotNet.Testing.DotCover/DotCover.fs b/src/app/Fake.DotNet.Testing.DotCover/DotCover.fs new file mode 100644 index 00000000000..87ceaba3247 --- /dev/null +++ b/src/app/Fake.DotNet.Testing.DotCover/DotCover.fs @@ -0,0 +1,334 @@ +/// Contains a task which can be used to run [DotCover](http://www.jetbrains.com/dotcover/) on .NET assemblies. +[] +module Fake.DotNet.Testing.DotCover + +open System +open System.IO +open System.Text +open Fake +open Fake.Core +open Fake.IO.FileSystemOperators +open Fake.IO.Globbing +open Fake.Testing.Common +open Fake.DotNet.Testing.MSTest +open Fake.DotNet.Testing.MSpec +open Fake.DotNet.Testing.NUnit3 +open Fake.DotNet.Testing.XUnit2 + +type DotCoverReportType = + | Html = 0 + | Json = 1 + | Xml = 2 + | NDependXml = 3 + +/// The dotCover parameter type for running coverage +[] +type DotCoverParams = + { ToolPath: string + WorkingDir: string + TargetExecutable: string + TargetArguments: string + TargetWorkingDir: string + Output: string + Filters: string + ErrorLevel: TestRunnerErrorLevel + AttributeFilters: string + CustomParameters: string } + +/// The dotCover default parameters +let internal DotCoverDefaults = + { ToolPath = Fake.IO.Globbing.Tools.findToolInSubPath "dotCover.exe" ((Path.GetFullPath ".") @@ "tools" @@ "DotCover") + WorkingDir = "" + TargetExecutable = "" + TargetArguments = "" + TargetWorkingDir = "" + Filters = "" + AttributeFilters = "" + Output = "dotCoverSnapshot.dcvr" + CustomParameters = "" + ErrorLevel = ErrorLevel.Error} + +[] +type DotCoverMergeParams = + { ToolPath: string + WorkingDir: string + Source: string list + Output: string + TempDir: string + CustomParameters: string } + +let internal DotCoverMergeDefaults = + { ToolPath = Fake.IO.Globbing.Tools.findToolInSubPath "dotCover.exe" ((Path.GetFullPath ".") @@ "tools" @@ "DotCover") + WorkingDir = "" + Source = [] + Output = "dotCoverSnapshot.dcvr" + TempDir = "" + CustomParameters = "" } + +[] +type DotCoverReportParams = + { ToolPath: string + WorkingDir: string + Source: string + Output: string + ReportType: DotCoverReportType + CustomParameters: string } + +let internal DotCoverReportDefaults : DotCoverReportParams = + { ToolPath = Fake.IO.Globbing.Tools.findToolInSubPath "dotCover.exe" ((Path.GetFullPath ".") @@ "tools" @@ "DotCover") + WorkingDir = "" + Source = "" + Output = "dotCoverReport.xml" + ReportType = DotCoverReportType.Xml + CustomParameters = "" } + +let internal buildDotCoverArgs parameters = + new StringBuilder() + |> StringBuilder.append "cover" + |> StringBuilder.appendIfNotNullOrEmpty parameters.TargetExecutable "/TargetExecutable=" + |> StringBuilder.appendIfNotNullOrEmpty (parameters.TargetArguments.Trim()) "/TargetArguments=" + |> StringBuilder.appendIfNotNullOrEmpty parameters.TargetWorkingDir "/TargetWorkingDir=" + |> StringBuilder.appendIfNotNullOrEmpty parameters.Filters "/Filters=" + |> StringBuilder.appendIfNotNullOrEmpty parameters.AttributeFilters "/AttributeFilters=" + |> StringBuilder.appendIfNotNullOrEmpty parameters.Output "/Output=" + |> StringBuilder.appendWithoutQuotes parameters.CustomParameters + |> StringBuilder.toText + +let internal buildDotCoverMergeArgs (parameters:DotCoverMergeParams) = + new StringBuilder() + |> StringBuilder.append "merge" + |> StringBuilder.appendIfNotNullOrEmpty (parameters.Source |> String.concat ";") "/Source=" + |> StringBuilder.appendIfNotNullOrEmpty parameters.Output "/Output=" + |> StringBuilder.appendIfNotNullOrEmpty parameters.TempDir "/TempDir=" + |> StringBuilder.appendWithoutQuotes parameters.CustomParameters + |> StringBuilder.toText + +let internal buildDotCoverReportArgs parameters = + new StringBuilder() + |> StringBuilder.append "report" + |> StringBuilder.appendIfNotNullOrEmpty parameters.Source "/Source=" + |> StringBuilder.appendIfNotNullOrEmpty parameters.Output "/Output=" + |> StringBuilder.appendIfNotNullOrEmpty (parameters.ReportType.ToString()) "/ReportType=" + |> StringBuilder.appendWithoutQuotes parameters.CustomParameters + |> StringBuilder.toText + + +let internal getWorkingDir workingDir = + Seq.find String.isNotNullOrEmpty [workingDir; Fake.Core.Environment.environVar("teamcity.build.workingDir"); "."] + |> Path.GetFullPath + +let internal buildParamsAndExecute parameters buildArguments toolPath workingDir failBuild = + let args = buildArguments parameters + Trace.trace (toolPath + " " + args) + let result = Fake.Core.Process.execSimple (fun info -> + {info with + FileName = toolPath + WorkingDirectory = getWorkingDir workingDir + Arguments = args + }) + TimeSpan.MaxValue + let ExitCodeForFailedTests = -3 + if (result = ExitCodeForFailedTests && not failBuild) then + Trace.trace (sprintf "DotCover %s exited with errorcode %d" toolPath result) + else if (result = ExitCodeForFailedTests && failBuild) then + failwithf "Failing tests, use ErrorLevel.DontFailBuild to ignore failing tests. Exited %s with errorcode %d" toolPath result + else if (result <> 0) then + failwithf "Error running %s with exitcode %d" toolPath result + else + Trace.trace (sprintf "DotCover exited successfully") + +/// Runs the dotCover "cover" command, using a target executable (such as NUnit or MSpec) and generates a snapshot file. +/// +/// ## Parameters +/// +/// - `setParams` - Function used to overwrite the dotCover default parameters. +let DotCover (setParams: DotCoverParams -> DotCoverParams) = + let parameters = (DotCoverDefaults |> setParams) + buildParamsAndExecute parameters buildDotCoverArgs parameters.ToolPath parameters.WorkingDir (parameters.ErrorLevel <> ErrorLevel.DontFailBuild) + +/// Runs the dotCover "merge" command. This combines dotCover snaphots into a single +/// snapshot, enabling you to merge test coverage from multiple test running frameworks +/// ## Parameters +/// +/// - `setParams` - Function used to overwrite the dotCover merge default parameters. +/// +/// ## Sample +/// +/// DotCoverMerge (fun p -> { p with +/// Source = [artifactsDir @@ "NUnitDotCoverSnapshot.dcvr" +/// artifactsDir @@ "MSpecDotCoverSnapshot.dcvr"] +/// Output = artifactsDir @@ "dotCoverSnapshot.dcvr" }) +let DotCoverMerge (setParams: DotCoverMergeParams -> DotCoverMergeParams) = + let parameters = (DotCoverMergeDefaults |> setParams) + buildParamsAndExecute parameters buildDotCoverMergeArgs parameters.ToolPath parameters.WorkingDir false + +/// Runs the dotCover "report" command. This generates a report from a dotCover snapshot +/// ## Parameters +/// +/// - `setParams` - Function used to overwrite the dotCover report default parameters. +/// +/// ## Sample +/// +/// DotCoverReport (fun p -> { p with +/// Source = artifactsDir @@ "dotCoverSnapshot.dcvr" +/// Output = artifactsDir @@ "dotCoverReport.xml" +/// ReportType = DotCoverReportType.Xml }) +let DotCoverReport (setParams: DotCoverReportParams -> DotCoverReportParams) = + let parameters = (DotCoverReportDefaults |> setParams) + buildParamsAndExecute parameters buildDotCoverReportArgs parameters.ToolPath parameters.WorkingDir + +/// Runs the dotCover "cover" command against the NUnit test runner. +/// ## Parameters +/// +/// - `setDotCoverParams` - Function used to overwrite the dotCover report default parameters. +/// - `setNUnitParams` - Function used to overwrite the NUnit default parameters. +/// +/// ## Sample +/// +/// !! (buildDir @@ buildMode @@ "/*.Unit.Tests.dll") +/// |> DotCoverNUnit +/// (fun dotCoverOptions -> { dotCoverOptions with +/// Output = artifactsDir @@ "NUnitDotCoverSnapshot.dcvr" }) +/// (fun nUnitOptions -> { nUnitOptions with +/// DisableShadowCopy = true }) +let DotCoverNUnit (setDotCoverParams: DotCoverParams -> DotCoverParams) (setNUnitParams: NUnit.Common.NUnitParams -> NUnit.Common.NUnitParams) (assemblies: string seq) = + let assemblies = assemblies |> Seq.toArray + let details = assemblies |> String.separated ", " + use __ = Trace.traceTask "DotCoverNUnit" details + + let parameters = NUnit.Common.NUnitDefaults |> setNUnitParams + let args = NUnit.Common.buildNUnitdArgs parameters assemblies + + DotCover (fun p -> + {p with + TargetExecutable = parameters.ToolPath @@ parameters.ToolName + TargetArguments = args + } |> setDotCoverParams) + +/// Runs the dotCover "cover" command against the NUnit test runner. +/// ## Parameters +/// +/// - `setDotCoverParams` - Function used to overwrite the dotCover report default parameters. +/// - `setNUnitParams` - Function used to overwrite the NUnit default parameters. +/// +/// ## Sample +/// +/// !! (buildDir @@ buildMode @@ "/*.Unit.Tests.dll") +/// |> DotCoverNUnit +/// (fun dotCoverOptions -> { dotCoverOptions with +/// Output = artifactsDir @@ "NUnitDotCoverSnapshot.dcvr" }) +/// (fun nUnitOptions -> { nUnitOptions with +/// DisableShadowCopy = true }) +let DotCoverNUnit3 (setDotCoverParams: DotCoverParams -> DotCoverParams) (setNUnitParams: NUnit3Params -> NUnit3Params) (assemblies: string seq) = + let assemblies = assemblies |> Seq.toArray + let details = assemblies |> String.separated ", " + use __ = Trace.traceTask "DotCoverNUnit3" details + + let parameters = NUnit3Defaults |> setNUnitParams + let args = NUnit3.buildNUnit3Args parameters assemblies + + DotCover (fun p -> + {p with + TargetExecutable = parameters.ToolPath + TargetArguments = args + } |> setDotCoverParams) + +/// Runs the dotCover "cover" command against the XUnit2 test runner. +/// ## Parameters +/// +/// - `setDotCoverParams` - Function used to overwrite the dotCover report default parameters. +/// - `setXUnit2Params` - Function used to overwrite the XUnit2 default parameters. +/// +/// ## Sample +/// +/// !! (buildDir @@ buildMode @@ "/*.Unit.Tests.dll") +/// |> DotCoverXUnit2 +/// (fun -> dotCoverOptions ) +/// (fun nUnitOptions -> nUnitOptions) +let DotCoverXUnit2 (setDotCoverParams: DotCoverParams -> DotCoverParams) (setXUnit2Params: XUnit2.XUnit2Params -> XUnit2.XUnit2Params) (assemblies: string seq) = + let assemblies = assemblies |> Seq.toArray + let details = assemblies |> String.separated ", " + use __ = Trace.traceTask "DotCoverXUnit2" details + + let parameters = XUnit2.XUnit2Defaults |> setXUnit2Params + let args = XUnit2.buildXUnit2Args assemblies parameters + + DotCover (fun p -> + {p with + TargetExecutable = parameters.ToolPath + TargetArguments = args + } |> setDotCoverParams) + +/// Builds the command line arguments from the given parameter record and the given assemblies. +/// Runs all test assemblies in the same run for easier coverage management. +/// [omit] +let internal buildMSTestArgsForDotCover parameters assemblies = + let testcontainers = assemblies |> Array.map (fun a -> "/testcontainer:" + a) |> String.concat " " + + let testResultsFile = + if parameters.ResultsDir <> null then + sprintf @"%s\%s.trx" parameters.ResultsDir (DateTime.Now.ToString("yyyyMMdd-HHmmss.ff")) + else null + new StringBuilder() + |> StringBuilder.appendWithoutQuotesIfNotNull testcontainers "" + |> StringBuilder.appendWithoutQuotesIfNotNull parameters.Category "/category:" + |> StringBuilder.appendWithoutQuotesIfNotNull parameters.TestMetadataPath "/testmetadata:" + |> StringBuilder.appendWithoutQuotesIfNotNull parameters.TestSettingsPath "/testsettings:" + |> StringBuilder.appendWithoutQuotesIfNotNull testResultsFile "/resultsfile:" + |> StringBuilder.appendIfTrueWithoutQuotes parameters.NoIsolation "/noisolation" + |> StringBuilder.toText + +/// Runs the dotCover "cover" command against the MSTest test runner. +/// ## Parameters +/// +/// - `setDotCoverParams` - Function used to overwrite the dotCover report default parameters. +/// - `setMSTestParams` - Function used to overwrite the MSTest default parameters. +/// +/// ## Sample +/// +/// !! (buildDir @@ buildMode @@ "/*.Unit.Tests.dll") +/// |> MSTest +/// (fun -> dotCoverOptions ) +/// (fun MSTestOptions -> MSTestOptions) +let DotCoverMSTest (setDotCoverParams: DotCoverParams -> DotCoverParams) (setMSTestParams: MSTestParams -> MSTestParams) (assemblies: string seq) = + let assemblies = assemblies |> Seq.toArray + let details = assemblies |> String.separated ", " + use __ = Trace.traceTask "DotCoverMSTest " details + + let parameters = MSTestDefaults |> setMSTestParams + let args = buildMSTestArgsForDotCover parameters assemblies + + DotCover (fun p -> + {p with + TargetExecutable = parameters.ToolPath + TargetArguments = args + } |> setDotCoverParams) + +/// Runs the dotCover "cover" command against the MSpec test runner. +/// ## Parameters +/// +/// - `setDotCoverParams` - Function used to overwrite the dotCover report default parameters. +/// - `setMSpecParams` - Function used to overwrite the MSpec default parameters. +/// +/// ## Sample +/// +/// !! (buildDir @@ buildMode @@ "/*.Unit.Tests.dll") +/// |> DotCoverMSpec +/// (fun dotCoverOptions -> { dotCoverOptions with +/// Output = artifactsDir @@ "MSpecDotCoverSnapshot.dcvr" }) +/// (fun mSpecOptions -> { mSpecOptions with +/// Silent = true }) +let DotCoverMSpec (setDotCoverParams: DotCoverParams -> DotCoverParams) (setMSpecParams: MSpecParams -> MSpecParams) (assemblies: string seq) = + let assemblies = assemblies |> Seq.toArray + let details = assemblies |> String.separated ", " + use __ = Trace.traceTask "DotCoverMSpec" details + + let parameters = MSpecDefaults |> setMSpecParams + + let args = MSpec.buildMSpecArgs parameters assemblies + + DotCover (fun p -> + {p with + TargetExecutable = parameters.ToolPath + TargetArguments = args + } |> setDotCoverParams) diff --git a/src/app/Fake.DotNet.Testing.DotCover/Fake.DotNet.Testing.DotCover.fsproj b/src/app/Fake.DotNet.Testing.DotCover/Fake.DotNet.Testing.DotCover.fsproj new file mode 100644 index 00000000000..c4c0a8cf2ef --- /dev/null +++ b/src/app/Fake.DotNet.Testing.DotCover/Fake.DotNet.Testing.DotCover.fsproj @@ -0,0 +1,26 @@ + + + net46;netstandard1.6;netstandard2.0 + $(DefineConstants);NO_DOTNETCORE_BOOTSTRAP + Fake.DotNet.Testing.DotCover + Library + + + $(DefineConstants);NETSTANDARD;USE_HTTPCLIENT + + + $(DefineConstants);RELEASE + + + + + + + + + + + + + + diff --git a/src/app/Fake.DotNet.Testing.DotCover/paket.references b/src/app/Fake.DotNet.Testing.DotCover/paket.references new file mode 100644 index 00000000000..2c8a7ddfd73 --- /dev/null +++ b/src/app/Fake.DotNet.Testing.DotCover/paket.references @@ -0,0 +1,4 @@ +group netcore + +FSharp.Core +NETStandard.Library \ No newline at end of file diff --git a/src/app/Fake.DotNet.Testing.MSpec/MSpec.fs b/src/app/Fake.DotNet.Testing.MSpec/MSpec.fs index 5c00575c67c..d9175efff3c 100644 --- a/src/app/Fake.DotNet.Testing.MSpec/MSpec.fs +++ b/src/app/Fake.DotNet.Testing.MSpec/MSpec.fs @@ -44,7 +44,8 @@ let MSpecDefaults = /// Builds the command line arguments from the given parameter record and the given assemblies. /// [omit] -let internal buildMSpecArgs parameters assemblies = +///TODO: mark internal +let buildMSpecArgs parameters assemblies = let html, htmlText = if String.isNotNullOrEmpty parameters.HtmlOutputDir then true, sprintf "--html\" \"%s" <| parameters.HtmlOutputDir.TrimEnd Path.DirectorySeparatorChar diff --git a/src/app/Fake.DotNet.Testing.NUnit/Common.fs b/src/app/Fake.DotNet.Testing.NUnit/Common.fs index 70e2fff7da4..ccaf90717f7 100644 --- a/src/app/Fake.DotNet.Testing.NUnit/Common.fs +++ b/src/app/Fake.DotNet.Testing.NUnit/Common.fs @@ -157,7 +157,8 @@ let NUnitDefaults = /// Builds the command line arguments from the given parameter record and the given assemblies. /// [omit] -let internal buildNUnitdArgs parameters assemblies = +///TODO: mark internal +let buildNUnitdArgs parameters assemblies = new StringBuilder() |> StringBuilder.append "-nologo" |> StringBuilder.appendIfTrue parameters.DisableShadowCopy "-noshadow" diff --git a/src/app/Fake.DotNet.Testing.NUnit/NUnit3.fs b/src/app/Fake.DotNet.Testing.NUnit/NUnit3.fs index 5d331eeb330..888451df816 100644 --- a/src/app/Fake.DotNet.Testing.NUnit/NUnit3.fs +++ b/src/app/Fake.DotNet.Testing.NUnit/NUnit3.fs @@ -273,7 +273,8 @@ let getWorkingDir parameters = "." ] |> Path.GetFullPath -let internal buildNUnit3Args parameters assemblies = +///TODO: mark internal +let buildNUnit3Args parameters assemblies = let appendResultString results sb = match results, sb with | [], sb -> StringBuilder.append "--noresult" sb diff --git a/src/app/Fake.DotNet.Testing.XUnit2/XUnit2.fs b/src/app/Fake.DotNet.Testing.XUnit2/XUnit2.fs index eedb93a5d5a..5f2c7c05f08 100644 --- a/src/app/Fake.DotNet.Testing.XUnit2/XUnit2.fs +++ b/src/app/Fake.DotNet.Testing.XUnit2/XUnit2.fs @@ -190,7 +190,8 @@ let XUnit2Defaults = Class = None Method = None } -let internal buildXUnit2Args assemblies parameters = +///TODO: mark internal +let buildXUnit2Args assemblies parameters = let formatTrait traitFlag (name, value) = sprintf @"%s ""%s=%s""" traitFlag name value let appendTraits traitsList traitFlag sb = diff --git a/src/legacy/FakeLib/FakeLib.fsproj b/src/legacy/FakeLib/FakeLib.fsproj index 9424e011bf7..053006d3981 100644 --- a/src/legacy/FakeLib/FakeLib.fsproj +++ b/src/legacy/FakeLib/FakeLib.fsproj @@ -425,6 +425,9 @@ Fake.DotNet.Fsi\Fsi.fs + + Fake.DotNet.Testing.DotCover/DotCover.fs + From e3fd41f0a601d7c4234a4eb826d7ee01aa99a19f Mon Sep 17 00:00:00 2001 From: Thang Nguyen Cong Date: Mon, 6 Aug 2018 12:35:32 +0200 Subject: [PATCH 2/5] Removed leftovers --- .../Fake.DotNet.Testing.DotCover.fsproj | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 Fake.DotNet.Testing.DotCover/Fake.DotNet.Testing.DotCover.fsproj diff --git a/Fake.DotNet.Testing.DotCover/Fake.DotNet.Testing.DotCover.fsproj b/Fake.DotNet.Testing.DotCover/Fake.DotNet.Testing.DotCover.fsproj deleted file mode 100644 index 55736612a5d..00000000000 --- a/Fake.DotNet.Testing.DotCover/Fake.DotNet.Testing.DotCover.fsproj +++ /dev/null @@ -1,11 +0,0 @@ - - - - netstandard2.0 - - - - - - - From 65e24f10d184470f6262bf3dba465c6fece91d7b Mon Sep 17 00:00:00 2001 From: Thang Nguyen Cong Date: Mon, 6 Aug 2018 12:54:20 +0200 Subject: [PATCH 3/5] add to build.fsx, template.cshtml change obsolete description --- build.fsx | 1 + help/templates/template.cshtml | 1 + src/legacy/FakeLib/DotCover.fs | 42 +++++++++++++++++----------------- 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/build.fsx b/build.fsx index 65d05e58aa3..950b7dbcb36 100644 --- a/build.fsx +++ b/build.fsx @@ -368,6 +368,7 @@ let dotnetAssemblyInfos = "Fake.DotNet.Testing.VSTest", "Running vstest test runner" "Fake.DotNet.Testing.NUnit", "Running nunit test runner" "Fake.DotNet.Testing.OpenCover", "Code coverage with OpenCover" + "Fake.DotNet.Testing.DotCover", "Code coverage with DotCover" "Fake.DotNet.Testing.SpecFlow", "BDD with Gherkin and SpecFlow" "Fake.DotNet.Testing.XUnit2", "Running xunit test runner" "Fake.DotNet.Xamarin", "Running Xamarin builds" diff --git a/help/templates/template.cshtml b/help/templates/template.cshtml index 0414bdeba9b..71591d5446f 100644 --- a/help/templates/template.cshtml +++ b/help/templates/template.cshtml @@ -138,6 +138,7 @@
  • Testing - VSTest
  • Testing - SpecFlow
  • Testing - OpenCover
  • +
  • Testing - DotCover
  • NuGet
  • Mage
  • Paket
  • diff --git a/src/legacy/FakeLib/DotCover.fs b/src/legacy/FakeLib/DotCover.fs index d2cff314318..9e55488074c 100644 --- a/src/legacy/FakeLib/DotCover.fs +++ b/src/legacy/FakeLib/DotCover.fs @@ -1,5 +1,5 @@ /// Contains a task which can be used to run [DotCover](http://www.jetbrains.com/dotcover/) on .NET assemblies. -[] +[] module Fake.DotCover open Fake @@ -9,7 +9,7 @@ open System.Text open Fake.Testing.XUnit2 open Fake.Testing.NUnit3 open Fake.MSTest -[] +[] type DotCoverReportType = | Html = 0 @@ -19,7 +19,7 @@ type DotCoverReportType = /// The dotCover parameter type for running coverage [] -[] +[] type DotCoverParams = { ToolPath: string WorkingDir: string @@ -33,7 +33,7 @@ type DotCoverParams = CustomParameters: string } /// The dotCover default parameters -[] +[] let DotCoverDefaults = { ToolPath = findToolInSubPath "dotCover.exe" (currentDirectory @@ "tools" @@ "DotCover") WorkingDir = "" @@ -47,7 +47,7 @@ let DotCoverDefaults = ErrorLevel = ErrorLevel.Error} [] -[] +[] type DotCoverMergeParams = { ToolPath: string WorkingDir: string @@ -56,7 +56,7 @@ type DotCoverMergeParams = TempDir: string CustomParameters: string } -[] +[] let DotCoverMergeDefaults = { ToolPath = findToolInSubPath "dotCover.exe" (currentDirectory @@ "tools" @@ "DotCover") WorkingDir = "" @@ -66,7 +66,7 @@ let DotCoverMergeDefaults = CustomParameters = "" } [] -[] +[] type DotCoverReportParams = { ToolPath: string WorkingDir: string @@ -75,7 +75,7 @@ type DotCoverReportParams = ReportType: DotCoverReportType CustomParameters: string } -[] +[] let DotCoverReportDefaults : DotCoverReportParams = { ToolPath = findToolInSubPath "dotCover.exe" (currentDirectory @@ "tools" @@ "DotCover") WorkingDir = "" @@ -84,7 +84,7 @@ let DotCoverReportDefaults : DotCoverReportParams = ReportType = DotCoverReportType.Xml CustomParameters = "" } -[] +[] let buildDotCoverArgs parameters = new StringBuilder() |> append "cover" @@ -97,7 +97,7 @@ let buildDotCoverArgs parameters = |> appendWithoutQuotes parameters.CustomParameters |> toText -[] +[] let buildDotCoverMergeArgs (parameters:DotCoverMergeParams) = new StringBuilder() |> append "merge" @@ -107,7 +107,7 @@ let buildDotCoverMergeArgs (parameters:DotCoverMergeParams) = |> appendWithoutQuotes parameters.CustomParameters |> toText -[] +[] let buildDotCoverReportArgs parameters = new StringBuilder() |> append "report" @@ -118,12 +118,12 @@ let buildDotCoverReportArgs parameters = |> toText -[] +[] let getWorkingDir workingDir = Seq.find isNotNullOrEmpty [workingDir; environVar("teamcity.build.workingDir"); "."] |> Path.GetFullPath -[] +[] let buildParamsAndExecute parameters buildArguments toolPath workingDir failBuild = let args = buildArguments parameters trace (toolPath + " " + args) @@ -146,7 +146,7 @@ let buildParamsAndExecute parameters buildArguments toolPath workingDir failBuil /// ## Parameters /// /// - `setParams` - Function used to overwrite the dotCover default parameters. -[] +[] let DotCover (setParams: DotCoverParams -> DotCoverParams) = let parameters = (DotCoverDefaults |> setParams) buildParamsAndExecute parameters buildDotCoverArgs parameters.ToolPath parameters.WorkingDir (parameters.ErrorLevel <> ErrorLevel.DontFailBuild) @@ -163,7 +163,7 @@ let DotCover (setParams: DotCoverParams -> DotCoverParams) = /// Source = [artifactsDir @@ "NUnitDotCoverSnapshot.dcvr" /// artifactsDir @@ "MSpecDotCoverSnapshot.dcvr"] /// Output = artifactsDir @@ "dotCoverSnapshot.dcvr" }) -[] +[] let DotCoverMerge (setParams: DotCoverMergeParams -> DotCoverMergeParams) = let parameters = (DotCoverMergeDefaults |> setParams) buildParamsAndExecute parameters buildDotCoverMergeArgs parameters.ToolPath parameters.WorkingDir false @@ -179,7 +179,7 @@ let DotCoverMerge (setParams: DotCoverMergeParams -> DotCoverMergeParams) = /// Source = artifactsDir @@ "dotCoverSnapshot.dcvr" /// Output = artifactsDir @@ "dotCoverReport.xml" /// ReportType = DotCoverReportType.Xml }) -[] +[] let DotCoverReport (setParams: DotCoverReportParams -> DotCoverReportParams) = let parameters = (DotCoverReportDefaults |> setParams) buildParamsAndExecute parameters buildDotCoverReportArgs parameters.ToolPath parameters.WorkingDir @@ -198,7 +198,7 @@ let DotCoverReport (setParams: DotCoverReportParams -> DotCoverReportParams) = /// Output = artifactsDir @@ "NUnitDotCoverSnapshot.dcvr" }) /// (fun nUnitOptions -> { nUnitOptions with /// DisableShadowCopy = true }) -[] +[] let DotCoverNUnit (setDotCoverParams: DotCoverParams -> DotCoverParams) (setNUnitParams: NUnitParams -> NUnitParams) (assemblies: string seq) = let assemblies = assemblies |> Seq.toArray let details = assemblies |> separated ", " @@ -227,7 +227,7 @@ let DotCoverNUnit (setDotCoverParams: DotCoverParams -> DotCoverParams) (setNUni /// Output = artifactsDir @@ "NUnitDotCoverSnapshot.dcvr" }) /// (fun nUnitOptions -> { nUnitOptions with /// DisableShadowCopy = true }) -[] +[] let DotCoverNUnit3 (setDotCoverParams: DotCoverParams -> DotCoverParams) (setNUnitParams: NUnit3Params -> NUnit3Params) (assemblies: string seq) = let assemblies = assemblies |> Seq.toArray let details = assemblies |> separated ", " @@ -254,7 +254,7 @@ let DotCoverNUnit3 (setDotCoverParams: DotCoverParams -> DotCoverParams) (setNUn /// |> DotCoverXUnit2 /// (fun -> dotCoverOptions ) /// (fun nUnitOptions -> nUnitOptions) -[] +[] let DotCoverXUnit2 (setDotCoverParams: DotCoverParams -> DotCoverParams) (setXUnit2Params: XUnit2Params -> XUnit2Params) (assemblies: string seq) = let assemblies = assemblies |> Seq.toArray let details = assemblies |> separated ", " @@ -300,7 +300,7 @@ let internal buildMSTestArgsForDotCover parameters assemblies = /// |> MSTest /// (fun -> dotCoverOptions ) /// (fun MSTestOptions -> MSTestOptions) -[] +[] let DotCoverMSTest (setDotCoverParams: DotCoverParams -> DotCoverParams) (setMSTestParams: MSTestParams -> MSTestParams) (assemblies: string seq) = let assemblies = assemblies |> Seq.toArray let details = assemblies |> separated ", " @@ -329,7 +329,7 @@ let DotCoverMSTest (setDotCoverParams: DotCoverParams -> DotCoverParams) (setMST /// Output = artifactsDir @@ "MSpecDotCoverSnapshot.dcvr" }) /// (fun mSpecOptions -> { mSpecOptions with /// Silent = true }) -[] +[] let DotCoverMSpec (setDotCoverParams: DotCoverParams -> DotCoverParams) (setMSpecParams: MSpecParams -> MSpecParams) (assemblies: string seq) = let assemblies = assemblies |> Seq.toArray let details = assemblies |> separated ", " From a12b10108d41de280bac2eb0c647967772d99cf8 Mon Sep 17 00:00:00 2001 From: Thang Nguyen Cong Date: Thu, 23 Aug 2018 11:21:57 +0200 Subject: [PATCH 4/5] unify buildArgs in testing modules --- src/app/Fake.DotNet.Testing.DotCover/DotCover.fs | 8 ++++---- src/app/Fake.DotNet.Testing.MSTest/MSTest.fs | 5 ++--- src/app/Fake.DotNet.Testing.MSpec/MSpec.fs | 6 ++---- src/app/Fake.DotNet.Testing.NUnit/Common.fs | 4 +--- src/app/Fake.DotNet.Testing.NUnit/NUnit3.fs | 6 +++--- src/app/Fake.DotNet.Testing.NUnit/Parallel.fs | 2 +- src/app/Fake.DotNet.Testing.NUnit/Sequential.fs | 2 +- src/app/Fake.DotNet.Testing.VSTest/VSTest.fs | 5 ++--- src/app/Fake.DotNet.Testing.XUnit2/XUnit2.fs | 6 +++--- 9 files changed, 19 insertions(+), 25 deletions(-) diff --git a/src/app/Fake.DotNet.Testing.DotCover/DotCover.fs b/src/app/Fake.DotNet.Testing.DotCover/DotCover.fs index 87ceaba3247..3e027182474 100644 --- a/src/app/Fake.DotNet.Testing.DotCover/DotCover.fs +++ b/src/app/Fake.DotNet.Testing.DotCover/DotCover.fs @@ -197,7 +197,7 @@ let DotCoverNUnit (setDotCoverParams: DotCoverParams -> DotCoverParams) (setNUni use __ = Trace.traceTask "DotCoverNUnit" details let parameters = NUnit.Common.NUnitDefaults |> setNUnitParams - let args = NUnit.Common.buildNUnitdArgs parameters assemblies + let args = NUnit.Common.buildArgs parameters assemblies DotCover (fun p -> {p with @@ -225,7 +225,7 @@ let DotCoverNUnit3 (setDotCoverParams: DotCoverParams -> DotCoverParams) (setNUn use __ = Trace.traceTask "DotCoverNUnit3" details let parameters = NUnit3Defaults |> setNUnitParams - let args = NUnit3.buildNUnit3Args parameters assemblies + let args = NUnit3.buildArgs parameters assemblies DotCover (fun p -> {p with @@ -251,7 +251,7 @@ let DotCoverXUnit2 (setDotCoverParams: DotCoverParams -> DotCoverParams) (setXUn use __ = Trace.traceTask "DotCoverXUnit2" details let parameters = XUnit2.XUnit2Defaults |> setXUnit2Params - let args = XUnit2.buildXUnit2Args assemblies parameters + let args = XUnit2.buildArgs parameters assemblies DotCover (fun p -> {p with @@ -325,7 +325,7 @@ let DotCoverMSpec (setDotCoverParams: DotCoverParams -> DotCoverParams) (setMSpe let parameters = MSpecDefaults |> setMSpecParams - let args = MSpec.buildMSpecArgs parameters assemblies + let args = MSpec.buildArgs parameters assemblies DotCover (fun p -> {p with diff --git a/src/app/Fake.DotNet.Testing.MSTest/MSTest.fs b/src/app/Fake.DotNet.Testing.MSTest/MSTest.fs index 5ad9e26ed1d..daf252c162d 100644 --- a/src/app/Fake.DotNet.Testing.MSTest/MSTest.fs +++ b/src/app/Fake.DotNet.Testing.MSTest/MSTest.fs @@ -69,8 +69,7 @@ let MSTestDefaults = NoIsolation = true } /// Builds the command line arguments from the given parameter record and the given assemblies. -/// [omit] -let internal buildMSTestArgs parameters assembly = +let buildArgs (parameters:MSTestParams) (assembly: string) = let testResultsFile = if parameters.ResultsDir <> null then sprintf @"%s\%s.trx" parameters.ResultsDir (DateTime.Now.ToString("yyyyMMdd-HHmmss.ff")) @@ -111,7 +110,7 @@ let exec (setParams : MSTestParams -> MSTestParams) (assemblies : string seq) = Trace.traceError message failwith message for assembly in assemblies do - let args = buildMSTestArgs parameters assembly + let args = buildArgs parameters assembly Process.execSimple ((fun info -> { info with FileName = parameters.ToolPath diff --git a/src/app/Fake.DotNet.Testing.MSpec/MSpec.fs b/src/app/Fake.DotNet.Testing.MSpec/MSpec.fs index d9175efff3c..4a907e18feb 100644 --- a/src/app/Fake.DotNet.Testing.MSpec/MSpec.fs +++ b/src/app/Fake.DotNet.Testing.MSpec/MSpec.fs @@ -43,9 +43,7 @@ let MSpecDefaults = ErrorLevel = Error } /// Builds the command line arguments from the given parameter record and the given assemblies. -/// [omit] -///TODO: mark internal -let buildMSpecArgs parameters assemblies = +let buildArgs (parameters:MSpecParams) (assemblies: string seq) = let html, htmlText = if String.isNotNullOrEmpty parameters.HtmlOutputDir then true, sprintf "--html\" \"%s" <| parameters.HtmlOutputDir.TrimEnd Path.DirectorySeparatorChar @@ -88,7 +86,7 @@ let exec setParams assemblies = let details = String.separated ", " assemblies use __ = Trace.traceTask "MSpec" details let parameters = setParams MSpecDefaults - let args = buildMSpecArgs parameters assemblies + let args = buildArgs parameters assemblies Trace.trace (parameters.ToolPath + " " + args) if 0 <> Process.execSimple ((fun info -> { info with diff --git a/src/app/Fake.DotNet.Testing.NUnit/Common.fs b/src/app/Fake.DotNet.Testing.NUnit/Common.fs index ccaf90717f7..4b78544f03c 100644 --- a/src/app/Fake.DotNet.Testing.NUnit/Common.fs +++ b/src/app/Fake.DotNet.Testing.NUnit/Common.fs @@ -156,9 +156,7 @@ let NUnitDefaults = Fixture = ""} /// Builds the command line arguments from the given parameter record and the given assemblies. -/// [omit] -///TODO: mark internal -let buildNUnitdArgs parameters assemblies = +let buildArgs (parameters: NUnitParams) (assemblies: string seq) = new StringBuilder() |> StringBuilder.append "-nologo" |> StringBuilder.appendIfTrue parameters.DisableShadowCopy "-noshadow" diff --git a/src/app/Fake.DotNet.Testing.NUnit/NUnit3.fs b/src/app/Fake.DotNet.Testing.NUnit/NUnit3.fs index 888451df816..393cb78030b 100644 --- a/src/app/Fake.DotNet.Testing.NUnit/NUnit3.fs +++ b/src/app/Fake.DotNet.Testing.NUnit/NUnit3.fs @@ -273,8 +273,8 @@ let getWorkingDir parameters = "." ] |> Path.GetFullPath -///TODO: mark internal -let buildNUnit3Args parameters assemblies = +/// Builds the command line arguments from the given parameter record and the given assemblies. +let buildArgs (parameters:NUnit3Params) (assemblies: string seq) = let appendResultString results sb = match results, sb with | [], sb -> StringBuilder.append "--noresult" sb @@ -316,7 +316,7 @@ let run (setParams : NUnit3Params -> NUnit3Params) (assemblies : string seq) = let assemblies = assemblies |> Seq.toArray if Array.isEmpty assemblies then failwith "NUnit: cannot run tests (the assembly list is empty)." let tool = parameters.ToolPath - let args = buildNUnit3Args parameters assemblies + let args = buildArgs parameters assemblies Trace.trace (tool + " " + args) let processTimeout = TimeSpan.MaxValue // Don't set a process timeout. The timeout is per test. let result = diff --git a/src/app/Fake.DotNet.Testing.NUnit/Parallel.fs b/src/app/Fake.DotNet.Testing.NUnit/Parallel.fs index 4b6e37cfaa7..0d43888bd30 100644 --- a/src/app/Fake.DotNet.Testing.NUnit/Parallel.fs +++ b/src/app/Fake.DotNet.Testing.NUnit/Parallel.fs @@ -48,7 +48,7 @@ let run (setParams : NUnitParams -> NUnitParams) (assemblies : string seq) = let tool = parameters.ToolPath @@ parameters.ToolName let runSingleAssembly parameters name outputFile = - let args = buildNUnitdArgs { parameters with OutputFile = outputFile } [ name ] + let args = buildArgs { parameters with OutputFile = outputFile } [ name ] let errout = StringBuilder() let stdout = StringBuilder() Trace.tracefn "Run NUnit tests from %s." name diff --git a/src/app/Fake.DotNet.Testing.NUnit/Sequential.fs b/src/app/Fake.DotNet.Testing.NUnit/Sequential.fs index 0782ac3bb6e..5911deb907b 100644 --- a/src/app/Fake.DotNet.Testing.NUnit/Sequential.fs +++ b/src/app/Fake.DotNet.Testing.NUnit/Sequential.fs @@ -33,7 +33,7 @@ let run (setParams : NUnitParams -> NUnitParams) (assemblies : string seq) = let assemblies = assemblies |> Seq.toArray if Array.isEmpty assemblies then failwith "NUnit: cannot run tests (the assembly list is empty)." let tool = parameters.ToolPath @@ parameters.ToolName - let args = buildNUnitdArgs parameters assemblies + let args = buildArgs parameters assemblies Trace.trace (tool + " " + args) let result = Process.execSimple ((fun info -> diff --git a/src/app/Fake.DotNet.Testing.VSTest/VSTest.fs b/src/app/Fake.DotNet.Testing.VSTest/VSTest.fs index f1e6620a4f1..5eba8133af2 100644 --- a/src/app/Fake.DotNet.Testing.VSTest/VSTest.fs +++ b/src/app/Fake.DotNet.Testing.VSTest/VSTest.fs @@ -91,8 +91,7 @@ let private VSTestDefaults = TestAdapterPath = null } /// Builds the command line arguments from the given parameter record and the given assemblies. -/// [omit] -let private buildVSTestArgs (parameters : VSTestParams) assembly = +let buildArgs (parameters : VSTestParams) (assembly: string) = let testsToRun = if not (Seq.isEmpty parameters.Tests) then sprintf @"/Tests:%s" (parameters.Tests |> String.separated ",") @@ -141,7 +140,7 @@ let run (setParams : VSTestParams -> VSTestParams) (assemblies : string seq) = Trace.traceError message failwith message for assembly in assemblies do - let args = buildVSTestArgs parameters assembly + let args = buildArgs parameters assembly Process.execSimple (fun info -> { info with FileName = parameters.ToolPath diff --git a/src/app/Fake.DotNet.Testing.XUnit2/XUnit2.fs b/src/app/Fake.DotNet.Testing.XUnit2/XUnit2.fs index 5f2c7c05f08..3075f315f2d 100644 --- a/src/app/Fake.DotNet.Testing.XUnit2/XUnit2.fs +++ b/src/app/Fake.DotNet.Testing.XUnit2/XUnit2.fs @@ -190,8 +190,8 @@ let XUnit2Defaults = Class = None Method = None } -///TODO: mark internal -let buildXUnit2Args assemblies parameters = +/// Builds the command line arguments from the given parameter record and the given assemblies. +let buildArgs (parameters:XUnit2Params) (assemblies: string seq)= let formatTrait traitFlag (name, value) = sprintf @"%s ""%s=%s""" traitFlag name value let appendTraits traitsList traitFlag sb = @@ -280,7 +280,7 @@ let run setParams assemblies = { info with FileName = parameters.ToolPath WorkingDirectory = defaultArg parameters.WorkingDir "." - Arguments = parameters |> buildXUnit2Args assemblies}) >> Process.withFramework) parameters.TimeOut + Arguments = buildArgs parameters assemblies}) >> Process.withFramework) parameters.TimeOut ResultHandling.failBuildIfXUnitReportedError parameters.ErrorLevel result __.MarkSuccess() From 929516712426d7daeccfb91a6c2ad00fb9b6a5f2 Mon Sep 17 00:00:00 2001 From: Thang Date: Sun, 26 Aug 2018 22:31:21 +0200 Subject: [PATCH 5/5] remove "DotCover" from names due to [] attribute --- .../Fake.DotNet.Testing.DotCover/DotCover.fs | 85 +++++++++---------- 1 file changed, 41 insertions(+), 44 deletions(-) diff --git a/src/app/Fake.DotNet.Testing.DotCover/DotCover.fs b/src/app/Fake.DotNet.Testing.DotCover/DotCover.fs index 3e027182474..7e370fdd519 100644 --- a/src/app/Fake.DotNet.Testing.DotCover/DotCover.fs +++ b/src/app/Fake.DotNet.Testing.DotCover/DotCover.fs @@ -15,15 +15,14 @@ open Fake.DotNet.Testing.MSpec open Fake.DotNet.Testing.NUnit3 open Fake.DotNet.Testing.XUnit2 -type DotCoverReportType = +type ReportType = | Html = 0 | Json = 1 | Xml = 2 | NDependXml = 3 /// The dotCover parameter type for running coverage -[] -type DotCoverParams = +type Params = { ToolPath: string WorkingDir: string TargetExecutable: string @@ -36,7 +35,7 @@ type DotCoverParams = CustomParameters: string } /// The dotCover default parameters -let internal DotCoverDefaults = +let internal Defaults = { ToolPath = Fake.IO.Globbing.Tools.findToolInSubPath "dotCover.exe" ((Path.GetFullPath ".") @@ "tools" @@ "DotCover") WorkingDir = "" TargetExecutable = "" @@ -48,8 +47,7 @@ let internal DotCoverDefaults = CustomParameters = "" ErrorLevel = ErrorLevel.Error} -[] -type DotCoverMergeParams = +type MergeParams = { ToolPath: string WorkingDir: string Source: string list @@ -57,7 +55,7 @@ type DotCoverMergeParams = TempDir: string CustomParameters: string } -let internal DotCoverMergeDefaults = +let internal MergeDefaults = { ToolPath = Fake.IO.Globbing.Tools.findToolInSubPath "dotCover.exe" ((Path.GetFullPath ".") @@ "tools" @@ "DotCover") WorkingDir = "" Source = [] @@ -65,24 +63,23 @@ let internal DotCoverMergeDefaults = TempDir = "" CustomParameters = "" } -[] -type DotCoverReportParams = +type ReportParams = { ToolPath: string WorkingDir: string Source: string Output: string - ReportType: DotCoverReportType + ReportType: ReportType CustomParameters: string } -let internal DotCoverReportDefaults : DotCoverReportParams = +let internal ReportDefaults : ReportParams = { ToolPath = Fake.IO.Globbing.Tools.findToolInSubPath "dotCover.exe" ((Path.GetFullPath ".") @@ "tools" @@ "DotCover") WorkingDir = "" Source = "" Output = "dotCoverReport.xml" - ReportType = DotCoverReportType.Xml + ReportType = ReportType.Xml CustomParameters = "" } -let internal buildDotCoverArgs parameters = +let internal buildArgs parameters = new StringBuilder() |> StringBuilder.append "cover" |> StringBuilder.appendIfNotNullOrEmpty parameters.TargetExecutable "/TargetExecutable=" @@ -94,7 +91,7 @@ let internal buildDotCoverArgs parameters = |> StringBuilder.appendWithoutQuotes parameters.CustomParameters |> StringBuilder.toText -let internal buildDotCoverMergeArgs (parameters:DotCoverMergeParams) = +let internal buildMergeArgs (parameters:MergeParams) = new StringBuilder() |> StringBuilder.append "merge" |> StringBuilder.appendIfNotNullOrEmpty (parameters.Source |> String.concat ";") "/Source=" @@ -103,7 +100,7 @@ let internal buildDotCoverMergeArgs (parameters:DotCoverMergeParams) = |> StringBuilder.appendWithoutQuotes parameters.CustomParameters |> StringBuilder.toText -let internal buildDotCoverReportArgs parameters = +let internal buildReportArgs parameters = new StringBuilder() |> StringBuilder.append "report" |> StringBuilder.appendIfNotNullOrEmpty parameters.Source "/Source=" @@ -142,9 +139,9 @@ let internal buildParamsAndExecute parameters buildArguments toolPath workingDir /// ## Parameters /// /// - `setParams` - Function used to overwrite the dotCover default parameters. -let DotCover (setParams: DotCoverParams -> DotCoverParams) = - let parameters = (DotCoverDefaults |> setParams) - buildParamsAndExecute parameters buildDotCoverArgs parameters.ToolPath parameters.WorkingDir (parameters.ErrorLevel <> ErrorLevel.DontFailBuild) +let run (setParams: Params -> Params) = + let parameters = (Defaults |> setParams) + buildParamsAndExecute parameters buildArgs parameters.ToolPath parameters.WorkingDir (parameters.ErrorLevel <> ErrorLevel.DontFailBuild) /// Runs the dotCover "merge" command. This combines dotCover snaphots into a single /// snapshot, enabling you to merge test coverage from multiple test running frameworks @@ -154,13 +151,13 @@ let DotCover (setParams: DotCoverParams -> DotCoverParams) = /// /// ## Sample /// -/// DotCoverMerge (fun p -> { p with +/// merge (fun p -> { p with /// Source = [artifactsDir @@ "NUnitDotCoverSnapshot.dcvr" /// artifactsDir @@ "MSpecDotCoverSnapshot.dcvr"] /// Output = artifactsDir @@ "dotCoverSnapshot.dcvr" }) -let DotCoverMerge (setParams: DotCoverMergeParams -> DotCoverMergeParams) = - let parameters = (DotCoverMergeDefaults |> setParams) - buildParamsAndExecute parameters buildDotCoverMergeArgs parameters.ToolPath parameters.WorkingDir false +let merge (setParams: MergeParams -> MergeParams) = + let parameters = (MergeDefaults |> setParams) + buildParamsAndExecute parameters buildMergeArgs parameters.ToolPath parameters.WorkingDir false /// Runs the dotCover "report" command. This generates a report from a dotCover snapshot /// ## Parameters @@ -169,13 +166,13 @@ let DotCoverMerge (setParams: DotCoverMergeParams -> DotCoverMergeParams) = /// /// ## Sample /// -/// DotCoverReport (fun p -> { p with +/// report (fun p -> { p with /// Source = artifactsDir @@ "dotCoverSnapshot.dcvr" /// Output = artifactsDir @@ "dotCoverReport.xml" -/// ReportType = DotCoverReportType.Xml }) -let DotCoverReport (setParams: DotCoverReportParams -> DotCoverReportParams) = - let parameters = (DotCoverReportDefaults |> setParams) - buildParamsAndExecute parameters buildDotCoverReportArgs parameters.ToolPath parameters.WorkingDir +/// ReportType = ReportType.Xml }) +let report (setParams: ReportParams -> ReportParams) = + let parameters = (ReportDefaults |> setParams) + buildParamsAndExecute parameters buildReportArgs parameters.ToolPath parameters.WorkingDir /// Runs the dotCover "cover" command against the NUnit test runner. /// ## Parameters @@ -186,12 +183,12 @@ let DotCoverReport (setParams: DotCoverReportParams -> DotCoverReportParams) = /// ## Sample /// /// !! (buildDir @@ buildMode @@ "/*.Unit.Tests.dll") -/// |> DotCoverNUnit +/// |> runNUnit /// (fun dotCoverOptions -> { dotCoverOptions with /// Output = artifactsDir @@ "NUnitDotCoverSnapshot.dcvr" }) /// (fun nUnitOptions -> { nUnitOptions with /// DisableShadowCopy = true }) -let DotCoverNUnit (setDotCoverParams: DotCoverParams -> DotCoverParams) (setNUnitParams: NUnit.Common.NUnitParams -> NUnit.Common.NUnitParams) (assemblies: string seq) = +let runNUnit (setDotCoverParams: Params -> Params) (setNUnitParams: NUnit.Common.NUnitParams -> NUnit.Common.NUnitParams) (assemblies: string seq) = let assemblies = assemblies |> Seq.toArray let details = assemblies |> String.separated ", " use __ = Trace.traceTask "DotCoverNUnit" details @@ -199,7 +196,7 @@ let DotCoverNUnit (setDotCoverParams: DotCoverParams -> DotCoverParams) (setNUni let parameters = NUnit.Common.NUnitDefaults |> setNUnitParams let args = NUnit.Common.buildArgs parameters assemblies - DotCover (fun p -> + run (fun p -> {p with TargetExecutable = parameters.ToolPath @@ parameters.ToolName TargetArguments = args @@ -214,12 +211,12 @@ let DotCoverNUnit (setDotCoverParams: DotCoverParams -> DotCoverParams) (setNUni /// ## Sample /// /// !! (buildDir @@ buildMode @@ "/*.Unit.Tests.dll") -/// |> DotCoverNUnit +/// |> runNUnit3 /// (fun dotCoverOptions -> { dotCoverOptions with -/// Output = artifactsDir @@ "NUnitDotCoverSnapshot.dcvr" }) -/// (fun nUnitOptions -> { nUnitOptions with +/// Output = artifactsDir @@ "NUnit3DotCoverSnapshot.dcvr" }) +/// (fun nUnit3Options -> { nUnit3Options with /// DisableShadowCopy = true }) -let DotCoverNUnit3 (setDotCoverParams: DotCoverParams -> DotCoverParams) (setNUnitParams: NUnit3Params -> NUnit3Params) (assemblies: string seq) = +let runNUnit3 (setDotCoverParams: Params -> Params) (setNUnitParams: NUnit3Params -> NUnit3Params) (assemblies: string seq) = let assemblies = assemblies |> Seq.toArray let details = assemblies |> String.separated ", " use __ = Trace.traceTask "DotCoverNUnit3" details @@ -227,7 +224,7 @@ let DotCoverNUnit3 (setDotCoverParams: DotCoverParams -> DotCoverParams) (setNUn let parameters = NUnit3Defaults |> setNUnitParams let args = NUnit3.buildArgs parameters assemblies - DotCover (fun p -> + run (fun p -> {p with TargetExecutable = parameters.ToolPath TargetArguments = args @@ -242,10 +239,10 @@ let DotCoverNUnit3 (setDotCoverParams: DotCoverParams -> DotCoverParams) (setNUn /// ## Sample /// /// !! (buildDir @@ buildMode @@ "/*.Unit.Tests.dll") -/// |> DotCoverXUnit2 +/// |> runXUnit2 /// (fun -> dotCoverOptions ) /// (fun nUnitOptions -> nUnitOptions) -let DotCoverXUnit2 (setDotCoverParams: DotCoverParams -> DotCoverParams) (setXUnit2Params: XUnit2.XUnit2Params -> XUnit2.XUnit2Params) (assemblies: string seq) = +let runXUnit2 (setDotCoverParams: Params -> Params) (setXUnit2Params: XUnit2.XUnit2Params -> XUnit2.XUnit2Params) (assemblies: string seq) = let assemblies = assemblies |> Seq.toArray let details = assemblies |> String.separated ", " use __ = Trace.traceTask "DotCoverXUnit2" details @@ -253,7 +250,7 @@ let DotCoverXUnit2 (setDotCoverParams: DotCoverParams -> DotCoverParams) (setXUn let parameters = XUnit2.XUnit2Defaults |> setXUnit2Params let args = XUnit2.buildArgs parameters assemblies - DotCover (fun p -> + run (fun p -> {p with TargetExecutable = parameters.ToolPath TargetArguments = args @@ -287,10 +284,10 @@ let internal buildMSTestArgsForDotCover parameters assemblies = /// ## Sample /// /// !! (buildDir @@ buildMode @@ "/*.Unit.Tests.dll") -/// |> MSTest +/// |> runMSTest /// (fun -> dotCoverOptions ) /// (fun MSTestOptions -> MSTestOptions) -let DotCoverMSTest (setDotCoverParams: DotCoverParams -> DotCoverParams) (setMSTestParams: MSTestParams -> MSTestParams) (assemblies: string seq) = +let runMSTest (setDotCoverParams: Params -> Params) (setMSTestParams: MSTestParams -> MSTestParams) (assemblies: string seq) = let assemblies = assemblies |> Seq.toArray let details = assemblies |> String.separated ", " use __ = Trace.traceTask "DotCoverMSTest " details @@ -298,7 +295,7 @@ let DotCoverMSTest (setDotCoverParams: DotCoverParams -> DotCoverParams) (setMST let parameters = MSTestDefaults |> setMSTestParams let args = buildMSTestArgsForDotCover parameters assemblies - DotCover (fun p -> + run (fun p -> {p with TargetExecutable = parameters.ToolPath TargetArguments = args @@ -313,12 +310,12 @@ let DotCoverMSTest (setDotCoverParams: DotCoverParams -> DotCoverParams) (setMST /// ## Sample /// /// !! (buildDir @@ buildMode @@ "/*.Unit.Tests.dll") -/// |> DotCoverMSpec +/// |> runMSpec /// (fun dotCoverOptions -> { dotCoverOptions with /// Output = artifactsDir @@ "MSpecDotCoverSnapshot.dcvr" }) /// (fun mSpecOptions -> { mSpecOptions with /// Silent = true }) -let DotCoverMSpec (setDotCoverParams: DotCoverParams -> DotCoverParams) (setMSpecParams: MSpecParams -> MSpecParams) (assemblies: string seq) = +let runMSpec (setDotCoverParams: Params -> Params) (setMSpecParams: MSpecParams -> MSpecParams) (assemblies: string seq) = let assemblies = assemblies |> Seq.toArray let details = assemblies |> String.separated ", " use __ = Trace.traceTask "DotCoverMSpec" details @@ -327,7 +324,7 @@ let DotCoverMSpec (setDotCoverParams: DotCoverParams -> DotCoverParams) (setMSpe let args = MSpec.buildArgs parameters assemblies - DotCover (fun p -> + run (fun p -> {p with TargetExecutable = parameters.ToolPath TargetArguments = args