Skip to content

Commit a7e2bef

Browse files
authored
Don't implicitly infer test context. (#1686)
1 parent 5db8701 commit a7e2bef

File tree

2 files changed

+64
-60
lines changed

2 files changed

+64
-60
lines changed

Sources/Dependencies/DependencyValues.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -298,8 +298,6 @@ struct CurrentDependency {
298298
private let defaultContext: DependencyContext = {
299299
if ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1" {
300300
return .preview
301-
} else if _XCTIsTesting {
302-
return .test
303301
} else {
304302
return .live
305303
}

Tests/DependenciesTests/DependencyValuesTests.swift

Lines changed: 64 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -66,33 +66,36 @@ final class DependencyValuesTests: XCTestCase {
6666
}
6767

6868
func testDependencyDefaultIsReused() {
69-
DependencyValues.withValue(\.self, .init()) {
70-
@Dependency(\.reuseClient) var reuseClient: ReuseClient
69+
DependencyValues.withValue(\.self, .init()) {
70+
DependencyValues.withValue(\.context, .test) {
71+
@Dependency(\.reuseClient) var reuseClient: ReuseClient
7172

72-
XCTAssertEqual(reuseClient.count(), 0)
73-
reuseClient.setCount(42)
74-
XCTAssertEqual(reuseClient.count(), 42)
73+
XCTAssertEqual(reuseClient.count(), 0)
74+
reuseClient.setCount(42)
75+
XCTAssertEqual(reuseClient.count(), 42)
76+
}
7577
}
7678
}
7779

7880
func testDependencyDefaultIsReused_SegmentedByContext() {
7981
DependencyValues.withValue(\.self, .init()) {
80-
@Dependency(\.reuseClient) var reuseClient: ReuseClient
81-
82-
XCTAssertEqual(reuseClient.count(), 0)
83-
reuseClient.setCount(42)
84-
XCTAssertEqual(reuseClient.count(), 42)
82+
DependencyValues.withValue(\.context, .test) {
83+
@Dependency(\.reuseClient) var reuseClient: ReuseClient
8584

86-
DependencyValues.withValue(\.context, .preview) {
8785
XCTAssertEqual(reuseClient.count(), 0)
88-
reuseClient.setCount(1729)
89-
XCTAssertEqual(reuseClient.count(), 1729)
90-
}
86+
reuseClient.setCount(42)
87+
XCTAssertEqual(reuseClient.count(), 42)
9188

92-
XCTAssertEqual(reuseClient.count(), 42)
89+
DependencyValues.withValue(\.context, .preview) {
90+
XCTAssertEqual(reuseClient.count(), 0)
91+
reuseClient.setCount(1729)
92+
XCTAssertEqual(reuseClient.count(), 1729)
93+
}
9394

94-
DependencyValues.withValue(\.context, .live) {
95-
#if DEBUG
95+
XCTAssertEqual(reuseClient.count(), 42)
96+
97+
DependencyValues.withValue(\.context, .live) {
98+
#if DEBUG
9699
XCTExpectFailure {
97100
$0.compactDescription.contains(
98101
"""
@@ -101,17 +104,18 @@ final class DependencyValuesTests: XCTestCase {
101104
"""
102105
)
103106
}
104-
#endif
105-
XCTAssertEqual(reuseClient.count(), 0)
106-
reuseClient.setCount(-42)
107-
XCTAssertEqual(
108-
reuseClient.count(),
109-
0,
110-
"Don't cache dependency when using a test value in a live context"
111-
)
112-
}
107+
#endif
108+
XCTAssertEqual(reuseClient.count(), 0)
109+
reuseClient.setCount(-42)
110+
XCTAssertEqual(
111+
reuseClient.count(),
112+
0,
113+
"Don't cache dependency when using a test value in a live context"
114+
)
115+
}
113116

114-
XCTAssertEqual(reuseClient.count(), 42)
117+
XCTAssertEqual(reuseClient.count(), 42)
118+
}
115119
}
116120
}
117121

@@ -139,41 +143,43 @@ final class DependencyValuesTests: XCTestCase {
139143
}
140144

141145
func testBinding() {
142-
@Dependency(\.childDependencyEarlyBinding) var childDependencyEarlyBinding:
146+
DependencyValues.withValue(\.context, .test) {
147+
@Dependency(\.childDependencyEarlyBinding) var childDependencyEarlyBinding:
143148
ChildDependencyEarlyBinding
144-
@Dependency(\.childDependencyLateBinding) var childDependencyLateBinding:
149+
@Dependency(\.childDependencyLateBinding) var childDependencyLateBinding:
145150
ChildDependencyLateBinding
146-
147-
XCTAssertEqual(childDependencyEarlyBinding.fetch(), 42)
148-
XCTAssertEqual(childDependencyLateBinding.fetch(), 42)
149-
150-
DependencyValues.withValue(\.someDependency.fetch, { 1729 }) {
151-
XCTAssertEqual(childDependencyEarlyBinding.fetch(), 1729)
152-
XCTAssertEqual(childDependencyLateBinding.fetch(), 1729)
153-
}
154-
155-
var childDependencyEarlyBindingEscaped: ChildDependencyEarlyBinding!
156-
var childDependencyLateBindingEscaped: ChildDependencyLateBinding!
157-
158-
DependencyValues.withValue(\.someDependency.fetch, { 999 }) {
159-
@Dependency(\.childDependencyEarlyBinding) var childDependencyEarlyBinding2:
151+
152+
XCTAssertEqual(childDependencyEarlyBinding.fetch(), 42)
153+
XCTAssertEqual(childDependencyLateBinding.fetch(), 42)
154+
155+
DependencyValues.withValue(\.someDependency.fetch, { 1729 }) {
156+
XCTAssertEqual(childDependencyEarlyBinding.fetch(), 1729)
157+
XCTAssertEqual(childDependencyLateBinding.fetch(), 1729)
158+
}
159+
160+
var childDependencyEarlyBindingEscaped: ChildDependencyEarlyBinding!
161+
var childDependencyLateBindingEscaped: ChildDependencyLateBinding!
162+
163+
DependencyValues.withValue(\.someDependency.fetch, { 999 }) {
164+
@Dependency(\.childDependencyEarlyBinding) var childDependencyEarlyBinding2:
160165
ChildDependencyEarlyBinding
161-
@Dependency(\.childDependencyLateBinding) var childDependencyLateBinding2:
166+
@Dependency(\.childDependencyLateBinding) var childDependencyLateBinding2:
162167
ChildDependencyLateBinding
163-
164-
childDependencyEarlyBindingEscaped = childDependencyEarlyBinding
165-
childDependencyLateBindingEscaped = childDependencyLateBinding
166-
167-
XCTAssertEqual(childDependencyEarlyBinding2.fetch(), 999)
168-
XCTAssertEqual(childDependencyLateBinding2.fetch(), 999)
169-
}
170-
171-
XCTAssertEqual(childDependencyEarlyBindingEscaped.fetch(), 42)
172-
XCTAssertEqual(childDependencyLateBindingEscaped.fetch(), 42)
173-
174-
DependencyValues.withValue(\.someDependency.fetch, { 1_000 }) {
175-
XCTAssertEqual(childDependencyEarlyBindingEscaped.fetch(), 1_000)
176-
XCTAssertEqual(childDependencyLateBindingEscaped.fetch(), 1_000)
168+
169+
childDependencyEarlyBindingEscaped = childDependencyEarlyBinding
170+
childDependencyLateBindingEscaped = childDependencyLateBinding
171+
172+
XCTAssertEqual(childDependencyEarlyBinding2.fetch(), 999)
173+
XCTAssertEqual(childDependencyLateBinding2.fetch(), 999)
174+
}
175+
176+
XCTAssertEqual(childDependencyEarlyBindingEscaped.fetch(), 42)
177+
XCTAssertEqual(childDependencyLateBindingEscaped.fetch(), 42)
178+
179+
DependencyValues.withValue(\.someDependency.fetch, { 1_000 }) {
180+
XCTAssertEqual(childDependencyEarlyBindingEscaped.fetch(), 1_000)
181+
XCTAssertEqual(childDependencyLateBindingEscaped.fetch(), 1_000)
182+
}
177183
}
178184
}
179185

0 commit comments

Comments
 (0)