Skip to content

Commit 0bef140

Browse files
authored
Skip change streams test case on 4.3+ (#400)
1 parent fd30343 commit 0bef140

File tree

3 files changed

+38
-2
lines changed

3 files changed

+38
-2
lines changed

Tests/MongoSwiftSyncTests/SyncChangeStreamTests.swift

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,11 +269,17 @@ final class ChangeStreamSpecTests: MongoSwiftTestCase, FailPointConfigured {
269269
}
270270

271271
guard version >= test.minServerVersion else {
272-
print("Skipping tests case \"\(test.description)\": minimum required server " +
272+
print("Skipping test case \"\(test.description)\": minimum required server " +
273273
"version \(test.minServerVersion) not met.")
274274
continue
275275
}
276276

277+
guard !(test.description == "Change Stream should error when _id is projected out" &&
278+
version >= ServerVersion(major: 4, minor: 3, patch: 3)) else {
279+
print("Skipping test case \"\(test.description)\"; see SWIFT-722")
280+
continue
281+
}
282+
277283
print("Executing test: \(test.description)")
278284

279285
try db1.drop()
@@ -344,6 +350,11 @@ final class SyncChangeStreamTests: MongoSwiftTestCase {
344350
return
345351
}
346352

353+
guard try MongoClient.makeTestClient().serverVersion() < ServerVersion(major: 4, minor: 3, patch: 3) else {
354+
print("Skipping test; see SWIFT-722")
355+
return
356+
}
357+
347358
try withTestNamespace { client, _, coll in
348359
let changeStream = try coll.watch([["$project": ["_id": false]]])
349360
for x in 0..<5 {
@@ -524,9 +535,15 @@ final class SyncChangeStreamTests: MongoSwiftTestCase {
524535
}
525536
expect(killedAggs.count).to(equal(1))
526537

538+
let version = try MongoClient.makeTestClient().serverVersion()
527539
// the next set of assertions relies on the presence of the NonResumableChangeStreamError label, which was
528540
// introduced in 4.1.1 via SERVER-40446.
529-
guard try MongoClient.makeTestClient().serverVersion() >= ServerVersion(major: 4, minor: 1, patch: 1) else {
541+
guard version >= ServerVersion(major: 4, minor: 1, patch: 1) else {
542+
return
543+
}
544+
545+
// skip on 4.3.3+ due to removal of NonResumableChangeStreamError label; see SWIFT-722
546+
guard version < ServerVersion(major: 4, minor: 3, patch: 3) else {
530547
return
531548
}
532549

Tests/MongoSwiftTests/AsyncTestUtils.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,20 @@ extension MongoClient {
2828
XCTFail("Error closing test client: \(error)")
2929
}
3030
}
31+
32+
internal func serverVersion() -> EventLoopFuture<ServerVersion> {
33+
return self.db("admin").runCommand(
34+
["buildInfo": 1],
35+
options: RunCommandOptions(
36+
readPreference: ReadPreference(.primary)
37+
)
38+
).flatMapThrowing { reply in
39+
guard let versionString = reply["version"]?.stringValue else {
40+
throw TestError(message: " reply missing version string: \(reply)")
41+
}
42+
return try ServerVersion(versionString)
43+
}
44+
}
3145
}
3246

3347
extension MongoDatabase {

Tests/MongoSwiftTests/ChangeStreamTests.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ final class ChangeStreamTests: MongoSwiftTestCase {
4848
}
4949

5050
try self.withTestClient { client in
51+
guard try client.serverVersion().wait() < ServerVersion(major: 4, minor: 3, patch: 3) else {
52+
print("Skipping test; see SWIFT-722")
53+
return
54+
}
55+
5156
let db = client.db(type(of: self).testDatabase)
5257
try? db.collection(self.getCollectionName()).drop().wait()
5358
let coll = try db.createCollection(self.getCollectionName()).wait()

0 commit comments

Comments
 (0)