Skip to content

Commit 8ed2769

Browse files
committed
Update tests to avoid pre-10.14 objc runtime bug
1 parent 0edbc8c commit 8ed2769

File tree

2 files changed

+88
-59
lines changed

2 files changed

+88
-59
lines changed

validation-test/stdlib/Collection/FlattenCollection.swift.gyb

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -52,29 +52,32 @@ tests.add${traversal}${kind}Tests(
5252
)
5353
% end
5454

55+
var rdar45956357: Bool
5556
// Test collection instances and iterators.
5657
% for (traversal, kind) in variations:
57-
tests.test("FlattenCollection instances (${traversal}${kind})") {
58-
do {
59-
let expected : [String] = []
60-
let base: [[String]] = [[], [], []]
61-
check${traversal}${kind}(
62-
expected,
63-
Minimal${traversal}${kind}(elements: base).joined(),
64-
sameValue: { $0 == $1 })
65-
}
66-
do {
67-
let expected = ["apple", "orange", "banana", "grapefruit", "lychee"]
68-
let base = [["apple", "orange"], ["banana", "grapefruit"], ["lychee"]]
69-
let flattened = Minimal${traversal}${kind}(elements: base).joined()
70-
check${traversal}${kind}(
71-
expected,
72-
Minimal${traversal}${kind}(elements: base).joined(),
73-
sameValue: { $0 == $1 })
74-
checkSequence(
75-
expected,
76-
flattened.makeIterator(),
77-
sameValue: { $0 == $1 })
58+
if #available(macOS 10.14, iOS 12.0, watchOS 5.0, tvOS 12.0, *) {
59+
tests.test("FlattenCollection instances (${traversal}${kind})") {
60+
do {
61+
let expected : [String] = []
62+
let base: [[String]] = [[], [], []]
63+
check${traversal}${kind}(
64+
expected,
65+
Minimal${traversal}${kind}(elements: base).joined(),
66+
sameValue: { $0 == $1 })
67+
}
68+
do {
69+
let expected = ["apple", "orange", "banana", "grapefruit", "lychee"]
70+
let base = [["apple", "orange"], ["banana", "grapefruit"], ["lychee"]]
71+
let flattened = Minimal${traversal}${kind}(elements: base).joined()
72+
check${traversal}${kind}(
73+
expected,
74+
Minimal${traversal}${kind}(elements: base).joined(),
75+
sameValue: { $0 == $1 })
76+
checkSequence(
77+
expected,
78+
flattened.makeIterator(),
79+
sameValue: { $0 == $1 })
80+
}
7881
}
7982
}
8083
% end

validation-test/stdlib/Lazy.swift.gyb

Lines changed: 64 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1250,32 +1250,37 @@ do {
12501250

12511251
% for Traversal in 'Forward', 'Bidirectional':
12521252
% TraversalCollection = collectionForTraversal(Traversal)
1253-
tests.test("FlattenCollection/${Traversal}/\(data)") {
1254-
let base = Minimal${TraversalCollection}(
1255-
elements: data.map { Minimal${TraversalCollection}(elements: $0) })
12561253

1257-
let flattened = base.joined()
1258-
check${Traversal}Collection(expected, flattened, resiliencyChecks: .none)
1259-
1260-
// Checking that flatten doesn't introduce laziness
1261-
var calls = 0
1262-
_ = flattened.map { _ in calls += 1 }
1263-
expectLE(
1264-
expected.count, calls,
1265-
"unexpected laziness in \(type(of: flattened))")
1266-
}
1267-
1268-
tests.test("FlattenCollection/${Traversal}/Lazy\(data)") {
1269-
// Checking that flatten doesn't remove laziness
1270-
let base = Minimal${TraversalCollection}(
1271-
elements: data.map { Minimal${TraversalCollection}(elements: $0) }
1272-
).lazy.map { $0 }
1273-
1274-
let flattened = base.joined()
1275-
1276-
var calls = 0
1277-
_ = flattened.map { _ in calls += 1 }
1278-
expectEqual(0, calls, "unexpected eagerness in \(type(of: flattened))")
1254+
// re-enable commented out test case below as well when this is fixed
1255+
// (find FIXME: rdar45956357)
1256+
if #available(macOS 10.14, iOS 12.0, watchOS 5.0, tvOS 12.0, *) {
1257+
tests.test("FlattenCollection/${Traversal}/\(data)") {
1258+
let base = Minimal${TraversalCollection}(
1259+
elements: data.map { Minimal${TraversalCollection}(elements: $0) })
1260+
1261+
let flattened = base.joined()
1262+
check${Traversal}Collection(expected, flattened, resiliencyChecks: .none)
1263+
1264+
// Checking that flatten doesn't introduce laziness
1265+
var calls = 0
1266+
_ = flattened.map { _ in calls += 1 }
1267+
expectLE(
1268+
expected.count, calls,
1269+
"unexpected laziness in \(type(of: flattened))")
1270+
}
1271+
1272+
tests.test("FlattenCollection/${Traversal}/Lazy\(data)") {
1273+
// Checking that flatten doesn't remove laziness
1274+
let base = Minimal${TraversalCollection}(
1275+
elements: data.map { Minimal${TraversalCollection}(elements: $0) }
1276+
).lazy.map { $0 }
1277+
1278+
let flattened = base.joined()
1279+
1280+
var calls = 0
1281+
_ = flattened.map { _ in calls += 1 }
1282+
expectEqual(0, calls, "unexpected eagerness in \(type(of: flattened))")
1283+
}
12791284
}
12801285
% end
12811286
}
@@ -1288,19 +1293,40 @@ struct TryFlattenIndex<C: Collection> where C.Element: Collection {
12881293

12891294
//===--- LazyPrefixWhile --------------------------------------------------===//
12901295

1291-
let prefixDropWhileTests: [(data: [Int], value: Int, pivot: Int)] = [
1292-
([], 0, 0),
1293-
([0], 0, 0),
1294-
([0], 99, 1),
1295-
([0, 10], 0, 0),
1296-
([0, 10], 10, 1),
1297-
([0, 10], 99, 2),
1298-
([0, 10, 20, 30, 40], 0, 0),
1299-
([0, 10, 20, 30, 40], 10, 1),
1300-
([0, 10, 20, 30, 40], 20, 2),
1301-
([0, 10, 20, 30, 40], 30, 3),
1302-
([0, 10, 20, 30, 40], 40, 4),
1303-
([0, 10, 20, 30, 40], 99, 5) ]
1296+
let prefixDropWhileTests: [(data: [Int], value: Int, pivot: Int)]
1297+
1298+
// FIXME: rdar45956357
1299+
if #available(macOS 10.14, iOS 12.0, watchOS 5.0, tvOS 12.0, *) {
1300+
prefixDropWhileTests = [
1301+
([], 0, 0),
1302+
([0], 0, 0),
1303+
([0], 99, 1),
1304+
([0, 10], 0, 0),
1305+
([0, 10], 10, 1),
1306+
([0, 10], 99, 2),
1307+
([0, 10, 20, 30, 40], 0, 0),
1308+
([0, 10, 20, 30, 40], 10, 1),
1309+
([0, 10, 20, 30, 40], 20, 2),
1310+
([0, 10, 20, 30, 40], 30, 3),
1311+
([0, 10, 20, 30, 40], 40, 4),
1312+
([0, 10, 20, 30, 40], 99, 5)
1313+
]
1314+
} else {
1315+
prefixDropWhileTests = [
1316+
([], 0, 0),
1317+
([0], 0, 0),
1318+
// ([0], 99, 1),
1319+
([0, 10], 0, 0),
1320+
// ([0, 10], 10, 1),
1321+
// ([0, 10], 99, 2),
1322+
// ([0, 10, 20, 30, 40], 0, 0),
1323+
// ([0, 10, 20, 30, 40], 10, 1),
1324+
// ([0, 10, 20, 30, 40], 20, 2),
1325+
// ([0, 10, 20, 30, 40], 30, 3),
1326+
// ([0, 10, 20, 30, 40], 40, 4),
1327+
// ([0, 10, 20, 30, 40], 99, 5)
1328+
]
1329+
}
13041330

13051331
% for Kind in 'Sequence', 'Forward', 'Bidirectional':
13061332
% Self = 'Sequence' if Kind == 'Sequence' else collectionForTraversal(Kind)

0 commit comments

Comments
 (0)