Fix: Add .serialized to test suites that mutate EnvironmentStorage.active

Minimize race window in FocusState requestFocus test by tightening the
EnvironmentStorage.active scope. Add .serialized to Button Tests and
StatusBarItems Modifier Tests suites.
This commit is contained in:
phranck
2026-01-31 00:47:24 +01:00
parent 1ab4b697a2
commit 5c4e81ea70
3 changed files with 16 additions and 10 deletions
+1 -1
View File
@@ -95,7 +95,7 @@ struct ButtonStyleTests {
// MARK: - Button Tests
@Suite("Button Tests")
@Suite("Button Tests", .serialized)
struct ButtonTests {
@Test("Button can be created with label and action")
+14 -8
View File
@@ -345,13 +345,14 @@ struct FocusStateTests {
EnvironmentStorage.active.reset()
}
@Test("FocusState requestFocus works")
@Test("FocusState requestFocus changes focus via environment manager")
func focusStateRequestFocus() {
// Set up a focus manager in the environment
// Set up a dedicated focus manager in the environment.
// Note: FocusState.requestFocus() reads from EnvironmentStorage.active,
// so we must set it and verify in one uninterrupted sequence.
let manager = FocusManager()
var environment = EnvironmentValues()
environment.focusManager = manager
EnvironmentStorage.active.environment = environment
let element1 = MockFocusable(id: "req-1")
let element2 = MockFocusable(id: "req-2")
@@ -359,13 +360,18 @@ struct FocusStateTests {
manager.register(element1)
manager.register(element2)
let state = FocusState(id: "req-2")
state.requestFocus()
// First element is focused after registration
#expect(manager.isFocused(id: "req-1"))
#expect(manager.isFocused(id: "req-2"))
// Cleanup
// Set environment, request focus, and verify — all within the
// EnvironmentStorage scope to minimize the race window with
// other test suites that also mutate EnvironmentStorage.active.
EnvironmentStorage.active.environment = environment
FocusState(id: "req-2").requestFocus()
let focusedReq2 = manager.isFocused(id: "req-2")
EnvironmentStorage.active.reset()
#expect(focusedReq2, "req-2 should be focused after requestFocus()")
}
}
+1 -1
View File
@@ -817,7 +817,7 @@ struct StatusBarItemBuilderTests {
// MARK: - StatusBarItems Modifier Tests
@Suite("StatusBarItems Modifier Tests")
@Suite("StatusBarItems Modifier Tests", .serialized)
struct StatusBarItemsModifierTests {
@Test("statusBarItems modifier sets items in environment")