mirror of https://github.com/cirruslabs/tart.git
35 lines
948 B
Swift
35 lines
948 B
Swift
import XCTest
|
|
@testable import tart
|
|
|
|
final class FileLockTests: XCTestCase {
|
|
func testSimple() throws {
|
|
// Create a temporary file that will be used as a lock
|
|
let url = temporaryFile()
|
|
|
|
// Make sure this file can be locked and unlocked
|
|
let lock = try FileLock(lockURL: url)
|
|
try lock.lock()
|
|
try lock.unlock()
|
|
}
|
|
|
|
func testDoubleLockResultsInError() throws {
|
|
// Create a temporary file that will be used as a lock
|
|
let url = temporaryFile()
|
|
|
|
// Create two locks on a same file and ensure one of them fails
|
|
let firstLock = try FileLock(lockURL: url)
|
|
try firstLock.lock()
|
|
|
|
let secondLock = try! FileLock(lockURL: url)
|
|
XCTAssertFalse(try secondLock.trylock())
|
|
}
|
|
|
|
private func temporaryFile() -> URL {
|
|
let url = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(UUID().uuidString)
|
|
|
|
FileManager.default.createFile(atPath: url.path, contents: nil)
|
|
|
|
return url
|
|
}
|
|
}
|