@@ -133,8 +133,15 @@ module Execution =
133133 let config = { ExpectoConfig.defaultConfig with printer = printAdapter }
134134 Expecto.Logging.Global.initialise <| { Expecto.Logging.Global.defaultConfig with getLogger = getLogger }
135135
136- // todo: filter test
137- let tests = ExpectoTest.test test
136+ let testNames =
137+ cases
138+ |> Seq.map ( fun c -> c.DisplayName)
139+ |> Set.ofSeq
140+
141+ let tests =
142+ ExpectoTest.test test
143+ |> Expecto.Test.filter ( fun name -> Seq.contains name testNames)
144+
138145 let duplicates = duplicatedNames tests
139146 match duplicates with
140147 | [] -> Expecto.Impl.runEval config tests |> Async.Ignore
@@ -152,9 +159,30 @@ module Execution =
152159 |> List.ofSeq
153160 runMatchingTests logger test cases frameworkHandle
154161
162+ let private runSpecifiedTestsForSource logger frameworkHandle source ( tests : TestCase seq ) =
163+ let nameSet = tests |> Seq.map ( fun t -> t.FullyQualifiedName) |> Set.ofSeq
164+ match Discovery.discoverTestForSource logger source with
165+ | None -> async.Zero ()
166+ | Some test ->
167+ let cases =
168+ Discovery.getTestCasesFromTest logger test
169+ |> Seq.map ExpectoTestCase.case
170+ |> Seq.filter ( fun c -> Set.contains c.FullyQualifiedName nameSet)
171+ |> List.ofSeq
172+
173+ runMatchingTests logger test cases frameworkHandle
174+
155175 let runTests logger frameworkHandle sources =
156176 async {
157177 for source in sources do
158178 do ! runTestsForSource logger frameworkHandle source
159179 }
180+
181+ let runSpecifiedTests logger frameworkHandle ( tests : TestCase seq ) =
182+ let bySource = tests |> Seq.groupBy ( fun t -> t.Source)
183+
184+ async {
185+ for source, tests in bySource do
186+ do ! runSpecifiedTestsForSource logger frameworkHandle source tests
187+ }
160188
0 commit comments