Prepare for release (#27)

This commit is contained in:
Patrick Stevens
2024-06-05 23:21:45 +01:00
committed by GitHub
parent f6e907395c
commit 58b1dfedfd
17 changed files with 718 additions and 156 deletions

View File

@@ -10,68 +10,56 @@ module TestFilter =
let docExamples =
[
"(Name~MyClass) | (Name~MyClass2)",
FilterIntermediate.Or (
FilterIntermediate.Contains (FilterIntermediate.Name, FilterIntermediate.String "MyClass"),
FilterIntermediate.Contains (FilterIntermediate.Name, FilterIntermediate.String "MyClass2")
ParsedFilter.Or (
ParsedFilter.Contains (ParsedFilter.Name, ParsedFilter.String "MyClass"),
ParsedFilter.Contains (ParsedFilter.Name, ParsedFilter.String "MyClass2")
)
"xyz", FilterIntermediate.Contains (FilterIntermediate.FullyQualifiedName, FilterIntermediate.String "xyz")
"FullyQualifiedName~xyz",
FilterIntermediate.Contains (FilterIntermediate.FullyQualifiedName, FilterIntermediate.String "xyz")
"xyz", ParsedFilter.Contains (ParsedFilter.FullyQualifiedName, ParsedFilter.String "xyz")
"FullyQualifiedName~xyz", ParsedFilter.Contains (ParsedFilter.FullyQualifiedName, ParsedFilter.String "xyz")
"FullyQualifiedName!~IntegrationTests",
FilterIntermediate.Not (
FilterIntermediate.Contains (
FilterIntermediate.FullyQualifiedName,
FilterIntermediate.String "IntegrationTests"
)
ParsedFilter.Not (
ParsedFilter.Contains (ParsedFilter.FullyQualifiedName, ParsedFilter.String "IntegrationTests")
)
"FullyQualifiedName=MyNamespace.MyTestsClass<ParameterType1%2CParameterType2>.MyTestMethod",
FilterIntermediate.Equal (
FilterIntermediate.FullyQualifiedName,
FilterIntermediate.String "MyNamespace.MyTestsClass<ParameterType1%2CParameterType2>.MyTestMethod"
ParsedFilter.Equal (
ParsedFilter.FullyQualifiedName,
ParsedFilter.String "MyNamespace.MyTestsClass<ParameterType1%2CParameterType2>.MyTestMethod"
)
"Name~Method", FilterIntermediate.Contains (FilterIntermediate.Name, FilterIntermediate.String "Method")
"Name~Method", ParsedFilter.Contains (ParsedFilter.Name, ParsedFilter.String "Method")
"FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1",
FilterIntermediate.Not (
FilterIntermediate.Equal (
FilterIntermediate.FullyQualifiedName,
FilterIntermediate.String "MSTestNamespace.UnitTest1.TestMethod1"
ParsedFilter.Not (
ParsedFilter.Equal (
ParsedFilter.FullyQualifiedName,
ParsedFilter.String "MSTestNamespace.UnitTest1.TestMethod1"
)
)
"TestCategory=CategoryA",
FilterIntermediate.Equal (FilterIntermediate.TestCategory, FilterIntermediate.String "CategoryA")
"TestCategory=CategoryA", ParsedFilter.Equal (ParsedFilter.TestCategory, ParsedFilter.String "CategoryA")
"FullyQualifiedName~UnitTest1|TestCategory=CategoryA",
FilterIntermediate.Or (
FilterIntermediate.Contains (
FilterIntermediate.FullyQualifiedName,
FilterIntermediate.String "UnitTest1"
),
FilterIntermediate.Equal (FilterIntermediate.TestCategory, FilterIntermediate.String "CategoryA")
ParsedFilter.Or (
ParsedFilter.Contains (ParsedFilter.FullyQualifiedName, ParsedFilter.String "UnitTest1"),
ParsedFilter.Equal (ParsedFilter.TestCategory, ParsedFilter.String "CategoryA")
)
"FullyQualifiedName~UnitTest1&TestCategory=CategoryA",
FilterIntermediate.And (
FilterIntermediate.Contains (
FilterIntermediate.FullyQualifiedName,
FilterIntermediate.String "UnitTest1"
),
FilterIntermediate.Equal (FilterIntermediate.TestCategory, FilterIntermediate.String "CategoryA")
ParsedFilter.And (
ParsedFilter.Contains (ParsedFilter.FullyQualifiedName, ParsedFilter.String "UnitTest1"),
ParsedFilter.Equal (ParsedFilter.TestCategory, ParsedFilter.String "CategoryA")
)
"(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|TestCategory=1",
FilterIntermediate.Or (
FilterIntermediate.And (
FilterIntermediate.Contains (
FilterIntermediate.FullyQualifiedName,
FilterIntermediate.String "UnitTest1"
),
FilterIntermediate.Equal (FilterIntermediate.TestCategory, FilterIntermediate.String "CategoryA")
ParsedFilter.Or (
ParsedFilter.And (
ParsedFilter.Contains (ParsedFilter.FullyQualifiedName, ParsedFilter.String "UnitTest1"),
ParsedFilter.Equal (ParsedFilter.TestCategory, ParsedFilter.String "CategoryA")
),
FilterIntermediate.Equal (FilterIntermediate.TestCategory, FilterIntermediate.String "1")
ParsedFilter.Equal (ParsedFilter.TestCategory, ParsedFilter.String "1")
)
]
|> List.map TestCaseData
// sigh, NUnit doesn't want to run internal tests
[<TestCaseSource(nameof docExamples)>]
let ``Doc examples`` (example : string, expected : FilterIntermediate) =
FilterIntermediate.parse example |> shouldEqual expected
let ``Doc examples`` (example : string, expected : obj) =
let expected = expected |> unbox<ParsedFilter>
ParsedFilter.parse example |> shouldEqual expected
let docExamplesRefined =
[
@@ -112,4 +100,4 @@ module TestFilter =
[<TestCaseSource(nameof docExamplesRefined)>]
let ``Doc examples, refined`` (example : string, expected : Filter) =
FilterIntermediate.parse example |> Filter.make |> shouldEqual expected
Filter.parse example |> shouldEqual expected

View File

@@ -10,9 +10,11 @@
<ItemGroup>
<Compile Include="TestFilter.fs" />
<Compile Include="TestList.fs" />
<Compile Include="TestSurface.fs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="ApiSurface" Version="4.0.40" />
<PackageReference Include="FsCheck" Version="3.0.0-rc3" />
<PackageReference Include="FsUnit" Version="6.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />

View File

@@ -0,0 +1,25 @@
namespace TestRunner.Test
open NUnit.Framework
open ApiSurface
[<TestFixture>]
module TestSurface =
let assembly = typeof<TestRunner.Combinatorial>.Assembly
[<Test>]
let ``Ensure API surface has not been modified`` () = ApiSurface.assertIdentical assembly
[<Test ; Explicit>]
let ``Update API surface`` () =
ApiSurface.writeAssemblyBaseline assembly
[<Test>]
let ``Ensure public API is fully documented`` () =
DocCoverage.assertFullyDocumented assembly
[<Test>]
[<Explicit "Not yet published">]
let ``Ensure version is monotonic`` () =
MonotonicVersion.validate assembly "CHOOSE A NAME"