Skip to content

Commit 28f8271

Browse files
authored
Fix exclusive access problem in preview traits. (#306)
* Fix exclusive access problem in preview traits. * fix
1 parent a24a0f1 commit 28f8271

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

Sources/Dependencies/Traits/PreviewTrait.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@
4747
public static func dependencies(
4848
_ updateValuesForPreview: (inout DependencyValues) -> Void
4949
) -> PreviewTrait {
50-
updateValuesForPreview(&previewValues)
50+
var copy = previewValues
51+
defer { previewValues = copy }
52+
updateValuesForPreview(&copy)
5153
return PreviewTrait()
5254
}
5355
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#if canImport(Testing) && (os(iOS) || os(macOS) || os(tvOS) || os(watchOS))
2+
import Dependencies
3+
import Testing
4+
import SwiftUI
5+
6+
@Suite
7+
@MainActor
8+
struct PreviewTraitsTests {
9+
@Test
10+
@available(iOS 18, macOS 15, tvOS 18, watchOS 11, visionOS 2, *)
11+
func dependency() {
12+
_ = PreviewTrait.dependency(\.date.now, Date(timeIntervalSince1970: 1_234_567_890))
13+
withDependencies {
14+
$0.context = .preview
15+
} operation: {
16+
@Dependency(\.date.now) var now
17+
#expect(now == Date(timeIntervalSince1970: 1_234_567_890))
18+
}
19+
}
20+
}
21+
#endif

0 commit comments

Comments
 (0)