Skip to content

Commit 827b743

Browse files
committed
Correct NSFileManager tests to not rely on ordered directory
1 parent 3c25860 commit 827b743

File tree

1 file changed

+37
-32
lines changed

1 file changed

+37
-32
lines changed

TestFoundation/TestNSFileManager.swift

Lines changed: 37 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,13 @@ class TestNSFileManger : XCTestCase {
124124
}
125125

126126
if let e = NSFileManager.defaultManager().enumeratorAtURL(NSURL(fileURLWithPath: path), includingPropertiesForKeys: nil, options: [], errorHandler: nil) {
127-
XCTAssertEqual((e.nextObject() as? NSURL)?.path, itemPath)
128-
XCTAssertEqual(e.level, 1)
129-
XCTAssertNil(e.nextObject())
130-
XCTAssertEqual(e.level, 0)
131-
XCTAssertNil(e.nextObject())
127+
var foundItems = [String:Int]()
128+
while let item = e.nextObject() as? NSURL {
129+
if let p = item.path {
130+
foundItems[p] = e.level
131+
}
132+
}
133+
XCTAssertEqual(foundItems[itemPath], 1)
132134
} else {
133135
XCTFail()
134136
}
@@ -143,40 +145,41 @@ class TestNSFileManger : XCTestCase {
143145
}
144146

145147
if let e = NSFileManager.defaultManager().enumeratorAtURL(NSURL(fileURLWithPath: path), includingPropertiesForKeys: nil, options: [], errorHandler: nil) {
146-
XCTAssertEqual((e.nextObject() as? NSURL)?.path, itemPath)
147-
XCTAssertEqual(e.level, 1)
148-
XCTAssertEqual((e.nextObject() as? NSURL)?.path, subDirPath)
149-
XCTAssertEqual(e.level, 1)
150-
XCTAssertEqual((e.nextObject() as? NSURL)?.path, subDirItemPath)
151-
XCTAssertEqual(e.level, 2)
152-
XCTAssertNil(e.nextObject())
153-
XCTAssertEqual(e.level, 0)
154-
XCTAssertNil(e.nextObject())
148+
var foundItems = [String:Int]()
149+
while let item = e.nextObject() as? NSURL {
150+
if let p = item.path {
151+
foundItems[p] = e.level
152+
}
153+
}
154+
XCTAssertEqual(foundItems[itemPath], 1)
155+
XCTAssertEqual(foundItems[subDirPath], 1)
156+
XCTAssertEqual(foundItems[subDirItemPath], 2)
155157
} else {
156158
XCTFail()
157159
}
158160

159161
if let e = NSFileManager.defaultManager().enumeratorAtURL(NSURL(fileURLWithPath: path), includingPropertiesForKeys: nil, options: [.SkipsSubdirectoryDescendants], errorHandler: nil) {
160-
XCTAssertEqual((e.nextObject() as? NSURL)?.path, itemPath)
161-
XCTAssertEqual(e.level, 1)
162-
XCTAssertEqual((e.nextObject() as? NSURL)?.path, subDirPath)
163-
XCTAssertEqual(e.level, 1)
164-
XCTAssertNil(e.nextObject())
165-
XCTAssertEqual(e.level, 0)
166-
XCTAssertNil(e.nextObject())
162+
var foundItems = [String:Int]()
163+
while let item = e.nextObject() as? NSURL {
164+
if let p = item.path {
165+
foundItems[p] = e.level
166+
}
167+
}
168+
XCTAssertEqual(foundItems[itemPath], 1)
169+
XCTAssertEqual(foundItems[subDirPath], 1)
167170
} else {
168171
XCTFail()
169172
}
170173

171174
if let e = NSFileManager.defaultManager().enumeratorAtURL(NSURL(fileURLWithPath: path), includingPropertiesForKeys: nil, options: [], errorHandler: nil) {
172-
XCTAssertEqual((e.nextObject() as? NSURL)?.path, itemPath)
173-
XCTAssertEqual(e.level, 1)
174-
XCTAssertEqual((e.nextObject() as? NSURL)?.path, subDirPath)
175-
XCTAssertEqual(e.level, 1)
176-
e.skipDescendants()
177-
XCTAssertNil(e.nextObject())
178-
XCTAssertEqual(e.level, 0)
179-
XCTAssertNil(e.nextObject())
175+
var foundItems = [String:Int]()
176+
while let item = e.nextObject() as? NSURL {
177+
if let p = item.path {
178+
foundItems[p] = e.level
179+
}
180+
}
181+
XCTAssertEqual(foundItems[itemPath], 1)
182+
XCTAssertEqual(foundItems[subDirPath], 1)
180183
} else {
181184
XCTFail()
182185
}
@@ -194,10 +197,12 @@ class TestNSFileManger : XCTestCase {
194197
XCTAssertTrue(didGetError)
195198

196199
do {
197-
let contents = try NSFileManager.defaultManager().contentsOfDirectoryAtURL(NSURL(fileURLWithPath: path), includingPropertiesForKeys: nil, options: [])
200+
let contents = try NSFileManager.defaultManager().contentsOfDirectoryAtURL(NSURL(fileURLWithPath: path), includingPropertiesForKeys: nil, options: []).map {
201+
return $0.path!
202+
}
198203
XCTAssertEqual(contents.count, 2)
199-
XCTAssertEqual(contents[0].path, itemPath)
200-
XCTAssertEqual(contents[1].path, subDirPath)
204+
XCTAssertTrue(contents.contains(itemPath))
205+
XCTAssertTrue(contents.contains(subDirPath))
201206
} catch {
202207
XCTFail()
203208
}

0 commit comments

Comments
 (0)