Skip to content

Commit eb6d343

Browse files
authored
Fix TSAN errors in FIRListenerRegistrationTests (#5943)
1 parent f7ccdef commit eb6d343

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

Firestore/Example/Tests/Integration/API/FIRListenerRegistrationTests.mm

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,35 +90,45 @@ - (void)testCanBeRemovedIndependently {
9090
id<FIRListenerRegistration> one =
9191
[collectionRef addSnapshotListener:^(FIRQuerySnapshot *, NSError *_Nullable error) {
9292
XCTAssertNil(error);
93-
callbacksOne++;
93+
@synchronized(self) {
94+
callbacksOne++;
95+
}
9496
}];
9597

9698
id<FIRListenerRegistration> two =
9799
[collectionRef addSnapshotListener:^(FIRQuerySnapshot *, NSError *_Nullable error) {
98100
XCTAssertNil(error);
99-
callbacksTwo++;
101+
@synchronized(self) {
102+
callbacksTwo++;
103+
}
100104
}];
101105

102106
// Wait for initial events
103107
[self waitUntil:^BOOL {
104-
return callbacksOne == 1 && callbacksTwo == 1;
108+
@synchronized(self) {
109+
return callbacksOne == 1 && callbacksTwo == 1;
110+
}
105111
}];
106112

107113
// Trigger new events
108114
[self writeDocumentRef:docRef data:@{@"foo" : @"bar"}];
109115

110116
// Write events should have triggered
111-
XCTAssertEqual(2, callbacksOne);
112-
XCTAssertEqual(2, callbacksTwo);
117+
@synchronized(self) {
118+
XCTAssertEqual(2, callbacksOne);
119+
XCTAssertEqual(2, callbacksTwo);
120+
}
113121

114122
// Should leave "two" unaffected
115123
[one remove];
116124

117125
[self writeDocumentRef:docRef data:@{@"foo" : @"new-bar"}];
118126

119127
// Assert only events for "two" actually occurred
120-
XCTAssertEqual(2, callbacksOne);
121-
XCTAssertEqual(3, callbacksTwo);
128+
@synchronized(self) {
129+
XCTAssertEqual(2, callbacksOne);
130+
XCTAssertEqual(3, callbacksTwo);
131+
}
122132

123133
[self writeDocumentRef:docRef data:@{@"foo" : @"new-bar"}];
124134

0 commit comments

Comments
 (0)