Skip to content

Refine makeTestFilter() further. #154

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Dec 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 3 additions & 22 deletions Sources/Testing/Running/Configuration.swift
Original file line number Diff line number Diff line change
Expand Up @@ -177,29 +177,10 @@ public struct Configuration: Sendable {
/// - Parameters:
/// - selection: A set of test IDs to be filtered.
///
/// By default, all tests are run and no filter is set.
/// - Returns: A test filter that filters tests to those specified by
/// `selection`.
@_spi(ExperimentalTestRunning)
public func makeTestFilter(matching selection: some Collection<Test.ID>) -> Configuration.TestFilter {
let selection = Test.ID.Selection(testIDs: selection)
return makeTestFilter(matching: selection, includeHiddenTests: false)
return selection.contains
}

/// Make a test filter that filters tests to those specified by a set of test
/// IDs, optionally including or excluding hidden tests.
///
/// - Parameters:
/// - selection: A selection of test IDs to be filtered.
/// - includeHiddenTests: If false, a test annotated with the `.hidden`
/// trait will not be included, even if its ID is present in `selection`.
///
/// By default, all tests are run and no filter is set.
func makeTestFilter(matching selection: Test.ID.Selection, includeHiddenTests: Bool) -> Configuration.TestFilter {
if includeHiddenTests {
return selection.contains
} else {
return { test in
!test.isHidden && selection.contains(test)
}
}
}

16 changes: 8 additions & 8 deletions Tests/TestingTests/PlanTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ struct PlanTests {
testB,
]

let selection = Test.ID.Selection(testIDs: [innerTestType.id])
let selection = [innerTestType.id]
var configuration = Configuration()
configuration.uncheckedTestFilter = makeTestFilter(matching: selection, includeHiddenTests: true)
configuration.uncheckedTestFilter = makeTestFilter(matching: selection)

let plan = await Runner.Plan(tests: tests, configuration: configuration)
#expect(plan.steps.contains(where: { $0.test == outerTestType }))
Expand All @@ -52,8 +52,8 @@ struct PlanTests {
]

var configuration = Configuration()
let selection = Test.ID.Selection(testIDs: [innerTestType.id, outerTestType.id])
configuration.uncheckedTestFilter = makeTestFilter(matching: selection, includeHiddenTests: true)
let selection = [innerTestType.id, outerTestType.id]
configuration.uncheckedTestFilter = makeTestFilter(matching: selection)

let plan = await Runner.Plan(tests: tests, configuration: configuration)
let planTests = plan.steps.map(\.test)
Expand All @@ -72,8 +72,8 @@ struct PlanTests {
let tests = [outerTestType, deeplyNestedTest]

var configuration = Configuration()
let selection = Test.ID.Selection(testIDs: [outerTestType.id, deeplyNestedTest.id])
configuration.uncheckedTestFilter = makeTestFilter(matching: selection, includeHiddenTests: true)
let selection = [outerTestType.id, deeplyNestedTest.id]
configuration.uncheckedTestFilter = makeTestFilter(matching: selection)

let plan = await Runner.Plan(tests: tests, configuration: configuration)

Expand All @@ -91,8 +91,8 @@ struct PlanTests {
let tests = [testSuiteA, testSuiteB, testSuiteC, testFuncX]

var configuration = Configuration()
let selection = Test.ID.Selection(testIDs: [testSuiteA.id])
configuration.uncheckedTestFilter = makeTestFilter(matching: selection, includeHiddenTests: true)
let selection = [testSuiteA.id]
configuration.uncheckedTestFilter = makeTestFilter(matching: selection)

let plan = await Runner.Plan(tests: tests, configuration: configuration)
let testFuncXWithTraits = try #require(plan.steps.map(\.test).first { $0.name == "x()" })
Expand Down
2 changes: 1 addition & 1 deletion Tests/TestingTests/Runner.Plan.SnapshotTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ struct Runner_Plan_SnapshotTests {
let suite = try #require(await test(for: Runner_Plan_SnapshotFixtures.self))

var configuration = Configuration()
configuration.uncheckedTestFilter = makeTestFilter(matching: .init(testIDs: [suite.id]), includeHiddenTests: true)
configuration.uncheckedTestFilter = makeTestFilter(matching: [suite.id])

let plan = await Runner.Plan(configuration: configuration)
let snapshot = Runner.Plan.Snapshot(snapshotting: plan)
Expand Down
9 changes: 4 additions & 5 deletions Tests/TestingTests/RunnerTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -250,8 +250,8 @@ final class RunnerTests: XCTestCase {
let testFunc = try #require(await testFunction(named: "duelingConditions()", in: NeverRunTests.self))

var configuration = Configuration()
let selection = Test.ID.Selection(testIDs: [testSuite.id])
configuration.uncheckedTestFilter = makeTestFilter(matching: selection, includeHiddenTests: true)
let selection = [testSuite.id]
configuration.uncheckedTestFilter = makeTestFilter(matching: selection)

let runner = await Runner(testing: [
testSuite,
Expand Down Expand Up @@ -301,8 +301,7 @@ final class RunnerTests: XCTestCase {
XCTAssertFalse(selectedTestIDs.isEmpty)

var configuration = Configuration()
let selection = Test.ID.Selection(testIDs: selectedTestIDs)
configuration.uncheckedTestFilter = makeTestFilter(matching: selection, includeHiddenTests: true)
configuration.uncheckedTestFilter = makeTestFilter(matching: selectedTestIDs)

let runner = await Runner(configuration: configuration)
let plan = runner.plan
Expand All @@ -326,7 +325,7 @@ final class RunnerTests: XCTestCase {
]

var configuration1 = Configuration()
configuration1.testFilter = makeTestFilter(matching: .init(testIDs: selectedTestIDs), includeHiddenTests: false)
configuration1.testFilter = makeTestFilter(matching: selectedTestIDs)

var configuration2 = Configuration()
configuration2.testFilter = makeTestFilter(matching: selectedTestIDs)
Expand Down
12 changes: 6 additions & 6 deletions Tests/TestingTests/TestSupport/TestingAdditions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@ func runTest(for containingType: Any.Type, configuration: Configuration = .init(
/// If no test is found representing `containingType`, nothing is run.
func runTestFunction(named name: String, in containingType: Any.Type, configuration: Configuration = .init()) async {
var configuration = configuration
let selection = Test.ID.Selection(testIDs: [Test.ID(type: containingType).child(named: name)])
configuration.uncheckedTestFilter = makeTestFilter(matching: selection, includeHiddenTests: true)
let selection = [Test.ID(type: containingType).child(named: name)]
configuration.uncheckedTestFilter = makeTestFilter(matching: selection)

let runner = await Runner(configuration: configuration)
await runner.run()
Expand All @@ -91,8 +91,8 @@ extension Runner {
let moduleName = String(fileID[..<fileID.lastIndex(of: "/")!])

var configuration = configuration
let selection = Test.ID.Selection(testIDs: [Test.ID(moduleName: moduleName, nameComponents: [testName], sourceLocation: nil)])
configuration.uncheckedTestFilter = makeTestFilter(matching: selection, includeHiddenTests: true)
let selection = [Test.ID(moduleName: moduleName, nameComponents: [testName], sourceLocation: nil)]
configuration.uncheckedTestFilter = makeTestFilter(matching: selection)

await self.init(configuration: configuration)
}
Expand All @@ -106,8 +106,8 @@ extension Runner.Plan {
/// - configuration: The configuration to use for planning.
init(selecting containingType: Any.Type, configuration: Configuration = .init()) async {
var configuration = configuration
let selection = Test.ID.Selection(testIDs: [Test.ID(type: containingType)])
configuration.uncheckedTestFilter = makeTestFilter(matching: selection, includeHiddenTests: true)
let selection = [Test.ID(type: containingType)]
configuration.uncheckedTestFilter = makeTestFilter(matching: selection)

await self.init(configuration: configuration)
}
Expand Down