Skip to content

Commit

Permalink
Make the Issue #46 argument handler more flexible for future continge…
Browse files Browse the repository at this point in the history
…ncies
  • Loading branch information
SteveGilham committed Dec 22, 2018
1 parent e06cbd0 commit 070fb87
Show file tree
Hide file tree
Showing 12 changed files with 126 additions and 78 deletions.
24 changes: 19 additions & 5 deletions AltCover.CSApi/Definitions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,11 @@ public interface ILogArgs

Logging ToParameters();
}

public interface ICLIArg
{
bool Force { get; }
}
}

namespace AltCover.Parameters.Primitive
Expand Down Expand Up @@ -240,6 +245,11 @@ public static LogArgs Default
}
}
}

public class CLIArgs : ICLIArg
{
public bool Force { get; set; }
}
}

namespace AltCover
Expand Down Expand Up @@ -270,17 +280,21 @@ public static string Version()

public static string ToTestArguments(IPrepareArgs p,
ICollectArgs c,
bool force)
ICLIArg force)
{
return DotNet.ToTestArguments(p.ToParameters(), c.ToParameters(), force);
return DotNet.ToTestArguments(p.ToParameters(),
c.ToParameters(),
DotNetTest.CLIArgs.NewForce(force.Force));
}

public static string[] ToTestArgumentList(IPrepareArgs p,
ICollectArgs c,
bool force)
ICLIArg force)
{
return DotNet.ToTestArgumentList(p.ToParameters(), c.ToParameters(), force).
ToArray();
return DotNet.ToTestArgumentList(p.ToParameters(),
c.ToParameters(),
DotNetTest.CLIArgs.NewForce(force.Force)).
ToArray();
}
}
}
2 changes: 1 addition & 1 deletion AltCover.Cake/DotNet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public class AltCoverSettings
{
public IPrepareArgs PreparationPhase { get; set; }
public ICollectArgs CollectionPhase { get; set; }
public bool Force { get; set; }
public ICLIArg Force { get; set; }
}

[CakeAliasCategory("DotNetCore")]
Expand Down
1 change: 1 addition & 0 deletions AltCover.FSApi/AltCover.FSApi.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
<Compile Include="..\_Generated\AssemblyVersion.fs">
<Link>AssemblyVersion.fs</Link>
</Compile>
<Compile Include="CLIArgs.fs" />
<Compile Include="Definitions.fs" />
<Compile Include="Xml.fs" />
<Compile Include="Xhtml.fs" />
Expand Down
18 changes: 18 additions & 0 deletions AltCover.FSApi/CLIArgs.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#if RUNNER
namespace AltCover

[<System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage>] // work around coverlet attribute bug
module DotNetTest =
#else
[<System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage; RequireQualifiedAccess>] // work around coverlet attribute bug
module AltCover_Fake.DotNet.Testing.DotNetTest
#endif
[<NoComparison; System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design",
"CA1034",
Justification = "Idiomatic F#")>]

type CLIArgs =
| Force of bool
with member self.ForceDelete =
match self with
| Force b -> b
16 changes: 10 additions & 6 deletions AltCover.FSApi/Definitions.fs
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,15 @@
namespace AltCover
#else
module internal AltCover.Internals

#endif

open System
open System.Linq
#if RUNNER
open AltCover.DotNetTest
#else
open AltCover_Fake.DotNet.Testing
#endif

[<assembly:CLSCompliant(true)>]
[<assembly:System.Runtime.InteropServices.ComVisible(false)>]
Expand All @@ -30,12 +34,12 @@ module DotNet =
let ToTestArgumentList
(prepare : AltCover.FSApi.PrepareParams)
(collect : AltCover.FSApi.CollectParams)
(force : bool) =
(force : DotNetTest.CLIArgs) =
#else
let ToTestArgumentList
(prepare : AltCover_Fake.DotNet.Testing.AltCover.PrepareParams)
(collect : AltCover_Fake.DotNet.Testing.AltCover.CollectParams)
(force : bool) =
(force : DotNetTest.CLIArgs) =
#endif

[ FromArg String.Empty "true"
Expand All @@ -55,19 +59,19 @@ module DotNet =
FromArg "Threshold" collect.Threshold
(Arg "LineCover" "true", prepare.LineCover)
(Arg "BranchCover" "true", prepare.BranchCover)
(Arg "Force" "true", force)]
(Arg "Force" "true", force.ForceDelete)]
|> List.filter snd
|> List.map fst

#if RUNNER
let ToTestArguments
(prepare : AltCover.FSApi.PrepareParams)
(collect : AltCover.FSApi.CollectParams)
(force : bool) =
(force : DotNetTest.CLIArgs) =
#else
let ToTestArguments
(prepare : AltCover_Fake.DotNet.Testing.AltCover.PrepareParams)
(collect : AltCover_Fake.DotNet.Testing.AltCover.CollectParams)
(force : bool) =
(force : DotNetTest.CLIArgs) =
#endif
ToTestArgumentList prepare collect force |> Join
1 change: 1 addition & 0 deletions AltCover.FSApi/altcover.fsapi.core.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@

<ItemGroup>
<Compile Include="..\_Generated\AssemblyVersion.fs" Link="AssemblyVersion.fs" />
<Compile Include="CLIArgs.fs" />
<Compile Include="Definitions.fs" />
<Compile Include="Xml.fs" />
<Compile Include="Xhtml.fs" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@
<Compile Include="..\AltCover\Api.fs">
<Link>Api.fs</Link>
</Compile>
<Compile Include="..\AltCover.FSApi\CLIArgs.fs">
<Link>CLIArgs.fs</Link>
</Compile>
<Compile Include="..\AltCover.FSApi\Definitions.fs">
<Link>Definitions.fs</Link>
</Compile>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
<Compile Include="..\AltCover\Primitive.fs" Link="Primitive.fs" />
<Compile Include="..\AltCover\TypeSafe.fs" Link="TypeSafe.fs" />
<Compile Include="..\AltCover\Api.fs" Link="Api.fs" />
<Compile Include="..\AltCover.FSApi\CLIArgs.fs" Link="CLIArgs.fs" />
<Compile Include="..\AltCover.FSApi\Definitions.fs" Link="Definitions.fs" />
<Compile Include="..\AltCover.Fake\Fake.fs" Link="Fake.fs" />
</ItemGroup>
Expand Down
5 changes: 3 additions & 2 deletions AltCover.Fake/Fake.fs
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ namespace AltCover_Fake.DotNet
open System
open System.Reflection
open AltCover.Internals
open AltCover_Fake.DotNet.Testing
#endif

module DotNet =
Expand Down Expand Up @@ -110,11 +111,11 @@ module DotNet =
#if RUNNER
member self.WithParameters (prepare : PrepareParams)
(collect : CollectParams)
(force : bool) =
(force : DotNetTest.CLIArgs) =
#else
member self.WithParameters (prepare : AltCover_Fake.DotNet.Testing.AltCover.PrepareParams)
(collect : AltCover_Fake.DotNet.Testing.AltCover.CollectParams)
(force : bool) =
(force : DotNetTest.CLIArgs) =
#endif

DotNet.ToTestArguments prepare collect force |> self.ExtendCustomParams
Expand Down
86 changes: 43 additions & 43 deletions Build/rules-posh.xml
Original file line number Diff line number Diff line change
@@ -1,46 +1,46 @@
<gendarme>
<ruleset name="default">
<rules include="*"
exclude="AvoidAssemblyVersionMismatchRule"
from="Gendarme.Rules.BadPractice.dll" />
<rules include="*" from="Gendarme.Rules.Concurrency.dll" />
<rules include="*"
exclude="CheckParametersNullityInVisibleMethodsRule | EnsureLocalDisposalRule"
from="Gendarme.Rules.Correctness.dll" />
<rules include="*"
exclude="AvoidSmallNamespaceRule | PreferXmlAbstractionsRule"
from="Gendarme.Rules.Design.dll" />
<rules include="*"
from="Gendarme.Rules.Design.Generic.dll" />
<rules include="*"
from="Gendarme.Rules.Design.Linq.dll" />
<rules include="*"
<ruleset name="default">
<rules include="*"
exclude="AvoidAssemblyVersionMismatchRule"
from="Gendarme.Rules.BadPractice.dll" />
<rules include="*" from="Gendarme.Rules.Concurrency.dll" />
<rules include="*"
exclude="CheckParametersNullityInVisibleMethodsRule | EnsureLocalDisposalRule"
from="Gendarme.Rules.Correctness.dll" />
<rules include="*"
exclude="AvoidMultidimensionalIndexerRule | AvoidVisibleNestedTypesRule | AvoidSmallNamespaceRule | PreferXmlAbstractionsRule"
from="Gendarme.Rules.Design.dll" />
<rules include="*"
from="Gendarme.Rules.Design.Generic.dll" />
<rules include="*"
from="Gendarme.Rules.Design.Linq.dll" />
<rules include="*"
from="Gendarme.Rules.Exceptions.dll" />
<rules include="*" from="Gendarme.Rules.Interoperability.dll" />
<rules include="*" from="Gendarme.Rules.Interoperability.Com.dll" />
<rules include="*"
exclude="UseCorrectCasingRule | ParameterNamesShouldMatchOverriddenMethodRule"
from="Gendarme.Rules.Naming.dll" />
<rules include="*"
exclude="AvoidReturningArraysOnPropertiesRule | AvoidUnneededFieldInitializationRule "
from="Gendarme.Rules.Performance.dll" />
<rules include="*"
from="Gendarme.Rules.Portability.dll" />
<rules include="*" from="Gendarme.Rules.Security.dll" />
<rules include="*" from="Gendarme.Rules.Security.Cas.dll" />
<rules include="*"
exclude="MarkAllNonSerializableFieldsRule"
from="Gendarme.Rules.Serialization.dll" />
<rules include="*"
exclude="AvoidLargeClassesRule | AvoidCodeDuplicatedInSameClassRule | AvoidSwitchStatementsRule"
from="Gendarme.Rules.Smells.dll" />
<rules include="*" from="Gendarme.Rules.Ui.dll" />
<rules include="*"
exclude="AvoidUnnecessarySpecializationRule | VariableNamesShouldNotMatchFieldNamesRule"
from="Gendarme.Rules.Maintainability.dll" />
<rules include="*"
from="Gendarme.Rules.Gendarme.dll" />
<!-- Assembly not in nugget -->
<!-- rules include="*" from="Gendarme.Rules.Globalization.dll"/ -->
</ruleset>
<rules include="*" from="Gendarme.Rules.Interoperability.dll" />
<rules include="*" from="Gendarme.Rules.Interoperability.Com.dll" />
<rules include="*"
exclude="UseCorrectCasingRule | ParameterNamesShouldMatchOverriddenMethodRule"
from="Gendarme.Rules.Naming.dll" />
<rules include="*"
exclude="AvoidReturningArraysOnPropertiesRule | AvoidUnneededFieldInitializationRule "
from="Gendarme.Rules.Performance.dll" />
<rules include="*"
from="Gendarme.Rules.Portability.dll" />
<rules include="*" from="Gendarme.Rules.Security.dll" />
<rules include="*" from="Gendarme.Rules.Security.Cas.dll" />
<rules include="*"
exclude="MarkAllNonSerializableFieldsRule"
from="Gendarme.Rules.Serialization.dll" />
<rules include="*"
exclude="AvoidLargeClassesRule | AvoidCodeDuplicatedInSameClassRule | AvoidSwitchStatementsRule"
from="Gendarme.Rules.Smells.dll" />
<rules include="*" from="Gendarme.Rules.Ui.dll" />
<rules include="*"
exclude="AvoidUnnecessarySpecializationRule | VariableNamesShouldNotMatchFieldNamesRule"
from="Gendarme.Rules.Maintainability.dll" />
<rules include="*"
from="Gendarme.Rules.Gendarme.dll" />
<!-- Assembly not in nugget -->
<!-- rules include="*" from="Gendarme.Rules.Globalization.dll"/ -->
</ruleset>
</gendarme>
1 change: 1 addition & 0 deletions Build/setup.fsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ nuget YamlDotNet >= 5.2.1 //"
#load "../AltCover/Primitive.fs"
#load "../AltCover/TypeSafe.fs"
#load "../AltCover/Api.fs"
#load "../AltCover.FSApi/CLIArgs.fs"
#load "../AltCover.FSApi/Definitions.fs"
#load "../AltCover.Fake/Fake.fs"
#load "actions.fsx"
Expand Down
Loading

0 comments on commit 070fb87

Please sign in to comment.